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:
Dan Ryan
2018-08-26 19:59:36 -04:00
parent bd7b6004fe
commit ddb6065ee2
18 changed files with 660 additions and 558 deletions
+2
View File
@@ -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
View File
@@ -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
View File
@@ -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)
+1 -2
View File
@@ -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
View File
@@ -1 +0,0 @@
from . import typing
+1 -1
View File
@@ -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:
-5
View File
@@ -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
-17
View File
@@ -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
-6
View File
@@ -1,9 +1,3 @@
try:
from typing import Optional
except ImportError:
from pipenv.vendor.backports.typing import Optional
class TOMLKitError(Exception):
pass
-15
View File
@@ -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
-10
View File
@@ -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
-7
View File
@@ -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
File diff suppressed because it is too large Load Diff
+3 -2
View File
@@ -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
View File
@@ -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
+1 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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