pip/src/pip/_internal/cli/command_context.py

30 lines
796 B
Python

# The following comment should be removed at some point in the future.
# mypy: disallow-untyped-defs=False
from contextlib import contextmanager
from pip._vendor.contextlib2 import ExitStack
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)