summaryrefslogtreecommitdiff
path: root/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_internal/build_env.py
diff options
context:
space:
mode:
authorShubham Saini <shubham6405@gmail.com>2018-12-11 10:01:23 +0000
committerShubham Saini <shubham6405@gmail.com>2018-12-11 10:01:23 +0000
commit68df54d6629ec019142eb149dd037774f2d11e7c (patch)
tree345bc22d46b4e01a4ba8303b94278952a4ed2b9e /venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_internal/build_env.py
First commit
Diffstat (limited to 'venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_internal/build_env.py')
-rw-r--r--venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_internal/build_env.py92
1 files changed, 92 insertions, 0 deletions
diff --git a/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_internal/build_env.py b/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_internal/build_env.py
new file mode 100644
index 0000000..8ad7735
--- /dev/null
+++ b/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_internal/build_env.py
@@ -0,0 +1,92 @@
1"""Build Environment used for isolation during sdist building
2"""
3
4import os
5from distutils.sysconfig import get_python_lib
6from sysconfig import get_paths
7
8from pip._internal.utils.temp_dir import TempDirectory
9
10
11class BuildEnvironment(object):
12 """Creates and manages an isolated environment to install build deps
13 """
14
15 def __init__(self, no_clean):
16 self._temp_dir = TempDirectory(kind="build-env")
17 self._no_clean = no_clean
18
19 @property
20 def path(self):
21 return self._temp_dir.path
22
23 def __enter__(self):
24 self._temp_dir.create()
25
26 self.save_path = os.environ.get('PATH', None)
27 self.save_pythonpath = os.environ.get('PYTHONPATH', None)
28 self.save_nousersite = os.environ.get('PYTHONNOUSERSITE', None)
29
30 install_scheme = 'nt' if (os.name == 'nt') else 'posix_prefix'
31 install_dirs = get_paths(install_scheme, vars={
32 'base': self.path,
33 'platbase': self.path,
34 })
35
36 scripts = install_dirs['scripts']
37 if self.save_path:
38 os.environ['PATH'] = scripts + os.pathsep + self.save_path
39 else:
40 os.environ['PATH'] = scripts + os.pathsep + os.defpath
41
42 # Note: prefer distutils' sysconfig to get the
43 # library paths so PyPy is correctly supported.
44 purelib = get_python_lib(plat_specific=0, prefix=self.path)
45 platlib = get_python_lib(plat_specific=1, prefix=self.path)
46 if purelib == platlib:
47 lib_dirs = purelib
48 else:
49 lib_dirs = purelib + os.pathsep + platlib
50 if self.save_pythonpath:
51 os.environ['PYTHONPATH'] = lib_dirs + os.pathsep + \
52 self.save_pythonpath
53 else:
54 os.environ['PYTHONPATH'] = lib_dirs
55
56 os.environ['PYTHONNOUSERSITE'] = '1'
57
58 return self.path
59
60 def __exit__(self, exc_type, exc_val, exc_tb):
61 if not self._no_clean:
62 self._temp_dir.cleanup()
63
64 def restore_var(varname, old_value):
65 if old_value is None:
66 os.environ.pop(varname, None)
67 else:
68 os.environ[varname] = old_value
69
70 restore_var('PATH', self.save_path)
71 restore_var('PYTHONPATH', self.save_pythonpath)
72 restore_var('PYTHONNOUSERSITE', self.save_nousersite)
73
74 def cleanup(self):
75 self._temp_dir.cleanup()
76
77
78class NoOpBuildEnvironment(BuildEnvironment):
79 """A no-op drop-in replacement for BuildEnvironment
80 """
81
82 def __init__(self, no_clean):
83 pass
84
85 def __enter__(self):
86 pass
87
88 def __exit__(self, exc_type, exc_val, exc_tb):
89 pass
90
91 def cleanup(self):
92 pass