mirror of
https://github.com/kennethreitz/pipenv.git
synced 2026-06-05 22:50:18 +00:00
Add pipenv vendor dirs to safety runtime paths
- Fix configparser import and add patch in dparse - Update patch on safety to add paths Signed-off-by: Dan Ryan <dan.ryan@canonical.com>
This commit is contained in:
@@ -1,10 +1,49 @@
|
||||
"""Allow safety to be executable through `python -m safety`."""
|
||||
from __future__ import absolute_import
|
||||
|
||||
import os
|
||||
import sys
|
||||
import sysconfig
|
||||
|
||||
|
||||
PATCHED_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
PIPENV_DIR = os.path.dirname(PATCHED_DIR)
|
||||
VENDORED_DIR = os.path.join("PIPENV_DIR", "vendor")
|
||||
|
||||
|
||||
def get_site_packages():
|
||||
prefixes = {sys.prefix, sysconfig.get_config_var('prefix')}
|
||||
try:
|
||||
prefixes.add(sys.real_prefix)
|
||||
except AttributeError:
|
||||
pass
|
||||
form = sysconfig.get_path('purelib', expand=False)
|
||||
py_version_short = '{0[0]}.{0[1]}'.format(sys.version_info)
|
||||
return {
|
||||
form.format(base=prefix, py_version_short=py_version_short)
|
||||
for prefix in prefixes
|
||||
}
|
||||
|
||||
|
||||
def insert_before_site_packages(*paths):
|
||||
site_packages = get_site_packages()
|
||||
index = None
|
||||
for i, path in enumerate(sys.path):
|
||||
if path in site_packages:
|
||||
index = i
|
||||
break
|
||||
if index is None:
|
||||
sys.path += list(paths)
|
||||
else:
|
||||
sys.path = sys.path[:index] + list(paths) + sys.path[index:]
|
||||
|
||||
|
||||
def insert_pipenv_dirs():
|
||||
insert_before_site_packages(os.path.dirname(PIPENV_DIR), PATCHED_DIR, VENDORED_DIR)
|
||||
|
||||
|
||||
if __name__ == "__main__": # pragma: no cover
|
||||
insert_pipenv_dirs()
|
||||
yaml_lib = "pipenv.patched.yaml{0}".format(sys.version_info[0])
|
||||
locals()[yaml_lib] = __import__(yaml_lib)
|
||||
sys.modules["yaml"] = sys.modules[yaml_lib]
|
||||
|
||||
Vendored
+1
-1
@@ -6,7 +6,7 @@ import yaml
|
||||
|
||||
from io import StringIO
|
||||
|
||||
from configparser import SafeConfigParser, NoOptionError
|
||||
from six.moves.configparser import SafeConfigParser, NoOptionError
|
||||
|
||||
|
||||
from .regex import URL_REGEX, HASH_REGEX
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
diff --git a/pipenv/patched/safety/__main__.py b/pipenv/patched/safety/__main__.py
|
||||
index d9a0bdab..f905408a 100644
|
||||
--- a/pipenv/patched/safety/__main__.py
|
||||
+++ b/pipenv/patched/safety/__main__.py
|
||||
@@ -1,8 +1,51 @@
|
||||
"""Allow safety to be executable through `python -m safety`."""
|
||||
from __future__ import absolute_import
|
||||
|
||||
-from .cli import cli
|
||||
+import os
|
||||
+import sys
|
||||
+import sysconfig
|
||||
+
|
||||
+
|
||||
+PATCHED_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
+PIPENV_DIR = os.path.dirname(PATCHED_DIR)
|
||||
+VENDORED_DIR = os.path.join("PIPENV_DIR", "vendor")
|
||||
+
|
||||
+
|
||||
+def get_site_packages():
|
||||
+ prefixes = {sys.prefix, sysconfig.get_config_var('prefix')}
|
||||
+ try:
|
||||
+ prefixes.add(sys.real_prefix)
|
||||
+ except AttributeError:
|
||||
+ pass
|
||||
+ form = sysconfig.get_path('purelib', expand=False)
|
||||
+ py_version_short = '{0[0]}.{0[1]}'.format(sys.version_info)
|
||||
+ return {
|
||||
+ form.format(base=prefix, py_version_short=py_version_short)
|
||||
+ for prefix in prefixes
|
||||
+ }
|
||||
+
|
||||
+
|
||||
+def insert_before_site_packages(*paths):
|
||||
+ site_packages = get_site_packages()
|
||||
+ index = None
|
||||
+ for i, path in enumerate(sys.path):
|
||||
+ if path in site_packages:
|
||||
+ index = i
|
||||
+ break
|
||||
+ if index is None:
|
||||
+ sys.path += list(paths)
|
||||
+ else:
|
||||
+ sys.path = sys.path[:index] + list(paths) + sys.path[index:]
|
||||
+
|
||||
+
|
||||
+def insert_pipenv_dirs():
|
||||
+ insert_before_site_packages(os.path.dirname(PIPENV_DIR), PATCHED_DIR, VENDORED_DIR)
|
||||
|
||||
|
||||
if __name__ == "__main__": # pragma: no cover
|
||||
+ insert_pipenv_dirs()
|
||||
+ yaml_lib = "pipenv.patched.yaml{0}".format(sys.version_info[0])
|
||||
+ locals()[yaml_lib] = __import__(yaml_lib)
|
||||
+ sys.modules["yaml"] = sys.modules[yaml_lib]
|
||||
+ from safety.cli import cli
|
||||
cli(prog_name="safety")
|
||||
@@ -1,18 +0,0 @@
|
||||
diff --git a/pipenv/patched/safety/__main__.py b/pipenv/patched/safety/__main__.py
|
||||
index d9a0bdab..0ab477d0 100644
|
||||
--- a/pipenv/patched/safety/__main__.py
|
||||
+++ b/pipenv/patched/safety/__main__.py
|
||||
@@ -1,8 +1,12 @@
|
||||
"""Allow safety to be executable through `python -m safety`."""
|
||||
from __future__ import absolute_import
|
||||
|
||||
-from .cli import cli
|
||||
+import sys
|
||||
|
||||
|
||||
if __name__ == "__main__": # pragma: no cover
|
||||
+ yaml_lib = "pipenv.patched.yaml{0}".format(sys.version_info[0])"
|
||||
+ locals()[yaml_lib] = __import__(yaml_lib)
|
||||
+ sys.modules["yaml"] = sys.modules[yaml_lib]
|
||||
+ from safety.cli import cli
|
||||
cli(prog_name="safety")
|
||||
@@ -0,0 +1,13 @@
|
||||
diff --git a/pipenv/vendor/dparse/parser.py b/pipenv/vendor/dparse/parser.py
|
||||
index c01ebab4..9b2a0728 100644
|
||||
--- a/pipenv/vendor/dparse/parser.py
|
||||
+++ b/pipenv/vendor/dparse/parser.py
|
||||
@@ -6,7 +6,7 @@ import yaml
|
||||
|
||||
from io import StringIO
|
||||
|
||||
-from configparser import SafeConfigParser, NoOptionError
|
||||
+from six.moves.configparser import SafeConfigParser, NoOptionError
|
||||
|
||||
|
||||
from .regex import URL_REGEX, HASH_REGEX
|
||||
Reference in New Issue
Block a user