mirror of
https://github.com/kennethreitz/pipenv.git
synced 2026-06-05 22:50:18 +00:00
Final fixes to vendoring
- Add news - upate test runner - Unvendor typing - Fix environment error - Fix click completion patch - update vendoring script - Install flit with vendoring script for wheels - disable build isolation also Signed-off-by: Dan Ryan <dan@danryan.co>
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
Fixed a bug which caused attempted hashing of ``ssh://`` style URIs which could cause failures during installation of private ssh repositories.
|
||||
- Corrected path conversion issues which caused certain editable VCS paths to be converted to ``ssh://`` URIs improperly.
|
||||
+1
-1
@@ -8,7 +8,7 @@
|
||||
- ``pytoml`` to ``0.1.18``
|
||||
- ``certifi`` to ``2018.8.24``
|
||||
- ``ptyprocess`` to ``0.6.0``
|
||||
- ``requirementslib`` to ``1.1.2``
|
||||
- ``requirementslib`` to ``1.1.5``
|
||||
- ``pythonfinder`` to ``1.0.2``
|
||||
- ``pipdeptree`` to ``0.13.0``
|
||||
- ``python-dotenv`` to ``0.9.1``
|
||||
|
||||
+2
-1
@@ -362,7 +362,8 @@ def venv_resolve_deps(
|
||||
"--system" if allow_global else "",
|
||||
)
|
||||
with temp_environ():
|
||||
os.environ["PIPENV_PACKAGES"] = "\n".join(deps)
|
||||
os.environ = {fs_str(k): fs_str(val) for k, val in os.environ.items()}
|
||||
os.environ["PIPENV_PACKAGES"] = str("\n".join(deps))
|
||||
if pypi_mirror:
|
||||
os.environ["PIPENV_PYPI_MIRROR"] = str(pypi_mirror)
|
||||
os.environ["PIPENV_VERBOSITY"] = str(environments.PIPENV_VERBOSITY)
|
||||
|
||||
Vendored
+1
-2
@@ -3,6 +3,5 @@
|
||||
from pkgutil import extend_path
|
||||
__path__ = extend_path(__path__, __name__)
|
||||
from . import weakref
|
||||
from . import shutil_get_terminal_size
|
||||
from . import enum
|
||||
|
||||
from . import shutil_get_terminal_size
|
||||
|
||||
-1
@@ -1 +0,0 @@
|
||||
from . import typing
|
||||
+1
-1
@@ -117,7 +117,7 @@ def strip_ssh_from_git_uri(uri):
|
||||
|
||||
|
||||
def add_ssh_scheme_to_git_uri(uri):
|
||||
"""Cleans VCS uris from pip format"""
|
||||
"""Cleans VCS uris from pipenv.patched.notpip format"""
|
||||
if isinstance(uri, six.string_types):
|
||||
# Add scheme for parsing purposes, this is also what pip does
|
||||
if uri.startswith("git+") and "://" not in uri:
|
||||
|
||||
Vendored
-5
@@ -1,10 +1,5 @@
|
||||
import datetime as _datetime
|
||||
|
||||
try:
|
||||
from typing import Tuple
|
||||
except ImportError:
|
||||
from pipenv.vendor.backports.typing import Tuple
|
||||
|
||||
from ._utils import parse_rfc3339
|
||||
from .container import Container
|
||||
from .items import AoT
|
||||
|
||||
Vendored
-17
@@ -1,22 +1,5 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
try:
|
||||
from typing import Any
|
||||
from typing import Dict
|
||||
from typing import Generator
|
||||
from typing import List
|
||||
from typing import Optional
|
||||
from typing import Tuple
|
||||
from typing import Union
|
||||
except ImportError:
|
||||
from pipenv.vendor.backports.typing import Any
|
||||
from pipenv.vendor.backports.typing import Dict
|
||||
from pipenv.vendor.backports.typing import Generator
|
||||
from pipenv.vendor.backports.typing import List
|
||||
from pipenv.vendor.backports.typing import Optional
|
||||
from pipenv.vendor.backports.typing import Tuple
|
||||
from pipenv.vendor.backports.typing import Union
|
||||
|
||||
from ._compat import decode
|
||||
from .exceptions import KeyAlreadyPresent
|
||||
from .exceptions import NonExistentKey
|
||||
|
||||
Vendored
-6
@@ -1,9 +1,3 @@
|
||||
try:
|
||||
from typing import Optional
|
||||
except ImportError:
|
||||
from pipenv.vendor.backports.typing import Optional
|
||||
|
||||
|
||||
class TOMLKitError(Exception):
|
||||
|
||||
pass
|
||||
|
||||
Vendored
-15
@@ -11,21 +11,6 @@ if sys.version_info >= (3, 4):
|
||||
from enum import Enum
|
||||
else:
|
||||
from pipenv.vendor.backports.enum import Enum
|
||||
try:
|
||||
from typing import Any
|
||||
from typing import Dict
|
||||
from typing import Generator
|
||||
from typing import List
|
||||
from typing import Optional
|
||||
from typing import Union
|
||||
except ImportError:
|
||||
from pipenv.vendor.backports.typing import Any
|
||||
from pipenv.vendor.backports.typing import Dict
|
||||
from pipenv.vendor.backports.typing import Generator
|
||||
from pipenv.vendor.backports.typing import List
|
||||
from pipenv.vendor.backports.typing import Optional
|
||||
from pipenv.vendor.backports.typing import Union
|
||||
|
||||
|
||||
from ._compat import PY2
|
||||
from ._compat import decode
|
||||
|
||||
Vendored
-10
@@ -7,16 +7,6 @@ import re
|
||||
import string
|
||||
|
||||
from copy import copy
|
||||
try:
|
||||
from typing import Iterator
|
||||
from typing import Optional
|
||||
from typing import Tuple
|
||||
from typing import Union
|
||||
except ImportError:
|
||||
from pipenv.vendor.backports.typing import Iterator
|
||||
from pipenv.vendor.backports.typing import Optional
|
||||
from pipenv.vendor.backports.typing import Tuple
|
||||
from pipenv.vendor.backports.typing import Union
|
||||
|
||||
from ._compat import PY2
|
||||
from ._compat import chr
|
||||
|
||||
Vendored
-7
@@ -1,12 +1,5 @@
|
||||
import io
|
||||
|
||||
try:
|
||||
from typing import Any
|
||||
from typing import Dict
|
||||
except ImportError:
|
||||
from pipenv.vendor.backports.typing import Any
|
||||
from pipenv.vendor.backports.typing import Dict
|
||||
|
||||
from .api import loads
|
||||
from .toml_document import TOMLDocument
|
||||
|
||||
|
||||
+595
-397
File diff suppressed because it is too large
Load Diff
+3
-2
@@ -1,4 +1,5 @@
|
||||
[pytest]
|
||||
addopts = -n auto
|
||||
addopts = -ra -n auto
|
||||
testpaths = tests/
|
||||
; Add vendor and patched in addition to the default list of ignored dirs
|
||||
norecursedirs = .* build dist CVS _darcs {arch} *.egg vendor patched
|
||||
norecursedirs = .* build dist CVS _darcs {arch} *.egg vendor patched news tasks docs
|
||||
|
||||
+11
-9
@@ -28,8 +28,10 @@ fi
|
||||
# pip uninstall -y pipenv
|
||||
echo "Path: $PATH"
|
||||
echo "Installing Pipenv…"
|
||||
pip install -e "$(pwd)" --upgrade
|
||||
pipenv install --deploy --dev
|
||||
PIP_USER="1" python -m pip install --upgrade setuptools
|
||||
PIP_USER="1" python3 -m pip install --upgrade setuptools
|
||||
python -m pip install -e "$(pwd)" --upgrade && python3 -m pip install -e "$(pwd)" --upgrade
|
||||
python3 -m pipenv install --deploy --dev --system
|
||||
|
||||
# Otherwise, we're on a development machine.
|
||||
# First, try MacOS…
|
||||
@@ -47,20 +49,20 @@ else
|
||||
fi
|
||||
|
||||
echo "Installing dependencies…"
|
||||
PIPENV_PYTHON=2.7 pipenv run pip install -e . --upgrade
|
||||
PIPENV_PYTHON=3.7 pipenv run pip install -e . --upgrade
|
||||
PIPENV_PYTHON=2.7 pipenv install --dev
|
||||
PIPENV_PYTHON=3.7 pipenv install --dev
|
||||
PIPENV_PYTHON=2.7 python3 -m pipenv --venv && pipenv --rm && pipenv install --dev
|
||||
PIPENV_PYTHON=3.7 python3 -m pipenv --venv && pipenv --rm && pipenv install --dev
|
||||
PIPENV_PYTHON=2.7 python3 -m pipenv run pip install --upgrade -e .
|
||||
PIPENV_PYTHON=3.7 python3 -m pipenv run pip install --upgrade -e .
|
||||
|
||||
echo "$ pipenv run time pytest -v -n auto tests -m \"$TEST_SUITE\""
|
||||
# PIPENV_PYTHON=2.7 pipenv run time pytest -v -n auto tests -m "$TEST_SUITE" | prefix 2.7 &
|
||||
# PIPENV_PYTHON=3.6 pipenv run time pytest -v -n auto tests -m "$TEST_SUITE" | prefix 3.6
|
||||
# Better to run them sequentially.
|
||||
PIPENV_PYTHON=2.7 pipenv run time pytest
|
||||
PIPENV_PYTHON=3.7 pipenv run time pytest
|
||||
PIPENV_PYTHON=2.7 python3 -m pipenv run time pytest
|
||||
PIPENV_PYTHON=3.7 python3 -m pipenv run time pytest
|
||||
|
||||
# test revendoring
|
||||
pip3 install --upgrade invoke requests parver
|
||||
pip3 install --upgrade invoke requests parver vistir
|
||||
python3 -m invoke vendoring.update
|
||||
# Cleanup junk.
|
||||
rm -fr .venv
|
||||
|
||||
@@ -30,7 +30,7 @@ required = [
|
||||
'requests[security];python_version<"2.7"',
|
||||
'ordereddict;python_version<"2.7"',
|
||||
'enum34; python_version<"3"',
|
||||
'typing; python_version<"3"'
|
||||
'typing; python_version<"3.5"'
|
||||
]
|
||||
|
||||
|
||||
|
||||
+19
-11
@@ -2,8 +2,9 @@
|
||||
""""Vendoring script, python 3.5 needed"""
|
||||
# Taken from pip
|
||||
# see https://github.com/pypa/pip/blob/95bcf8c5f6394298035a7332c441868f3b0169f4/tasks/vendoring/__init__.py
|
||||
from vistir.compat import NamedTemporaryFile, TemporaryDirectory, Path
|
||||
from vistir.path import mkdir_p
|
||||
from pipenv._compat import NamedTemporaryFile, TemporaryDirectory
|
||||
from pathlib import Path
|
||||
from pipenv.utils import mkdir_p
|
||||
# from tempfile import TemporaryDirectory
|
||||
import tarfile
|
||||
import zipfile
|
||||
@@ -19,16 +20,17 @@ LIBRARY_DIRNAMES = {
|
||||
'requirements-parser': 'requirements',
|
||||
'backports.shutil_get_terminal_size': 'backports/shutil_get_terminal_size',
|
||||
'backports.weakref': 'backports/weakref',
|
||||
'typing.py': 'backports/typing.py',
|
||||
'shutil_backports': 'backports/shutil_get_terminal_size',
|
||||
'python-dotenv': 'dotenv',
|
||||
'pip-tools': 'piptools',
|
||||
'setuptools': 'pkg_resources',
|
||||
'msgpack-python': 'msgpack',
|
||||
'attrs': 'attr',
|
||||
'enum34': 'backports/enum'
|
||||
'enum': 'backports/enum'
|
||||
}
|
||||
|
||||
PY2_DOWNLOAD = ['enum34',]
|
||||
|
||||
# from time to time, remove the no longer needed ones
|
||||
HARDCODED_LICENSE_URLS = {
|
||||
'pytoml': 'https://github.com/avakar/pytoml/raw/master/LICENSE',
|
||||
@@ -68,8 +70,7 @@ PATCHED_RENAMES = {
|
||||
|
||||
LIBRARY_RENAMES = {
|
||||
'pip': 'pipenv.patched.notpip',
|
||||
'enum': 'backports/enum',
|
||||
'typing.py': 'backports/typing.py'
|
||||
'enum34': 'enum',
|
||||
}
|
||||
|
||||
|
||||
@@ -420,6 +421,9 @@ def packages_missing_licenses(ctx, vendor_dir=None, requirements_file='vendor.tx
|
||||
pkg = req.strip().split("=")[0]
|
||||
possible_pkgs = [pkg, pkg.replace('-', '_')]
|
||||
match_found = False
|
||||
if pkg in PY2_DOWNLOAD:
|
||||
match_found = True
|
||||
# print("pkg ===> %s" % pkg)
|
||||
if pkg in LIBRARY_DIRNAMES:
|
||||
possible_pkgs.append(LIBRARY_DIRNAMES[pkg])
|
||||
for pkgpath in possible_pkgs:
|
||||
@@ -429,21 +433,22 @@ def packages_missing_licenses(ctx, vendor_dir=None, requirements_file='vendor.tx
|
||||
licensepath = pkgpath.joinpath(licensepath)
|
||||
if licensepath.exists():
|
||||
match_found = True
|
||||
log("%s: Trying path %s... FOUND" % (pkg, licensepath))
|
||||
# log("%s: Trying path %s... FOUND" % (pkg, licensepath))
|
||||
break
|
||||
elif (pkgpath.exists() or pkgpath.parent.joinpath("{0}.py".format(pkgpath.stem)).exists()):
|
||||
for licensepath in LICENSES:
|
||||
licensepath = pkgpath.parent.joinpath("{0}.{1}".format(pkgpath.stem, licensepath))
|
||||
if licensepath.exists():
|
||||
match_found = True
|
||||
log("%s: Trying path %s... FOUND" % (pkg, licensepath))
|
||||
# log("%s: Trying path %s... FOUND" % (pkg, licensepath))
|
||||
break
|
||||
if match_found:
|
||||
break
|
||||
if match_found:
|
||||
continue
|
||||
log("%s: No license found in %s" % (pkg, pkgpath))
|
||||
new_requirements.append(req)
|
||||
else:
|
||||
# log("%s: No license found in %s" % (pkg, pkgpath))
|
||||
new_requirements.append(req)
|
||||
return new_requirements
|
||||
|
||||
|
||||
@@ -458,10 +463,12 @@ def download_licenses(ctx, vendor_dir=None, requirements_file='vendor.txt', pack
|
||||
vendor_dir = _get_vendor_dir(ctx)
|
||||
requirements_file = vendor_dir / requirements_file
|
||||
requirements = packages_missing_licenses(ctx, vendor_dir, requirements_file, package=package)
|
||||
|
||||
with NamedTemporaryFile(prefix="pipenv", suffix="vendor-reqs", delete=False, mode="w") as fh:
|
||||
fh.write("\n".join(requirements))
|
||||
new_requirements_file = fh.name
|
||||
new_requirements_file = Path(new_requirements_file)
|
||||
log(requirements)
|
||||
requirement = "-r {0}".format(new_requirements_file.as_posix())
|
||||
if package:
|
||||
if not only:
|
||||
@@ -472,8 +479,9 @@ def download_licenses(ctx, vendor_dir=None, requirements_file='vendor.txt', pack
|
||||
requirement = package
|
||||
tmp_dir = vendor_dir / '__tmp__'
|
||||
# TODO: Fix this whenever it gets sorted out (see https://github.com/pypa/pip/issues/5739)
|
||||
ctx.run('pip install flit') # needed for the next step
|
||||
ctx.run(
|
||||
'pip download --no-binary :all: --only-binary requests_download --no-deps -d {0} {1}'.format(
|
||||
'pip download --no-binary :all: --only-binary requests_download --no-build-isolation --no-deps -d {0} {1}'.format(
|
||||
tmp_dir.as_posix(),
|
||||
requirement,
|
||||
)
|
||||
|
||||
+24
-72
@@ -1,23 +1,20 @@
|
||||
diff --git a/pipenv/vendor/tomlkit/api.py b/pipenv/vendor/tomlkit/api.py
|
||||
index e541c20c..d36375e8 100644
|
||||
index e541c20c..0ac26752 100644
|
||||
--- a/pipenv/vendor/tomlkit/api.py
|
||||
+++ b/pipenv/vendor/tomlkit/api.py
|
||||
@@ -1,6 +1,9 @@
|
||||
@@ -1,7 +1,5 @@
|
||||
import datetime as _datetime
|
||||
|
||||
-from typing import Tuple
|
||||
+try:
|
||||
+ from typing import Tuple
|
||||
+except ImportError:
|
||||
+ from pipenv.vendor.backports.typing import Tuple
|
||||
|
||||
-
|
||||
from ._utils import parse_rfc3339
|
||||
from .container import Container
|
||||
from .items import AoT
|
||||
diff --git a/pipenv/vendor/tomlkit/container.py b/pipenv/vendor/tomlkit/container.py
|
||||
index c1d2d7c6..c7595a52 100644
|
||||
index c1d2d7c6..a7876ff1 100644
|
||||
--- a/pipenv/vendor/tomlkit/container.py
|
||||
+++ b/pipenv/vendor/tomlkit/container.py
|
||||
@@ -1,12 +1,21 @@
|
||||
@@ -1,13 +1,5 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
-from typing import Any
|
||||
@@ -27,43 +24,26 @@ index c1d2d7c6..c7595a52 100644
|
||||
-from typing import Optional
|
||||
-from typing import Tuple
|
||||
-from typing import Union
|
||||
+try:
|
||||
+ from typing import Any
|
||||
+ from typing import Dict
|
||||
+ from typing import Generator
|
||||
+ from typing import List
|
||||
+ from typing import Optional
|
||||
+ from typing import Tuple
|
||||
+ from typing import Union
|
||||
+except ImportError:
|
||||
+ from pipenv.vendor.backports.typing import Any
|
||||
+ from pipenv.vendor.backports.typing import Dict
|
||||
+ from pipenv.vendor.backports.typing import Generator
|
||||
+ from pipenv.vendor.backports.typing import List
|
||||
+ from pipenv.vendor.backports.typing import Optional
|
||||
+ from pipenv.vendor.backports.typing import Tuple
|
||||
+ from pipenv.vendor.backports.typing import Union
|
||||
|
||||
-
|
||||
from ._compat import decode
|
||||
from .exceptions import KeyAlreadyPresent
|
||||
from .exceptions import NonExistentKey
|
||||
diff --git a/pipenv/vendor/tomlkit/exceptions.py b/pipenv/vendor/tomlkit/exceptions.py
|
||||
index 8d48bf19..dae29f6f 100644
|
||||
index 8d48bf19..d889a924 100644
|
||||
--- a/pipenv/vendor/tomlkit/exceptions.py
|
||||
+++ b/pipenv/vendor/tomlkit/exceptions.py
|
||||
@@ -1,4 +1,7 @@
|
||||
@@ -1,6 +1,3 @@
|
||||
-from typing import Optional
|
||||
+try:
|
||||
+ from typing import Optional
|
||||
+except ImportError:
|
||||
+ from pipenv.vendor.backports.typing import Optional
|
||||
|
||||
|
||||
-
|
||||
-
|
||||
class TOMLKitError(Exception):
|
||||
|
||||
pass
|
||||
diff --git a/pipenv/vendor/tomlkit/items.py b/pipenv/vendor/tomlkit/items.py
|
||||
index 747dbd50..83b17612 100644
|
||||
index 747dbd50..8807f4b3 100644
|
||||
--- a/pipenv/vendor/tomlkit/items.py
|
||||
+++ b/pipenv/vendor/tomlkit/items.py
|
||||
@@ -6,13 +6,25 @@ import string
|
||||
@@ -6,14 +6,11 @@ import string
|
||||
from datetime import date
|
||||
from datetime import datetime
|
||||
from datetime import time
|
||||
@@ -74,33 +54,20 @@ index 747dbd50..83b17612 100644
|
||||
-from typing import List
|
||||
-from typing import Optional
|
||||
-from typing import Union
|
||||
-
|
||||
+import sys
|
||||
+if sys.version_info >= (3, 4):
|
||||
+ from enum import Enum
|
||||
+else:
|
||||
+ from pipenv.vendor.backports.enum import Enum
|
||||
+try:
|
||||
+ from typing import Any
|
||||
+ from typing import Dict
|
||||
+ from typing import Generator
|
||||
+ from typing import List
|
||||
+ from typing import Optional
|
||||
+ from typing import Union
|
||||
+except ImportError:
|
||||
+ from pipenv.vendor.backports.typing import Any
|
||||
+ from pipenv.vendor.backports.typing import Dict
|
||||
+ from pipenv.vendor.backports.typing import Generator
|
||||
+ from pipenv.vendor.backports.typing import List
|
||||
+ from pipenv.vendor.backports.typing import Optional
|
||||
+ from pipenv.vendor.backports.typing import Union
|
||||
|
||||
|
||||
from ._compat import PY2
|
||||
from ._compat import decode
|
||||
diff --git a/pipenv/vendor/tomlkit/parser.py b/pipenv/vendor/tomlkit/parser.py
|
||||
index b55a3fe4..28c0a6e0 100644
|
||||
index b55a3fe4..3d4984d1 100644
|
||||
--- a/pipenv/vendor/tomlkit/parser.py
|
||||
+++ b/pipenv/vendor/tomlkit/parser.py
|
||||
@@ -7,10 +7,16 @@ import re
|
||||
@@ -7,10 +7,6 @@ import re
|
||||
import string
|
||||
|
||||
from copy import copy
|
||||
@@ -108,34 +75,19 @@ index b55a3fe4..28c0a6e0 100644
|
||||
-from typing import Optional
|
||||
-from typing import Tuple
|
||||
-from typing import Union
|
||||
+try:
|
||||
+ from typing import Iterator
|
||||
+ from typing import Optional
|
||||
+ from typing import Tuple
|
||||
+ from typing import Union
|
||||
+except ImportError:
|
||||
+ from pipenv.vendor.backports.typing import Iterator
|
||||
+ from pipenv.vendor.backports.typing import Optional
|
||||
+ from pipenv.vendor.backports.typing import Tuple
|
||||
+ from pipenv.vendor.backports.typing import Union
|
||||
|
||||
from ._compat import PY2
|
||||
from ._compat import chr
|
||||
diff --git a/pipenv/vendor/tomlkit/toml_file.py b/pipenv/vendor/tomlkit/toml_file.py
|
||||
index 3b416664..3e4cc721 100644
|
||||
index 3b416664..631e9959 100644
|
||||
--- a/pipenv/vendor/tomlkit/toml_file.py
|
||||
+++ b/pipenv/vendor/tomlkit/toml_file.py
|
||||
@@ -1,7 +1,11 @@
|
||||
@@ -1,8 +1,5 @@
|
||||
import io
|
||||
|
||||
-from typing import Any
|
||||
-from typing import Dict
|
||||
+try:
|
||||
+ from typing import Any
|
||||
+ from typing import Dict
|
||||
+except ImportError:
|
||||
+ from pipenv.vendor.backports.typing import Any
|
||||
+ from pipenv.vendor.backports.typing import Dict
|
||||
|
||||
-
|
||||
from .api import loads
|
||||
from .toml_document import TOMLDocument
|
||||
|
||||
|
||||
Reference in New Issue
Block a user