#3 Update to 2018.11.14
Merged 5 years ago by churchyard. Opened 5 years ago by churchyard.
rpms/ churchyard/pipenv update  into  master

file modified
+1
@@ -1,2 +1,3 @@ 

  /pipenv-11.10.4.tar.gz

  /pipenv-2018.7.1.tar.gz

+ /pipenv-2018.11.14.tar.gz

file removed
-136
@@ -1,136 +0,0 @@ 

- commit a69b35f9ed9e156da0d9519e88b735b0a82daaae

- Author: Michal Cyprian <m.cyprian@gmail.com>

- Date:   Fri May 11 10:37:35 2018 +0200

- 

-     Add fixture imports

- 

- diff --git a/tests/integration/test_cli.py b/tests/integration/test_cli.py

- index a51095c..0bc8902 100644

- --- a/tests/integration/test_cli.py

- +++ b/tests/integration/test_cli.py

- @@ -8,6 +8,8 @@ import pytest

-  from flaky import flaky

-  from pipenv.utils import normalize_drive

-  

- +from .fixtures.plugin import pypi, pypi_secure

- +

-  

-  @pytest.mark.cli

-  def test_pipenv_where(PipenvInstance, pypi_secure):

- diff --git a/tests/integration/test_dot_venv.py b/tests/integration/test_dot_venv.py

- index 0b4cb48..e545d01 100644

- --- a/tests/integration/test_dot_venv.py

- +++ b/tests/integration/test_dot_venv.py

- @@ -6,6 +6,8 @@ from pipenv.vendor import delegator

-  

-  import pytest

-  

- +from .fixtures.plugin import pypi

- +

-  

-  @pytest.mark.dotvenv

-  def test_venv_in_project(PipenvInstance, pypi):

- diff --git a/tests/integration/test_install_basic.py b/tests/integration/test_install_basic.py

- index d4e967d..47670df 100644

- --- a/tests/integration/test_install_basic.py

- +++ b/tests/integration/test_install_basic.py

- @@ -10,6 +10,8 @@ import pytest

-  

-  from flaky import flaky

-  

- +from .fixtures.plugin import pypi

- +

-  

-  @pytest.mark.install

-  @pytest.mark.setup

- diff --git a/tests/integration/test_install_markers.py b/tests/integration/test_install_markers.py

- index ee83179..58f29f2 100644

- --- a/tests/integration/test_install_markers.py

- +++ b/tests/integration/test_install_markers.py

- @@ -9,6 +9,8 @@ import pytest

-  

-  from flaky import flaky

-  

- +from .fixtures.plugin import pypi

- +

-  

-  py3_only = pytest.mark.skipif(sys.version_info < (3, 0), reason="requires Python3")

-  skip_py37 = pytest.mark.skipif(sys.version_info >= (3, 7), reason="Skip for python 3.7")

- diff --git a/tests/integration/test_install_twists.py b/tests/integration/test_install_twists.py

- index 95d67da..adce703 100644

- --- a/tests/integration/test_install_twists.py

- +++ b/tests/integration/test_install_twists.py

- @@ -9,6 +9,8 @@ import pytest

-  

-  from flaky import flaky

-  

- +from .fixtures.plugin import pypi

- +

-  

-  @pytest.mark.extras

-  @pytest.mark.install

- diff --git a/tests/integration/test_install_uri.py b/tests/integration/test_install_uri.py

- index df2d44d..d27d690 100644

- --- a/tests/integration/test_install_uri.py

- +++ b/tests/integration/test_install_uri.py

- @@ -4,6 +4,8 @@ from flaky import flaky

-  import delegator

-  from pipenv._compat import Path

-  

- +from .fixtures.plugin import pypi

- +

-  

-  @pytest.mark.vcs

-  @pytest.mark.install

- diff --git a/tests/integration/test_lock.py b/tests/integration/test_lock.py

- index 1ab34f1..95de475 100644

- --- a/tests/integration/test_lock.py

- +++ b/tests/integration/test_lock.py

- @@ -6,6 +6,8 @@ from pipenv.utils import temp_environ

-  

-  from flaky import flaky

-  

- +from .fixtures.plugin import pypi

- +

-  

-  @pytest.mark.lock

-  @pytest.mark.requirements

- diff --git a/tests/integration/test_pipenv.py b/tests/integration/test_pipenv.py

- index 4734cbd..75a0a9d 100644

- --- a/tests/integration/test_pipenv.py

- +++ b/tests/integration/test_pipenv.py

- @@ -14,6 +14,8 @@ from pipenv.project import Project

-  from pipenv.vendor import delegator

-  from pipenv._compat import Path

-  

- +from .fixtures.plugin import pypi

- +

-  

-  @pytest.mark.code

-  @pytest.mark.install

- diff --git a/tests/integration/test_sync.py b/tests/integration/test_sync.py

- index 401eadf..0799154 100644

- --- a/tests/integration/test_sync.py

- +++ b/tests/integration/test_sync.py

- @@ -4,6 +4,8 @@ from pipenv.utils import temp_environ

-  

-  import pytest

-  

- +from .fixtures.plugin import pypi

- +

-  

-  @pytest.mark.sync

-  def test_sync_error_without_lockfile(PipenvInstance, pypi):

- diff --git a/tests/integration/test_uninstall.py b/tests/integration/test_uninstall.py

- index e51894a..dffbdbc 100644

- --- a/tests/integration/test_uninstall.py

- +++ b/tests/integration/test_uninstall.py

- @@ -5,6 +5,8 @@ from pipenv.utils import temp_environ

-  

-  import pytest

-  

- +from .fixtures.plugin import pypi

- +

-  

-  @pytest.mark.run

-  @pytest.mark.uninstall

@@ -1,35 +1,155 @@ 

+ diff --git a/pipenv/__init__.py b/pipenv/__init__.py

+ index 4d137e7..1e5230b 100644

+ --- a/pipenv/__init__.py

+ +++ b/pipenv/__init__.py

+ @@ -18,7 +18,7 @@ sys.path.insert(0, PIPENV_VENDOR)

+  # Inject patched directory into system path.

+  sys.path.insert(0, PIPENV_PATCHED)

+  

+ -from pipenv.vendor.urllib3.exceptions import DependencyWarning

+ +from urllib3.exceptions import DependencyWarning

+  from pipenv.vendor.vistir.compat import ResourceWarning, fs_str

+  warnings.filterwarnings("ignore", category=DependencyWarning)

+  warnings.filterwarnings("ignore", category=ResourceWarning)

+ diff --git a/pipenv/core.py b/pipenv/core.py

+ index f815e5d..3458b72 100644

+ --- a/pipenv/core.py

+ +++ b/pipenv/core.py

+ @@ -1260,7 +1260,7 @@ def pip_install(

+  ):

+      from pipenv.patched.notpip._internal import logger as piplogger

+      from .utils import Mapping

+ -    from .vendor.urllib3.util import parse_url

+ +    from urllib3.util import parse_url

+  

+      src = []

+      write_to_tmpfile = False

+ diff --git a/pipenv/exceptions.py b/pipenv/exceptions.py

+ index 62e25d5..00da817 100644

+ --- a/pipenv/exceptions.py

+ +++ b/pipenv/exceptions.py

+ @@ -11,9 +11,9 @@ import six

+  from ._compat import fix_utf8

+  from .patched import crayons

+  from . import environments

+ -from .vendor.click.utils import echo as click_echo

+ -from .vendor.click._compat import get_text_stderr

