def global_tempdir_manager(): # type: () -> Iterator[None] global _tempdir_manager with ExitStack() as stack: old_tempdir_manager, _tempdir_manager = _tempdir_manager, stack try: yield finally: _tempdir_manager = old_tempdir_manager
def zip_dir(): def make_zip(path): # type: (Path) -> ZipFile buf = BytesIO() with ZipFile(buf, "w", allowZip64=True) as z: for dirpath, _, filenames in os.walk(path): for filename in filenames: file_path = os.path.join(path, dirpath, filename) # Zip files must always have / as path separator archive_path = os.path.relpath(file_path, path).replace( os.pathsep, "/") z.write(file_path, archive_path) return stack.enter_context(ZipFile(buf, "r", allowZip64=True)) stack = ExitStack() with stack: yield make_zip
class MockServer: def __init__(self, server): # type: (_MockServer) -> None self._server = server self._running = False self.context = ExitStack() @property def port(self): return self._server.port @property def host(self): return self._server.host def set_responses(self, responses): # type: (Iterable[Responder]) -> None assert not self._running, "responses cannot be set on running server" self._server.mock.side_effect = responses def start(self): # type: () -> None assert not self._running, "running server cannot be started" self.context.enter_context(server_running(self._server)) self.context.enter_context(self._set_running()) @contextmanager def _set_running(self): self._running = True try: yield finally: self._running = False def stop(self): # type: () -> None assert self._running, "idle server cannot be stopped" self.context.close() def get_requests(self): # type: () -> Dict[str, str] """Get environ for each received request. """ assert not self._running, "cannot get mock from running server" # Legacy: replace call[0][0] with call.args[0] # when pip drops support for python3.7 return [ call[0][0] for call in self._server.mock.call_args_list ]
class CommandContextMixIn(object): def __init__(self): super(CommandContextMixIn, self).__init__() self._in_main_context = False self._main_context = ExitStack() @contextmanager def main_context(self): assert not self._in_main_context self._in_main_context = True try: with self._main_context: yield finally: self._in_main_context = False def enter_context(self, context_provider): assert self._in_main_context return self._main_context.enter_context(context_provider)
class CommandContextMixIn: def __init__(self): # type: () -> None super().__init__() self._in_main_context = False self._main_context = ExitStack() @contextmanager def main_context(self): # type: () -> Iterator[None] assert not self._in_main_context self._in_main_context = True try: with self._main_context: yield finally: self._in_main_context = False def enter_context(self, context_provider): # type: (ContextManager[_T]) -> _T assert self._in_main_context return self._main_context.enter_context(context_provider)
def __init__(self, server): # type: (_MockServer) -> None self._server = server self._running = False self.context = ExitStack()
def __init__(self): # type: () -> None super(CommandContextMixIn, self).__init__() self._in_main_context = False self._main_context = ExitStack()
def __init__(self): # type: () -> None super().__init__() self._in_main_context = False self._main_context = ExitStack()