Type annotations for pip._internal.build_env
"""Build Environment used for isolation during sdist building
"""
-# The following comment should be removed at some point in the future.
-# mypy: strict-optional=False
-# mypy: disallow-untyped-defs=False
-
import logging
import os
import sys
@@ -22,7 +18,8 @@ from pip._internal.utils.temp_dir import TempDirectory, tempdir_kinds
from pip._internal.utils.typing import MYPY_CHECK_RUNNING
if MYPY_CHECK_RUNNING:
- from typing import Tuple, Set, Iterable, Optional, List
+ from types import TracebackType
+ from typing import Tuple, Set, Iterable, Optional, List, Type
from pip._internal.index.package_finder import PackageFinder
logger = logging.getLogger(__name__)
@@ -110,6 +107,7 @@ class BuildEnvironment(object):
).format(system_sites=system_sites, lib_dirs=self._lib_dirs))
def __enter__(self):
+ # type: () -> None
self._save_env = {
name: os.environ.get(name, None)
for name in ('PATH', 'PYTHONNOUSERSITE', 'PYTHONPATH')
@@ -128,7 +126,13 @@ class BuildEnvironment(object):
'PYTHONPATH': os.pathsep.join(pythonpath),
})
- def __exit__(self, exc_type, exc_val, exc_tb):
+ def __exit__(
+ self,
+ exc_type, # type: Optional[Type[BaseException]]
+ exc_val, # type: Optional[BaseException]
+ exc_tb # type: Optional[TracebackType]
+ ):
+ # type: (...) -> None
for varname, old_value in self._save_env.items():
if old_value is None:
os.environ.pop(varname, None)
@@ -195,6 +199,7 @@ class BuildEnvironment(object):
args.append('--pre')
args.append('--')
args.extend(requirements)
+ assert message
with open_spinner(message) as spinner:
call_subprocess(args, spinner=spinner)
@@ -204,16 +209,32 @@ class NoOpBuildEnvironment(BuildEnvironment):
"""
def __init__(self):
+ # type: () -> None
pass
def __enter__(self):
+ # type: () -> None
pass
- def __exit__(self, exc_type, exc_val, exc_tb):
+ def __exit__(
+ self,
+ exc_type, # type: Optional[Type[BaseException]]
+ exc_val, # type: Optional[BaseException]
+ exc_tb # type: Optional[TracebackType]
+ ):
+ # type: (...) -> None
pass
def cleanup(self):
+ # type: () -> None
pass
- def install_requirements(self, finder, requirements, prefix, message):
+ def install_requirements(
+ self,
+ finder, # type: PackageFinder
+ requirements, # type: Iterable[str]
+ prefix_as_string, # type: str
+ message # type: Optional[str]
+ ):
+ # type: (...) -> None
raise NotImplementedError()