+ -from .vendor.click.exceptions import (

+ +from click.utils import echo as click_echo

+ +from click._compat import get_text_stderr

+ +from click.exceptions import (

+      Abort,

+      BadOptionUsage,

+      BadParameter,

+ @@ -23,7 +23,7 @@ from .vendor.click.exceptions import (

+      MissingParameter,

+      UsageError,

+  )

+ -from .vendor.click.types import Path

+ +from click.types import Path

+  

+  

+  def handle_exception(exc_type, exception, traceback, hook=sys.excepthook):

+ diff --git a/pipenv/patched/piptools/_compat/pip_compat.py b/pipenv/patched/piptools/_compat/pip_compat.py

+ index c466ef0..e2782f2 100644

+ --- a/pipenv/patched/piptools/_compat/pip_compat.py

+ +++ b/pipenv/patched/piptools/_compat/pip_compat.py

+ @@ -24,7 +24,7 @@ __all__ = [

+      "user_cache_dir"

+  ]

+  

+ -from pipenv.vendor.appdirs import user_cache_dir

+ +from appdirs import user_cache_dir

+  from pip_shims.shims import (

+      InstallRequirement,

+      parse_requirements,

+ diff --git a/pipenv/resolver.py b/pipenv/resolver.py

+ index e87f324..cc42918 100644

+ --- a/pipenv/resolver.py

+ +++ b/pipenv/resolver.py

+ @@ -121,6 +121,6 @@ def main():

+  

+  if __name__ == "__main__":

+      _patch_path()

+ -    from pipenv.vendor import colorama

+ +    import colorama

+      colorama.init()

+      main()

+ diff --git a/pipenv/shells.py b/pipenv/shells.py

+ index 352c01f..78bced8 100644

+ --- a/pipenv/shells.py

+ +++ b/pipenv/shells.py

+ @@ -8,7 +8,7 @@ import sys

+  from .environments import PIPENV_SHELL_EXPLICIT, PIPENV_SHELL, PIPENV_EMULATOR

+  from .vendor.vistir.compat import get_terminal_size, Path

+  from .vendor.vistir.contextmanagers import temp_environ

+ -from .vendor import shellingham

+ +import shellingham

+  

+  

+  ShellDetectionFailure = shellingham.ShellDetectionFailure

  diff --git a/pipenv/utils.py b/pipenv/utils.py

- index 60c12cb..ef2555d 100644

+ index 9f62e2b..2a289cb 100644

  --- a/pipenv/utils.py

  +++ b/pipenv/utils.py

- @@ -218,7 +218,7 @@ def prepare_pip_source_args(sources, pip_args=None):

-  def actually_resolve_deps(

-      deps, index_lookup, markers_lookup, project, sources, verbose, clear, pre, req_dir=None

-  ):

- -    from .vendor.packaging.markers import default_environment

- +    from packaging.markers import default_environment

-      from .patched.notpip._internal import basecommand

-      from .patched.notpip._internal.cmdoptions import no_binary, only_binary

-      from .patched.notpip._internal.req import parse_requirements

+ @@ -390,7 +390,7 @@ class Resolver(object):

+  

+      def resolve(self):

+          from pipenv.vendor.pip_shims.shims import DistributionNotFound

+ -        from pipenv.vendor.requests.exceptions import HTTPError

+ +        from requests.exceptions import HTTPError

+          from pipenv.patched.piptools.exceptions import NoCandidateFound

+          from pipenv.patched.piptools.cache import CorruptCacheError

+          from .exceptions import CacheError, ResolutionFailure

+ @@ -490,7 +490,7 @@ def create_spinner(text, nospin=None, spinner_name=None):

+  def resolve(cmd, sp):

+      from .vendor import delegator

+      from .cmdparse import Script

+ -    from .vendor.pexpect.exceptions import EOF, TIMEOUT

+ +    from pexpect.exceptions import EOF, TIMEOUT

+      from .vendor.vistir.compat import to_native_string

+      EOF.__module__ = "pexpect.exceptions"

+      from ._compat import decode_output

+ @@ -665,7 +665,7 @@ def resolve_deps(

+      """Given a list of dependencies, return a resolved list of dependencies,

+      using pip-tools -- and their hashes, using the warehouse API / pip.

+      """

+ -    from .vendor.requests.exceptions import ConnectionError

+ +    from requests.exceptions import ConnectionError

+      from .vendor.requirementslib.models.requirements import Requirement

+  

+      index_lookup = {}

+ @@ -1291,8 +1291,8 @@ def translate_markers(pipfile_entry):

+      """

+      if not isinstance(pipfile_entry, Mapping):

+          raise TypeError("Entry is not a pipfile formatted mapping.")

+ -    from .vendor.distlib.markers import DEFAULT_CONTEXT as marker_context

+ -    from .vendor.packaging.markers import Marker

+ +    from distlib.markers import DEFAULT_CONTEXT as marker_context

+ +    from packaging.markers import Marker

+      from .vendor.vistir.misc import dedup

+  

+      allowed_marker_keys = ["markers"] + [k for k in marker_context.keys()]

  diff --git a/tests/integration/conftest.py b/tests/integration/conftest.py

- index d71f0f8..dd31adf 100644

+ index 6ed95b3..8ac6a4d 100644

  --- a/tests/integration/conftest.py

  +++ b/tests/integration/conftest.py

- @@ -1,14 +1,14 @@

+ @@ -1,15 +1,16 @@

   import json

   import os

-  import warnings

  +import requests

- +import six

+  import sys

  +import toml

+  import warnings

   

   import pytest

   

   from pipenv._compat import TemporaryDirectory, Path

   from pipenv.vendor import delegator

  -from pipenv.vendor import requests

- -from pipenv.vendor import six

  -from pipenv.vendor import toml

+  from pytest_pypi.app import prepare_packages as prepare_pypi_packages

+ +from pytest_pypi.plugin import pypi, pypi_secure

+  from vistir.compat import ResourceWarning, fs_str

+  from vistir.path import mkdir_p

   

-  if six.PY2:

-      class ResourceWarning(Warning):

file modified
+105 -98
@@ -1,24 +1,24 @@ 

  diff --git a/tests/integration/test_cli.py b/tests/integration/test_cli.py

- index 0bc8902..1bdd400 100644

+ index 7ebcee1..fc09de5 100644

  --- a/tests/integration/test_cli.py

  +++ b/tests/integration/test_cli.py

  @@ -17,6 +17,7 @@ def test_pipenv_where(PipenvInstance, pypi_secure):

-          assert normalize_drive(p.path) in p.pipenv('--where').out

+          assert normalize_drive(p.path) in c.out

   

   

  +@pytest.mark.rpmfail

   @pytest.mark.cli

   def test_pipenv_venv(PipenvInstance):

       with PipenvInstance() as p:

- @@ -39,6 +40,7 @@ def test_pipenv_support(PipenvInstance):

-          assert p.pipenv('--support').out

+ @@ -47,6 +48,7 @@ def test_pipenv_support(PipenvInstance):

+          assert c.out

   

   

  +@pytest.mark.rpmfail

   @pytest.mark.cli

   def test_pipenv_rm(PipenvInstance):

       with PipenvInstance() as p:

- @@ -50,6 +52,7 @@ def test_pipenv_rm(PipenvInstance):

+ @@ -63,6 +65,7 @@ def test_pipenv_rm(PipenvInstance):

           assert not os.path.isdir(venv_path)

   

   
@@ -26,27 +26,35 @@ 

   @pytest.mark.cli

   def test_pipenv_graph(PipenvInstance, pypi):

       with PipenvInstance(pypi=pypi) as p:

- @@ -59,6 +62,7 @@ def test_pipenv_graph(PipenvInstance, pypi):

-          assert 'requests' in p.pipenv('graph --json-tree').out

+ @@ -79,6 +82,7 @@ def test_pipenv_graph(PipenvInstance, pypi):

+          assert "requests" in graph_json_tree.out

   

   

  +@pytest.mark.rpmfail

   @pytest.mark.cli

   def test_pipenv_graph_reverse(PipenvInstance, pypi):

       with PipenvInstance(pypi=pypi) as p:

+ @@ -125,6 +129,7 @@ def test_pipenv_check(PipenvInstance, pypi):

+          assert 'Ignoring' in c.err

+  

+  

+ +@pytest.mark.rpmfail

+  @pytest.mark.cli

+  def test_pipenv_clean_pip_no_warnings(PipenvInstance):

+      with PipenvInstance(chdir=True) as p:

  diff --git a/tests/integration/test_dot_venv.py b/tests/integration/test_dot_venv.py

- index e545d01..866a337 100644

+ index 53f5fb1..1b885fd 100644

  --- a/tests/integration/test_dot_venv.py

  +++ b/tests/integration/test_dot_venv.py

- @@ -9,6 +9,7 @@ import pytest

-  from .fixtures.plugin import pypi

+ @@ -8,6 +8,7 @@ from pipenv.vendor import delegator

+  import pytest

   

   

  +@pytest.mark.rpmfail

   @pytest.mark.dotvenv

   def test_venv_in_project(PipenvInstance, pypi):

       with temp_environ():

- @@ -19,6 +20,7 @@ def test_venv_in_project(PipenvInstance, pypi):

+ @@ -18,6 +19,7 @@ def test_venv_in_project(PipenvInstance, pypi):

               assert normalize_drive(p.path) in p.pipenv('--venv').out

   

   
@@ -54,7 +62,7 @@ 

   @pytest.mark.dotvenv

   def test_venv_at_project_root(PipenvInstance):

       with temp_environ():

- @@ -34,6 +36,7 @@ def test_venv_at_project_root(PipenvInstance):

+ @@ -33,6 +35,7 @@ def test_venv_at_project_root(PipenvInstance):

               assert normalize_drive(p.path) in p.pipenv('--venv').out

   

   
@@ -63,10 +71,10 @@ 

   def test_reuse_previous_venv(PipenvInstance, pypi):

       with PipenvInstance(chdir=True, pypi=pypi) as p:

  diff --git a/tests/integration/test_install_basic.py b/tests/integration/test_install_basic.py

- index 47670df..7536b35 100644

+ index c49a936..c82fd3c 100644

  --- a/tests/integration/test_install_basic.py

  +++ b/tests/integration/test_install_basic.py

- @@ -31,7 +31,7 @@ def test_basic_setup(PipenvInstance, pypi):

+ @@ -28,7 +28,7 @@ def test_basic_setup(PipenvInstance, pypi):

   

   

   @pytest.mark.install
@@ -74,18 +82,18 @@ 

  +@pytest.mark.rpmfail

   def test_basic_install(PipenvInstance, pypi):

       with PipenvInstance(pypi=pypi) as p:

-          c = p.pipenv('install requests')

- @@ -44,8 +44,8 @@ def test_basic_install(PipenvInstance, pypi):

-          assert 'certifi' in p.lockfile['default']

+          c = p.pipenv("install requests")

+ @@ -41,8 +41,8 @@ def test_basic_install(PipenvInstance, pypi):

+          assert "certifi" in p.lockfile["default"]

   

   

  +@pytest.mark.rpmfail

   @pytest.mark.install

  -@flaky

   def test_mirror_install(PipenvInstance, pypi):

-      with temp_environ(), PipenvInstance(chdir=True) as p:

-          mirror_url = os.environ.pop('PIPENV_TEST_INDEX', "https://pypi.python.org/simple")

- @@ -93,7 +93,7 @@ def test_complex_lock(PipenvInstance, pypi):

+      with temp_environ(), PipenvInstance(chdir=True, pypi=pypi) as p:

+          mirror_url = os.environ.pop(

+ @@ -92,7 +92,7 @@ def test_complex_lock(PipenvInstance, pypi):

   

   @pytest.mark.dev

   @pytest.mark.run
@@ -93,8 +101,8 @@ 

  +@pytest.mark.rpmfail

   def test_basic_dev_install(PipenvInstance, pypi):

       with PipenvInstance(pypi=pypi) as p:

-          c = p.pipenv('install requests --dev')

- @@ -111,7 +111,7 @@ def test_basic_dev_install(PipenvInstance, pypi):

+          c = p.pipenv("install requests --dev")

+ @@ -110,7 +110,7 @@ def test_basic_dev_install(PipenvInstance, pypi):

   

   @pytest.mark.dev

   @pytest.mark.install
@@ -103,7 +111,7 @@ 

   def test_install_without_dev(PipenvInstance, pypi):

       """Ensure that running `pipenv install` doesn't install dev packages"""

       with PipenvInstance(pypi=pypi, chdir=True) as p:

- @@ -137,7 +137,7 @@ pytz = "*"

+ @@ -136,7 +136,7 @@ pytz = "*"

   

   

   @pytest.mark.install
@@ -111,8 +119,8 @@ 

  +@pytest.mark.rpmfail

   def test_install_without_dev_section(PipenvInstance, pypi):

       with PipenvInstance(pypi=pypi) as p:

-          with open(p.pipfile_path, 'w') as f:

- @@ -158,7 +158,7 @@ six = "*"

+          with open(p.pipfile_path, "w") as f:

+ @@ -157,7 +157,7 @@ six = "*"

   

   @pytest.mark.extras

   @pytest.mark.install
@@ -120,8 +128,8 @@ 

  +@pytest.mark.rpmfail

   def test_extras_install(PipenvInstance, pypi):

       with PipenvInstance(pypi=pypi, chdir=True) as p:

-          c = p.pipenv('install requests[socks]')

- @@ -175,7 +175,7 @@ def test_extras_install(PipenvInstance, pypi):

+          c = p.pipenv("install requests[socks]")

+ @@ -174,7 +174,7 @@ def test_extras_install(PipenvInstance, pypi):

   

   @pytest.mark.install

   @pytest.mark.pin
@@ -129,8 +137,8 @@ 

  +@pytest.mark.rpmfail

   def test_windows_pinned_pipfile(PipenvInstance, pypi):

       with PipenvInstance(pypi=pypi) as p:

-          with open(p.pipfile_path, 'w') as f:

- @@ -193,7 +193,7 @@ tablib = "<0.12"

+          with open(p.pipfile_path, "w") as f:

+ @@ -192,7 +192,7 @@ requests = "==2.19.1"

   @pytest.mark.install

   @pytest.mark.resolver

   @pytest.mark.backup_resolver
@@ -138,8 +146,8 @@ 

  +@pytest.mark.rpmfail

   def test_backup_resolver(PipenvInstance, pypi):

       with PipenvInstance(pypi=pypi) as p:

-          with open(p.pipfile_path, 'w') as f:

- @@ -210,7 +210,7 @@ def test_backup_resolver(PipenvInstance, pypi):

+          with open(p.pipfile_path, "w") as f:

+ @@ -209,7 +209,7 @@ def test_backup_resolver(PipenvInstance, pypi):

   

   @pytest.mark.run

   @pytest.mark.alt
@@ -147,16 +155,16 @@ 

  +@pytest.mark.rpmfail

   def test_alternative_version_specifier(PipenvInstance, pypi):

       with PipenvInstance(pypi=pypi) as p:

-          with open(p.pipfile_path, 'w') as f:

- @@ -300,6 +300,7 @@ tablib = "<0.12"

-          assert 'requests' not in p.lockfile['default']

+          with open(p.pipfile_path, "w") as f:

+ @@ -324,6 +324,7 @@ tablib = "<0.12"

+          assert "requests" not in p.lockfile["default"]

   

   

  +@pytest.mark.rpmfail

   @pytest.mark.cli

   @pytest.mark.clean

   def test_clean_on_empty_venv(PipenvInstance, pypi):

- @@ -308,6 +309,7 @@ def test_clean_on_empty_venv(PipenvInstance, pypi):

+ @@ -332,6 +333,7 @@ def test_clean_on_empty_venv(PipenvInstance, pypi):

           assert c.return_code == 0

   

   
@@ -164,8 +172,8 @@ 

   @pytest.mark.install

   def test_install_does_not_extrapolate_environ(PipenvInstance, pypi):

       """Ensure environment variables are not expanded in lock file.

- @@ -365,6 +367,7 @@ def test_install_venv_project_directory(PipenvInstance, pypi):

-              assert Path(project.virtualenv_location).joinpath('.project').exists()

+ @@ -396,6 +398,7 @@ def test_install_venv_project_directory(PipenvInstance, pypi):

+              assert venv_loc.joinpath(".project").exists()

   

   

  +@pytest.mark.rpmfail
@@ -173,10 +181,10 @@ 

   @pytest.mark.system

   def test_system_and_deploy_work(PipenvInstance, pypi):

  diff --git a/tests/integration/test_install_markers.py b/tests/integration/test_install_markers.py

- index 58f29f2..767d830 100644

+ index 0967026..e40d8c5 100644

  --- a/tests/integration/test_install_markers.py

  +++ b/tests/integration/test_install_markers.py

- @@ -64,7 +64,7 @@ depends-on-marked-package = "*"

+ @@ -62,7 +62,7 @@ depends-on-marked-package = "*"

   @pytest.mark.run

   @pytest.mark.alt

   @pytest.mark.install
@@ -185,7 +193,7 @@ 

   def test_specific_package_environment_markers(PipenvInstance, pypi):

   

       with PipenvInstance(pypi=pypi) as p:

- @@ -86,7 +86,7 @@ requests = {version = "*", os_name = "== 'splashwear'"}

+ @@ -84,7 +84,7 @@ requests = {version = "*", os_name = "== 'splashwear'"}

   

   

   @pytest.mark.markers
@@ -194,7 +202,7 @@ 

   def test_top_level_overrides_environment_markers(PipenvInstance, pypi):

       """Top-level environment markers should take precedence.

       """

- @@ -107,7 +107,7 @@ funcsigs = {version = "*", os_name = "== 'splashwear'"}

+ @@ -105,7 +105,7 @@ funcsigs = {version = "*", os_name = "== 'splashwear'"}

   

   @pytest.mark.markers

   @pytest.mark.install
@@ -203,7 +211,7 @@ 

   def test_global_overrides_environment_markers(PipenvInstance, pypi):

       """Empty (unconditional) dependency should take precedence.

       If a dependency is specified without environment markers, it should

- @@ -132,7 +132,7 @@ funcsigs = "*"

+ @@ -130,7 +130,7 @@ funcsigs = "*"

   

   @pytest.mark.lock

   @pytest.mark.complex
@@ -212,7 +220,7 @@ 

   @py3_only

   @skip_py37

   def test_resolver_unique_markers(PipenvInstance, pypi):

- @@ -156,7 +156,7 @@ def test_resolver_unique_markers(PipenvInstance, pypi):

+ @@ -154,7 +154,7 @@ def test_resolver_unique_markers(PipenvInstance, pypi):

   

   

   @pytest.mark.project
@@ -222,10 +230,10 @@ 

       with PipenvInstance(chdir=True, pypi=pypi) as p:

           with temp_environ():

  diff --git a/tests/integration/test_install_twists.py b/tests/integration/test_install_twists.py

- index adce703..aa574da 100644

+ index 055c39b..7bc701d 100644

  --- a/tests/integration/test_install_twists.py

  +++ b/tests/integration/test_install_twists.py

- @@ -74,7 +74,7 @@ def test_e_dot(PipenvInstance, pip_src_dir):

+ @@ -138,7 +138,7 @@ def test_e_dot(PipenvInstance, pip_src_dir):

   

   

   @pytest.mark.install
@@ -233,8 +241,8 @@ 

  +@pytest.mark.rpmfail

   def test_multiprocess_bug_and_install(PipenvInstance, pypi):

       with temp_environ():

-          os.environ['PIPENV_MAX_SUBPROCESS'] = '2'

- @@ -102,7 +102,7 @@ urllib3 = "*"

+          os.environ["PIPENV_MAX_SUBPROCESS"] = "2"

+ @@ -166,7 +166,7 @@ urllib3 = "*"

   

   @pytest.mark.sequential

   @pytest.mark.install
@@ -243,7 +251,7 @@ 

   def test_sequential_mode(PipenvInstance, pypi):

   

       with PipenvInstance(pypi=pypi, chdir=True) as p:

- @@ -126,6 +126,7 @@ pytz = "*"

+ @@ -190,6 +190,7 @@ pytz = "*"

           assert c.return_code == 0

   

   
@@ -251,7 +259,7 @@ 

   @pytest.mark.install

   @pytest.mark.run

   def test_normalize_name_install(PipenvInstance, pypi):

- @@ -159,7 +160,7 @@ Requests = "==2.14.0"   # Inline comment

+ @@ -224,7 +225,7 @@ Requests = "==2.14.0"   # Inline comment

   @pytest.mark.files

   @pytest.mark.resolver

   @pytest.mark.eggs
@@ -260,25 +268,25 @@ 

   def test_local_package(PipenvInstance, pip_src_dir, pypi, testsroot):

       """This test ensures that local packages (directories with a setup.py)

       installed in editable mode have their dependencies resolved as well"""

- @@ -180,7 +181,7 @@ def test_local_package(PipenvInstance, pip_src_dir, pypi, testsroot):

+ @@ -249,7 +250,7 @@ def test_local_package(PipenvInstance, pip_src_dir, pypi, testsroot):

   

   

   @pytest.mark.files

  -@flaky

  +@pytest.mark.rpmfail

   def test_local_zipfiles(PipenvInstance, pypi, testsroot):

-      file_name = 'tablib-0.12.1.tar.gz'

+      file_name = "requests-2.19.1.tar.gz"

       # Not sure where travis/appveyor run tests from

- @@ -205,7 +206,7 @@ def test_local_zipfiles(PipenvInstance, pypi, testsroot):

+ @@ -274,7 +275,7 @@ def test_local_zipfiles(PipenvInstance, pypi, testsroot):

   

   

   @pytest.mark.files

  -@flaky

  +@pytest.mark.rpmfail

   def test_relative_paths(PipenvInstance, pypi, testsroot):

-      file_name = 'tablib-0.12.1.tar.gz'

-      source_path = os.path.abspath(os.path.join(testsroot, 'test_artifacts', file_name))

- @@ -228,7 +229,7 @@ def test_relative_paths(PipenvInstance, pypi, testsroot):

+      file_name = "requests-2.19.1.tar.gz"

+      source_path = os.path.abspath(os.path.join(testsroot, "test_artifacts", file_name))

+ @@ -297,7 +298,7 @@ def test_relative_paths(PipenvInstance, pypi, testsroot):

   

   @pytest.mark.install

   @pytest.mark.local_file
@@ -286,12 +294,12 @@ 

  +@pytest.mark.rpmfail

   def test_install_local_file_collision(PipenvInstance, pypi):

       with PipenvInstance(pypi=pypi) as p:

-          target_package = 'alembic'

+          target_package = "alembic"

  diff --git a/tests/integration/test_install_uri.py b/tests/integration/test_install_uri.py

- index d27d690..7822ace 100644

+ index c591560..20e3b69 100644

  --- a/tests/integration/test_install_uri.py

  +++ b/tests/integration/test_install_uri.py

- @@ -10,7 +10,7 @@ from .fixtures.plugin import pypi

+ @@ -8,7 +8,7 @@ from pipenv._compat import Path

   @pytest.mark.vcs

   @pytest.mark.install

   @pytest.mark.needs_internet
@@ -299,8 +307,8 @@ 

  +@pytest.mark.rpmfail

   def test_basic_vcs_install(PipenvInstance, pip_src_dir, pypi):

       with PipenvInstance(pypi=pypi, chdir=True) as p:

-          c = p.pipenv('install git+https://github.com/benjaminp/six.git@1.11.0#egg=six')

- @@ -27,7 +27,7 @@ def test_basic_vcs_install(PipenvInstance, pip_src_dir, pypi):

+          c = p.pipenv("install git+https://github.com/benjaminp/six.git@1.11.0#egg=six")

+ @@ -61,7 +61,7 @@ def test_ssh_vcs_install(PipenvInstance, pip_src_dir, pypi):

   @pytest.mark.files

   @pytest.mark.urls

   @pytest.mark.needs_internet
@@ -308,17 +316,8 @@ 

  +@pytest.mark.rpmfail

   def test_urls_work(PipenvInstance, pypi, pip_src_dir):

       with PipenvInstance(pypi=pypi) as p:

-          c = p.pipenv('install https://github.com/divio/django-cms/archive/release/3.4.x.zip')

- @@ -79,7 +79,7 @@ def test_local_vcs_urls_work(PipenvInstance, pypi):

-  @pytest.mark.files

-  @pytest.mark.urls

-  @pytest.mark.needs_internet

- -@flaky

- +@pytest.mark.rpmfail

-  def test_install_remote_requirements(PipenvInstance, pypi):

-      with PipenvInstance(pypi=pypi) as p:

-          # using a github hosted requirements.txt file

- @@ -101,7 +101,7 @@ def test_install_remote_requirements(PipenvInstance, pypi):

+          c = p.pipenv(

+ @@ -115,7 +115,7 @@ def test_local_vcs_urls_work(PipenvInstance, pypi, tmpdir):

   @pytest.mark.vcs

   @pytest.mark.install

   @pytest.mark.needs_internet
@@ -326,8 +325,8 @@ 

  +@pytest.mark.rpmfail

   def test_editable_vcs_install(PipenvInstance, pip_src_dir, pypi):

       with PipenvInstance(pypi=pypi) as p:

-          c = p.pipenv('install -e git+https://github.com/requests/requests.git#egg=requests')

- @@ -120,7 +120,7 @@ def test_editable_vcs_install(PipenvInstance, pip_src_dir, pypi):

+          c = p.pipenv(

+ @@ -136,7 +136,7 @@ def test_editable_vcs_install(PipenvInstance, pip_src_dir, pypi):

   @pytest.mark.vcs

   @pytest.mark.tablib

   @pytest.mark.needs_internet
@@ -337,10 +336,10 @@ 

       # This uses the real PyPI since we need Internet to access the Git

       # dependency anyway.

  diff --git a/tests/integration/test_lock.py b/tests/integration/test_lock.py

- index 95de475..366567d 100644

+ index 2b52080..91cd195 100644

  --- a/tests/integration/test_lock.py

  +++ b/tests/integration/test_lock.py

- @@ -26,6 +26,7 @@ RandomWords = "*"

+ @@ -23,6 +23,7 @@ RandomWords = "*"

           assert p.lockfile['default']['randomwords']['version'] == '==0.2.1'

   

   
@@ -348,7 +347,7 @@ 

   @pytest.mark.lock

   @pytest.mark.requirements

   def test_lock_requirements_file(PipenvInstance, pypi):

- @@ -56,6 +57,7 @@ flask = "==0.12.2"

+ @@ -53,6 +54,7 @@ flask = "==0.12.2"

               assert req in d.out

   

   
@@ -356,7 +355,7 @@ 

   @pytest.mark.lock

   def test_lock_keep_outdated(PipenvInstance, pypi):

   

- @@ -128,6 +130,7 @@ requests = {git = "https://github.com/requests/requests.git"}

+ @@ -125,6 +127,7 @@ requests = {git = "https://github.com/requests/requests.git"}

           assert 'python_dateutil' not in lock['develop']

   

   
@@ -364,7 +363,7 @@ 

   @pytest.mark.lock

   @pytest.mark.requirements

   def test_lock_with_prereleases(PipenvInstance, pypi):

- @@ -152,7 +155,7 @@ allow_prereleases = true

+ @@ -149,7 +152,7 @@ allow_prereleases = true

   @pytest.mark.complex

   @pytest.mark.maya

   @pytest.mark.needs_internet
@@ -373,7 +372,7 @@ 

   def test_complex_deps_lock_and_install_properly(PipenvInstance, pip_src_dir, pypi):

       # This uses the real PyPI because Maya has too many dependencies...

       with PipenvInstance(chdir=True, pypi=pypi) as p:

- @@ -295,6 +298,7 @@ requests = "*"

+ @@ -314,6 +317,7 @@ requests = "*"

           assert '--extra-index-url {}'.format(mirror_url) not in c.out.strip()

   

   
@@ -382,10 +381,10 @@ 

   @pytest.mark.index

   def test_lock_updated_source(PipenvInstance, pypi):

  diff --git a/tests/integration/test_pipenv.py b/tests/integration/test_pipenv.py

- index 75a0a9d..668c3ad 100644

+ index 7824980..70d1952 100644

  --- a/tests/integration/test_pipenv.py

  +++ b/tests/integration/test_pipenv.py

- @@ -28,6 +28,7 @@ def test_code_import_manual(PipenvInstance):

+ @@ -26,6 +26,7 @@ def test_code_import_manual(PipenvInstance):

           assert 'requests' in p.pipfile['packages']

   

   
@@ -393,8 +392,16 @@ 

   @pytest.mark.lock

   @pytest.mark.deploy

   @pytest.mark.cli

+ @@ -60,6 +61,7 @@ requests = "==2.14.0"

+          assert c.return_code > 0

+  

+  

+ +@pytest.mark.rpmfail

+  @pytest.mark.update

+  @pytest.mark.lock

+  def test_update_locks(PipenvInstance, pypi):

  diff --git a/tests/integration/test_project.py b/tests/integration/test_project.py

- index 5deccc8..2ec08ef 100644

+ index 5e1bafb..2db29fc 100644

  --- a/tests/integration/test_project.py

  +++ b/tests/integration/test_project.py

  @@ -29,6 +29,7 @@ pytz = "*"
@@ -442,11 +449,11 @@ 

   def test_scripts(PipenvInstance):

       with PipenvInstance(chdir=True) as p:

  diff --git a/tests/integration/test_sync.py b/tests/integration/test_sync.py

- index 0799154..8fe62a8 100644

+ index 2ef06dd..3533fb3 100644

  --- a/tests/integration/test_sync.py

  +++ b/tests/integration/test_sync.py

- @@ -20,6 +20,7 @@ def test_sync_error_without_lockfile(PipenvInstance, pypi):

-          assert 'Pipfile.lock is missing!' in c.err

+ @@ -18,6 +18,7 @@ def test_sync_error_without_lockfile(PipenvInstance, pypi):

+          assert 'Pipfile.lock not found!' in c.err

   

   

  +@pytest.mark.rpmfail
@@ -454,18 +461,18 @@ 

   @pytest.mark.lock

   def test_mirror_lock_sync(PipenvInstance, pypi):

  diff --git a/tests/integration/test_uninstall.py b/tests/integration/test_uninstall.py

- index dffbdbc..fffe440 100644

+ index 5f493ca..c84f1fc 100644

  --- a/tests/integration/test_uninstall.py

  +++ b/tests/integration/test_uninstall.py

- @@ -8,6 +8,7 @@ import pytest

-  from .fixtures.plugin import pypi

+ @@ -6,6 +6,7 @@ from pipenv.utils import temp_environ

+  import pytest

   

   

  +@pytest.mark.rpmfail

   @pytest.mark.run

   @pytest.mark.uninstall

   @pytest.mark.install

- @@ -35,6 +36,7 @@ def test_uninstall(PipenvInstance, pypi):

+ @@ -33,6 +34,7 @@ def test_uninstall(PipenvInstance, pypi):

           assert c.return_code > 0

   

   
@@ -481,15 +488,15 @@ 

   @pytest.mark.files

   @pytest.mark.uninstall

   @pytest.mark.install

- @@ -95,6 +98,7 @@ def test_uninstall_all_local_files(PipenvInstance, testsroot):

-          assert 'tablib' not in p.pipfile['packages']

+ @@ -97,6 +100,7 @@ def test_uninstall_all_local_files(PipenvInstance, testsroot):

+          assert "requests" in p.pipfile["packages"]

   

   

  +@pytest.mark.rpmfail

   @pytest.mark.run

   @pytest.mark.uninstall

   @pytest.mark.install

- @@ -129,6 +133,7 @@ def test_uninstall_all_dev(PipenvInstance, pypi):

+ @@ -131,6 +135,7 @@ def test_uninstall_all_dev(PipenvInstance, pypi):

           assert c.return_code == 0

   

   
@@ -498,22 +505,22 @@ 

   @pytest.mark.run

   def test_normalize_name_uninstall(PipenvInstance, pypi):

  diff --git a/tests/unit/test_utils.py b/tests/unit/test_utils.py

- index 7fafdaa..6dc75f4 100644

+ index 422c100..4a35c5d 100644

  --- a/tests/unit/test_utils.py

  +++ b/tests/unit/test_utils.py

- @@ -221,6 +221,7 @@ class TestUtils:

+ @@ -215,6 +215,7 @@ class TestUtils:

           assert pipenv.utils.is_valid_url(not_url) is False

   

       @pytest.mark.utils

  +    @pytest.mark.rpmfail

       def test_download_file(self):

-          url = "https://github.com/kennethreitz/pipenv/blob/master/README.rst"

-          output = "test_download.rst"

- @@ -269,6 +270,7 @@ twine = "*"

+          url = "https://github.com/kennethreitz/pipenv/blob/master/README.md"

+          output = "test_download.md"

+ @@ -263,6 +264,7 @@ twine = "*"

       def test_win_normalize_drive(self, input_path, expected):

           assert pipenv.utils.normalize_drive(input_path) == expected

   

  +    @pytest.mark.rpmfail

       @pytest.mark.utils

       @pytest.mark.parametrize(

-          'input_path, expected',

+          "input_path, expected",

file modified
+110 -115
@@ -3,18 +3,15 @@ 

  # times before filling bugz.

  

  Name:           pipenv 

- Version:        2018.7.1

- Release:        2%{?dist}

+ Version:        2018.11.14

+ Release:        1%{?dist}

  Summary:        The higher level Python packaging tool

  

  # Pipenv source code is MIT, there are bundled packages having different licenses

  

- # pipenv/patched/contoml/ is MIT

  # pipenv/patched/crayons.py is MIT

- # pipenv/patched/pew/ is MIT

  # pipenv/patched/pipfile/ is (ASL 2.0 or BSD)

  # pipenv/patched/piptools/ is BSD

- # pipenv/patched/prettytoml/ is MIT

  # pipenv/patched/safety/ is MIT

  # pipenv/patched/safety.zip is MIT

  
@@ -32,9 +29,10 @@ 

  # pipenv/patched/notpip/_vendor/lockfile/ is Python

  # pipenv/patched/notpip/_vendor/msgpack/ is ASL 2.0

  # pipenv/patched/notpip/_vendor/packaging/ is (ASL 2.0 or BSD)

+ # pipenv/patched/notpip/_vendor/pep517/ is MIT

  # pipenv/patched/notpip/_vendor/pkg_resources/ is MIT 

  # pipenv/patched/notpip/_vendor/progress/ is ISC

- # pipenv/patched/notpip/_vendor/pyparsing is MIT

+ # pipenv/patched/notpip/_vendor/pyparsing.py is MIT

  # pipenv/patched/notpip/_vendor/pytoml/ is MIT

  # pipenv/patched/notpip/_vendor/requests/ is ASL 2.0

  # pipenv/patched/notpip/_vendor/retrying.py is ASL 2.0
@@ -42,30 +40,30 @@ 

  # pipenv/patched/notpip/_vendor/urllib3/ is MIT

  # pipenv/patched/notpip/_vendor/webencodings/ is ASL 2.0

  

- # pipenv/vendor/blindspin/ is MIT

  # pipenv/vendor/click_didyoumean/ is MIT

+ # pipenv/vendor/cursor is CC-BY-SA

  # pipenv/vendor/delegator.py is MIT

- # pipenv/vendor/distlib/ is Python

- # pipenv/vendor/dotenv/ is BSD

+ # pipenv/vendor/passa is ISC

  # pipenv/vendor/pipdeptree.py is MIT

  # pipenv/vendor/pipreqs/ is Apache2.0

+ # pipenv/vendor/pip_shims/ is ISC

+ # pipenv/vendor/plette/ is ISC

  # pipenv/vendor/pythonfinder/ is MIT

- # pipenv/vendor/requirements/ is BSD

  # pipenv/vendor/requirementslib/ is (Apache2.0 or BSD)

- # pipenv/vendor/shellingham/ is ISC

+ # pipenv/vendor/resolvelib/ is MIT

  # pipenv/vendor/shutilwhich/ is BSD

- # pipenv/vendor/yarg/ is MIT

+ # pipenv/vendor/tomlkit/ is MIT

+ # pipenv/vendor/vistir/ is ISC

+ # pipenv/vendor/yaspin/ is MIT

  

- License:        MIT and BSD and ASL 2.0 and LGPLv2+ and Python and ISC and MPLv2.0 and (ASL 2.0 or BSD)

+ License:        MIT and BSD and ASL 2.0 and LGPLv2+ and Python and ISC and MPLv2.0 and (ASL 2.0 or BSD) and CC-BY-SA

  URL:            https://github.com/pypa/pipenv

  Source0:        https://github.com/pypa/%{name}/archive/v%{version}/%{name}-%{version}.tar.gz

  

- # Add imports of pypi fixtures, which are moved to tests/integration

- # in prep section

- Patch1:         0001-pypi-fixtures.patch

- 

  # We unbundle a plenty of packages from vendor directory

  # 'from pipenv.vendor' imports must be corrected

+ # Also adds "pytest_pypi.plugin import pypi, ..." to conftest,

+ # as we don't have that plugin installed and it is not autodiscovered

  Patch2:         0002-fix-imports-of-unbundled-pkgs.patch

  

  # A couple of tests fails in the mock environment, add option
@@ -105,27 +103,33 @@ 

  BuildRequires:  python3dist(appdirs)

  BuildRequires:  python3dist(attrs)

  BuildRequires:  python3dist(blindspin) >= 2.0.1

- BuildRequires:  python3dist(click)

- BuildRequires:  python3dist(click-completion)

- BuildRequires:  python3dist(colorama)

+ BuildRequires:  python3dist(cached-property) >= 1.3

+ BuildRequires:  python3dist(cerberus) >= 1.2

  BuildRequires:  python3dist(certifi)

- BuildRequires:  python3dist(distlib)

+ BuildRequires:  python3dist(click-completion)

+ BuildRequires:  python3dist(click) >= 7.0

+ BuildRequires:  python3dist(colorama) >= 0.3.9

+ BuildRequires:  python3dist(distlib) >= 0.2.7

  BuildRequires:  python3dist(docopt) >= 0.6.2

  BuildRequires:  python3dist(first) >= 2.0.1

- BuildRequires:  python3dist(iso8601)

- BuildRequires:  python3dist(jinja2)

- BuildRequires:  python3dist(markupsafe)

- BuildRequires:  python3dist(packaging)

- BuildRequires:  python3dist(parse)

- BuildRequires:  python3dist(pexpect)

- BuildRequires:  python3dist(ptyprocess)

- BuildRequires:  python3dist(pyparsing)

- BuildRequires:  python3dist(pytoml)

- BuildRequires:  python3dist(requests) > 2.18.0

+ BuildRequires:  python3dist(chardet) >= 2.0.1

+ BuildRequires:  python3dist(iso8601) >= 0.1.11

+ BuildRequires:  python3dist(jinja2) >= 2.10

+ BuildRequires:  python3dist(markupsafe) >= 1.0

+ BuildRequires:  python3dist(packaging) >= 17.1

+ BuildRequires:  python3dist(parse) >= 1.8.4

+ BuildRequires:  python3dist(pexpect) >= 4.6

+ BuildRequires:  python3dist(ptyprocess) >= 0.6

+ BuildRequires:  python3dist(pyparsing) >= 2.2

+ BuildRequires:  python3dist(python-dotenv) >= 0.9.1

+ BuildRequires:  python3dist(requests) >= 2.20

+ BuildRequires:  python3dist(scandir) >= 1.9

+ BuildRequires:  python3dist(semver) >= 2.8.1

+ BuildRequires:  python3dist(shellingham) >= 1.2.7

  BuildRequires:  python3dist(six)

- BuildRequires:  python3dist(scandir) >= 1.7

- BuildRequires:  python3dist(semver)

- BuildRequires:  python3dist(toml)

+ BuildRequires:  python3dist(toml) >= 0.10.0

+ BuildRequires:  python3dist(urllib3)

+ BuildRequires:  python3dist(yarg) >= 0.1.9

  

  %{?python_provide:%python_provide python3-%{name}}

  
@@ -136,77 +140,83 @@ 

  Requires:       python3dist(appdirs)

  Requires:       python3dist(attrs)

  Requires:       python3dist(blindspin) >= 2.0.1

- Requires:       python3dist(click)

- Requires:       python3dist(click-completion)

- Requires:       python3dist(colorama)

+ Requires:       python3dist(cached-property) >= 1.3

+ Requires:       python3dist(cerberus) >= 1.2

  Requires:       python3dist(certifi)

- Requires:       python3dist(distlib)

+ Requires:       python3dist(click-completion)

+ Requires:       python3dist(click) >= 7.0

+ Requires:       python3dist(colorama) >= 0.3.9

+ Requires:       python3dist(distlib) >= 0.2.7

  Requires:       python3dist(docopt) >= 0.6.2

  Requires:       python3dist(first) >= 2.0.1

- Requires:       python3dist(iso8601)

- Requires:       python3dist(jinja2)

- Requires:       python3dist(markupsafe)

- Requires:       python3dist(packaging)

- Requires:       python3dist(parse)

- Requires:       python3dist(pexpect)

- Requires:       python3dist(ptyprocess)

- Requires:       python3dist(pyparsing)

- Requires:       python3dist(pytoml)

- Requires:       python3dist(requests) > 2.18.0

+ Requires:       python3dist(chardet) >= 2.0.1

+ Requires:       python3dist(iso8601) >= 0.1.11

+ Requires:       python3dist(jinja2) >= 2.10

+ Requires:       python3dist(markupsafe) >= 1.0

+ Requires:       python3dist(packaging) >= 17.1

+ Requires:       python3dist(parse) >= 1.8.4

+ Requires:       python3dist(pexpect) >= 4.6

+ Requires:       python3dist(ptyprocess) >= 0.6

+ Requires:       python3dist(pyparsing) >= 2.2

+ Requires:       python3dist(python-dotenv) >= 0.9.1

+ Requires:       python3dist(requests) >= 2.20

+ Requires:       python3dist(scandir) >= 1.9

+ Requires:       python3dist(semver) >= 2.8.1

+ Requires:       python3dist(shellingham) >= 1.2.7

  Requires:       python3dist(six)

- Requires:       python3dist(scandir) >= 1.7

- Requires:       python3dist(semver)

- Requires:       python3dist(toml)

+ Requires:       python3dist(toml) >= 0.10.0

+ Requires:       python3dist(urllib3)

+ Requires:       python3dist(yarg) >= 0.1.9

  

  # Following packages bundled under vendor directory are not

  # packaged for Fedora yet.

  # TODO package for Fedora and unbundle

  Provides:       bundled(python3dist(click-didyoumean)) == 0.0.3

- Provides:       bundled(python3dist(delegator)) == 0.1.0

- Provides:       bundled(python3dist(pipdeptree))

+ Provides:       bundled(python3dist(cursor)) == 1.2.0

+ Provides:       bundled(python3dist(delegator.py)) == 0.1.1

+ Provides:       bundled(python3dist(passa))

+ Provides:       bundled(python3dist(pipdeptree)) == 0.13.0

  Provides:       bundled(python3dist(pipreqs)) == 0.4.9

- Provides:       bundled(python3dist(python-dotenv)) == 0.6.2

- Provides:       bundled(python3dist(pythonfinder))

- Provides:       bundled(python3dist(requirementslib)) == 1.0.9

- Provides:       bundled(python3dist(requirements-parser)) == 0.2.0

- Provides:       bundled(python3dist(requirements)) == 0.2.0

- Provides:       bundled(python3dist(shellingham)) == 1.1.0

+ Provides:       bundled(python3dist(pip-shims)) == 0.3.2

+ Provides:       bundled(python3dist(plette)) == 0.2.2

+ Provides:       bundled(python3dist(pythonfinder)) == 1.1.9.post1

+ Provides:       bundled(python3dist(requirementslib)) == 1.3.1.post1

+ Provides:       bundled(python3dist(resolvelib)) == 0.2.2

  Provides:       bundled(python3dist(shutilwhich)) == 1.1.0

- Provides:       bundled(python3dist(yarg)) == 0.1.9

+ Provides:       bundled(python3dist(tomlkit)) == 0.5.2

+ Provides:       bundled(python3dist(vistir)) == 0.2.4

+ Provides:       bundled(python3dist(yaspin)) == 0.14.0

  

  # The sources contains patched versions of following packages:

- Provides:       bundled(python3dist(contoml))

  Provides:       bundled(python3dist(crayons)) == 0.1.2

- Provides:       bundled(python3dist(pew)) == 1.1.5

  Provides:       bundled(python3dist(pipfile)) == 0.0.2

- Provides:       bundled(python3dist(pip-tools)) == 2.0.1

- Provides:       bundled(python3dist(prettytoml)) == 0.3

- Provides:       bundled(python3dist(pip)) == 10.0.1

- Provides:       bundled(python3dist(piptools)) == 2.0.2

+ Provides:       bundled(python3dist(pip-tools)) == 3.1.0

+ Provides:       bundled(python3dist(pip)) == 18.1

  Provides:       bundled(python3dist(safety))

  

- # The packages bundled with pip:

+ # The packages bundled with pip (18.1):

  Provides:       bundled(python3dist(appdirs)) = 1.4.3

  Provides:       bundled(python3dist(distlib)) = 0.2.7

- Provides:       bundled(python3dist(distro)) = 1.2.0

+ Provides:       bundled(python3dist(distro)) = 1.3.0

  Provides:       bundled(python3dist(html5lib)) = 1.0.1

  Provides:       bundled(python3dist(six)) = 1.11.0

  Provides:       bundled(python3dist(colorama)) = 0.3.9

- Provides:       bundled(python3dist(CacheControl)) = 0.12.4

+ Provides:       bundled(python3dist(CacheControl)) = 0.12.5

  Provides:       bundled(python3dist(msgpack-python)) = 0.5.6

  Provides:       bundled(python3dist(lockfile)) = 0.12.2

- Provides:       bundled(python3dist(progress)) = 1.3

- Provides:       bundled(python3dist(ipaddress)) = 1.0.19

- Provides:       bundled(python3dist(packaging)) = 17.1

- Provides:       bundled(python3dist(pyparsing)) = 2.2.0

- Provides:       bundled(python3dist(pytoml)) = 0.1.14

+ Provides:       bundled(python3dist(progress)) = 1.4

+ Provides:       bundled(python3dist(ipaddress)) = 1.0.22

+ Provides:       bundled(python3dist(packaging)) = 18.0

+ Provides:       bundled(python3dist(pep517)) = 0.2

+ Provides:       bundled(python3dist(pyparsing)) = 2.2.1

+ Provides:       bundled(python3dist(pytoml)) = 0.1.19

  Provides:       bundled(python3dist(retrying)) = 1.3.3

- Provides:       bundled(python3dist(requests)) = 2.18.4

+ Provides:       bundled(python3dist(requests)) = 2.19.1

  Provides:       bundled(python3dist(chardet)) = 3.0.4

- Provides:       bundled(python3dist(idna)) = 2.6

- Provides:       bundled(python3dist(urllib3)) = 1.22

- Provides:       bundled(python3dist(certifi)) = 2018.1.18

- Provides:       bundled(python3dist(setuptools)) = 39.1.0

+ Provides:       bundled(python3dist(idna)) = 2.7

+ Provides:       bundled(python3dist(urllib3)) = 1.23

+ Provides:       bundled(python3dist(certifi)) = 2018.8.24

+ Provides:       bundled(python3dist(setuptools)) = 40.4.3

  Provides:       bundled(python3dist(webencodings)) = 0.5.1

  

  %description
@@ -227,7 +237,8 @@ 

  %autosetup -p1 -n %{name}-%{version}

  

  # Remove packages that are already packaged for Fedora from vendor directory

- UNBUNDLED="appdirs attr blindspin certifi chardet click click_completion colorama distlib docopt first idna iso8601 jinja2 markupsafe packaging parse pathlib2 pexpect ptyprocess pyparsing pytoml requests semver scandir six toml urllib3 backports"

+ # pathlib2 and backports are not needed on Python 3.6+

+ UNBUNDLED="appdirs attr blindspin cached_property cerberus click_completion click colorama distlib docopt first chardet iso8601 jinja2 markupsafe packaging parse pexpect ptyprocess pyparsing dotenv requests certifi idna urllib3 scandir semver shellingham six toml yarg pathlib2 backports"

  

  _vendordir="pipenv/vendor/"

  
@@ -241,11 +252,10 @@ 

      exit 1

    fi

    rm -rf $_vendordir$pkg".LICENSE"*

+   rm -rf $_vendordir${pkg/_/-}".LICENSE"*

  done

  

- mv tests/pytest-pypi/pytest_pypi tests/integration/fixtures

- rm -rf tests/pytest-pypi

-            

+ 

  %build

  %py3_build

  # generate html docs
@@ -285,9 +295,10 @@ 

  test -f %{_bindir}/virtualenv || ln -s %{_bindir}/virtualenv-3 check_path/virtualenv

  

  export PATH=$PWD/check_path:$PATH:%{buildroot}%{_bindir}

- export PYTHONPATH=$PWD/check_pythonpath

+ export PYTHONPATH=$PWD/check_pythonpath:$PWD/tests/pytest-pypi

  export PYPI_VENDOR_DIR="$(pwd)/tests/pypi/"

- pytest-3 -v -n auto -m "not rpmfail" tests

+ sed -i 's/-n auto//' pytest.ini # disable -n auto for now https://github.com/pytest-dev/pytest-xdist/issues/381

+ pytest-3 -v -m "not rpmfail" tests

  

  rm -rf check_pythonpath check_path

  
@@ -295,77 +306,61 @@ 

  %files

  %license LICENSE

  # for the sake of simplicity, files are listed twice. we know about it

- %license %{python3_sitelib}/%{name}/patched/contoml/LICENSE

  %license %{python3_sitelib}/%{name}/patched/crayons.LICENSE

  %license %{python3_sitelib}/%{name}/patched/notpip/LICENSE.txt

- %license %{python3_sitelib}/%{name}/patched/notpip/_vendor/appdirs.LICENSE.txt

  %license %{python3_sitelib}/%{name}/patched/notpip/_vendor/cachecontrol/LICENSE.txt

  %license %{python3_sitelib}/%{name}/patched/notpip/_vendor/certifi/LICENSE

  %license %{python3_sitelib}/%{name}/patched/notpip/_vendor/chardet/LICENSE

  %license %{python3_sitelib}/%{name}/patched/notpip/_vendor/colorama/LICENSE.txt

  %license %{python3_sitelib}/%{name}/patched/notpip/_vendor/distlib/LICENSE.txt

- %license %{python3_sitelib}/%{name}/patched/notpip/_vendor/distro.LICENSE

  %license %{python3_sitelib}/%{name}/patched/notpip/_vendor/html5lib/LICENSE

  %license %{python3_sitelib}/%{name}/patched/notpip/_vendor/idna/LICENSE.rst

- %license %{python3_sitelib}/%{name}/patched/notpip/_vendor/ipaddress.LICENSE

  %license %{python3_sitelib}/%{name}/patched/notpip/_vendor/lockfile/LICENSE

  %license %{python3_sitelib}/%{name}/patched/notpip/_vendor/msgpack/COPYING

  %license %{python3_sitelib}/%{name}/patched/notpip/_vendor/packaging/LICENSE

  %license %{python3_sitelib}/%{name}/patched/notpip/_vendor/packaging/LICENSE.APACHE

  %license %{python3_sitelib}/%{name}/patched/notpip/_vendor/packaging/LICENSE.BSD

+ %license %{python3_sitelib}/%{name}/patched/notpip/_vendor/pep517/LICENSE

  %license %{python3_sitelib}/%{name}/patched/notpip/_vendor/pkg_resources/LICENSE

  %license %{python3_sitelib}/%{name}/patched/notpip/_vendor/progress/LICENSE

- %license %{python3_sitelib}/%{name}/patched/notpip/_vendor/pyparsing.LICENSE

  %license %{python3_sitelib}/%{name}/patched/notpip/_vendor/pytoml/LICENSE

  %license %{python3_sitelib}/%{name}/patched/notpip/_vendor/requests/LICENSE

- %license %{python3_sitelib}/%{name}/patched/notpip/_vendor/retrying.LICENSE

- %license %{python3_sitelib}/%{name}/patched/notpip/_vendor/six.LICENSE

  %license %{python3_sitelib}/%{name}/patched/notpip/_vendor/urllib3/LICENSE.txt

  %license %{python3_sitelib}/%{name}/patched/notpip/_vendor/webencodings/LICENSE

- %license %{python3_sitelib}/%{name}/patched/pew/LICENSE

  %license %{python3_sitelib}/%{name}/patched/pipfile/LICENSE

  %license %{python3_sitelib}/%{name}/patched/pipfile/LICENSE.APACHE

  %license %{python3_sitelib}/%{name}/patched/pipfile/LICENSE.BSD

  %license %{python3_sitelib}/%{name}/patched/piptools/LICENSE

- %license %{python3_sitelib}/%{name}/patched/prettytoml/LICENSE

  %license %{python3_sitelib}/%{name}/patched/safety/LICENSE

  %license %{python3_sitelib}/%{name}/vendor/click_didyoumean/LICENSE

- %license %{python3_sitelib}/%{name}/vendor/delegator.py.LICENSE

- %license %{python3_sitelib}/%{name}/vendor/dotenv/LICENSE

- %license %{python3_sitelib}/%{name}/vendor/pipdeptree.LICENSE

+ %license %{python3_sitelib}/%{name}/vendor/cursor/LICENSE

+ %license %{python3_sitelib}/%{name}/vendor/passa/LICENSE

  %license %{python3_sitelib}/%{name}/vendor/pipreqs/LICENSE

+ %license %{python3_sitelib}/%{name}/vendor/pip_shims/LICENSE

+ %license %{python3_sitelib}/%{name}/vendor/plette/LICENSE

  %license %{python3_sitelib}/%{name}/vendor/pythonfinder/LICENSE.txt

  %license %{python3_sitelib}/%{name}/vendor/requirementslib/LICENSE

- %license %{python3_sitelib}/%{name}/vendor/requirementslib/LICENSE.APACHE

- %license %{python3_sitelib}/%{name}/vendor/requirementslib/LICENSE.BSD

- %license %{python3_sitelib}/%{name}/vendor/requirementslib/_vendor/pipfile/LICENSE

- %license %{python3_sitelib}/%{name}/vendor/requirementslib/_vendor/pipfile/LICENSE.APACHE

- %license %{python3_sitelib}/%{name}/vendor/requirementslib/_vendor/pipfile/LICENSE.BSD

- %license %{python3_sitelib}/%{name}/vendor/requirements/LICENSE.rst

- %license %{python3_sitelib}/%{name}/vendor/shellingham/LICENSE

+ %license %{python3_sitelib}/%{name}/vendor/resolvelib/LICENSE

  %license %{python3_sitelib}/%{name}/vendor/shutilwhich/LICENSE

- %license %{python3_sitelib}/%{name}/vendor/yarg/LICENSE

- 

- # We don't ship those requests:

- %exclude %{python3_sitelib}/%{name}/vendor/yarg/LICENSE-REQUESTS

+ %license %{python3_sitelib}/%{name}/vendor/tomlkit/LICENSE

+ %license %{python3_sitelib}/%{name}/vendor/vistir/LICENSE

+ %license %{python3_sitelib}/%{name}/vendor/yaspin/LICENSE

  

- # https://github.com/pypa/pipenv/issues/2678

- %exclude %{python3_sitelib}/%{name}/patched/piptools/LICENSE.txt

- 

- %doc README.rst NOTICES CHANGELOG.rst HISTORY.txt

+ %doc README.md NOTICES CHANGELOG.rst HISTORY.txt

  %{_bindir}/pipenv

  %{_bindir}/pipenv-resolver

- %{_bindir}/pewtwo

  %{python3_sitelib}/%{name}

  %{python3_sitelib}/%{name}-%{version}-py?.?.egg-info

- %exclude %{python3_sitelib}/tests

- %exclude %{python3_sitelib}/tasks

  

  %files -n %{name}-doc

  %doc html

  %license LICENSE

  

  %changelog

+ * Fri Nov 23 2018 Miro Hrončok <mhroncok@redhat.com> - 2018.11.14-1

+ - Update to 2018.11.14 (#1652091)

+ - Should fix incompatibility with pip (#1651317)

+ 

  * Wed Aug 01 2018 Miro Hrončok <mhroncok@redhat.com> - 2018.7.1-2

  - Correct the name of bundled dotenv to python-dotenv

  

file modified
+1 -1
@@ -1,1 +1,1 @@ 

- SHA512 (pipenv-2018.7.1.tar.gz) = b1d53436dc29b82d66bba80df7fd3e7d5778342eb046a38530e9641e6d53eb218798e243e6a89c488e675397c4a9d6d8335df8c3aa7d17e9cadc637a23b6e4f5

+ SHA512 (pipenv-2018.11.14.tar.gz) = 99625251eae83ae1a21d59aaadde10e5c8288936dd094fb7edd23a182911e2c330f520e96bf374a790743ff6e08942d95a155f8257899cdde58053e747c64630

  • drop 0001-pypi-fixtures.patch and only import the plugin in conftest.py
  • redo 0002-fix-imports-of-unbundled-pkgs.patch
  • deselect couple more tests, as the testing environment it not ideal
  • temporarily disable xdisting pytest

rebased onto 27639a154e44ae8138e4d02d1623e82695833e76

5 years ago

rebased onto 40cd909e02a000310e3ff0172a308d204c3a67fa

5 years ago

rebased onto cb33a34199361702b2d288444a726aa744162105

5 years ago

rebased onto eb55c02011083ccb06f2b02dd5767bc4a418bc2c

5 years ago

rebased onto 29758dab8e6e90a0aec3f0cc469933bc5cf59581

5 years ago

rebased onto 2a5e2dbed7db04d1df8d2a7dbd4d7c73f21581c3

5 years ago

rebased onto cc6f0ef996a927c93d786437a4ea1ff0bc5b81c9

5 years ago

Ready for review.

Note: This took 5 hours of trial and error (across 2 days), the pytest_pypi package was the most weird thing and deciding to ditch the first patch will help in the future.

However the bundled/unbundled thing is tedious and I feel like I've just lost a couple dozens of brain cells. Once we update to the next version, I'd rather spend a week automating this than doing this again :

  • the lists (licenses, (build)requires, provides, license again) can be automated
  • patch2 can be automated

All that needs to be done by human is telling what packages are to remain bundled. And even there, the automation can provide some insight (e.g. we have this in Fedora, but the version is XYZ).

Please review this very closely, there might be traps.

rebased onto e96a626a2518ce0ff70bb6cae738cc04c73d3923

5 years ago

1 new commit added

  • Unbundle shellingham
5 years ago

1 new commit added

  • Click 7 is needed
5 years ago

Metadata Update from @churchyard:
- Request assigned

5 years ago

Why was crayons removed? It seems it's still there.

That file seems to still be there (noticed when inspected the upstream tree).

What was the reasons for renaming the directory initially?

Do the tests now work due to exporting the proper PYTHONPATH (line 285)?

Moving it into the path so (now removed) patch 001 was able to work. it was a very dirty workaround for the problem now we have another workaround, but less dirty.

rebased onto 1b084aa

5 years ago

The rest seem good to me SPEC wise. I haven't checked the functionality of the updated build. I hope I got everything but another pair of eyes to confirm the review would be helpful. If you think it's not necessary please go ahead and merge it. Also do note there is a new release, 2018.11.26, but I'd recommend updating it after this huge PR.

Pull-Request has been merged by churchyard

5 years ago