#47 Update to 19.3.1 (#1761508)
Opened a month ago by torsava. Modified 18 hours ago
rpms/ torsava/python-pip master  into  master

file modified
+2

@@ -38,3 +38,5 @@ 

  /pip-19.1.1-tests.tar.gz

  /pip-19.2.3.tar.gz

  /pip-19.2.3-tests.tar.gz

+ /pip-19.3.1.tar.gz

+ /pip-19.3.1-tests.tar.gz

file removed
-22

@@ -1,22 +0,0 @@ 

- From bbbbe07aab24ebaec228624cf6d0100ebe58b00a Mon Sep 17 00:00:00 2001

- From: Hugo <hugovk@users.noreply.github.com>

- Date: Thu, 25 Jul 2019 10:47:05 +0300

- Subject: [PATCH] Consistently get version string, ignoring alpha/beta

- 

- ---

-  tests/functional/test_install.py | 2 +-

-  1 file changed, 1 insertion(+), 1 deletion(-)

- 

- diff --git a/tests/functional/test_install.py b/tests/functional/test_install.py

- index 96b780f3c..9481cfd08 100644

- --- a/tests/functional/test_install.py

- +++ b/tests/functional/test_install.py

- @@ -1306,7 +1306,7 @@ def test_double_install_fail(script):

-  def _get_expected_error_text():

-      return (

-          "Package 'pkga' requires a different Python: {} not in '<1.0'"

- -    ).format(sys.version.split()[0])

- +    ).format('.'.join(map(str, sys.version_info[:3])))

-  

-  

-  def test_install_incompatible_python_requires(script):

file added
+43

@@ -0,0 +1,43 @@ 

+ diff --git a/src/pip/_internal/__init__.py b/src/pip/_internal/__init__.py

+ index 8c0e4c58..76e280e5 100755

+ --- a/src/pip/_internal/__init__.py

+ +++ b/src/pip/_internal/__init__.py

+ @@ -1,2 +1,3 @@

+  #!/usr/bin/env python

+  import pip._internal.utils.inject_securetransport  # noqa

+ +from pip._internal import main  # noqa

+ diff --git a/src/pip/_internal/main.py b/src/pip/_internal/main.py

+ index 1e922402..d3df58b3 100644

+ --- a/src/pip/_internal/main.py

+ +++ b/src/pip/_internal/main.py

+ @@ -45,3 +45,30 @@ def main(args=None):

+      command = create_command(cmd_name, isolated=("--isolated" in cmd_args))

+  

+      return command.main(cmd_args)

+ +

+ +

+ +# Dark magic to make the main module itself callable.

+ +# This is needed to be able to use this pip in ensurepip of older Pythons

+ +# without patching all the Pythons.

+ +

+ +# In Python 3.5+, we can just inherit, define __call__ and override

+ +# sys.modules[__name__].__class__, however, that is not possible in 2.7.

+ +

+ +class _CallableModule(type(sys.modules[__name__])):

+ +    def __init__(self):

+ +        super(_CallableModule, self).__init__(__name__)

+ +        self._main = sys.modules[__name__]

+ +        sys.modules[__name__] = self

+ +        self.__doc__ = self._main.__doc__

+ +

+ +    def __call__(self, *args, **kwargs):

+ +        return main(*args, **kwargs)

+ +

+ +    def __dir__(self):

+ +        return dir(self._main)

+ +

+ +    def __getattr__(self, attr):

+ +        return getattr(self._main, attr)

+ +

+ +

+ +_CallableModule()

@@ -1,8 +1,19 @@ 

+ From aab24967a03bda3b0999d80562a6064c27d1e0e0 Mon Sep 17 00:00:00 2001

+ From: Tomas Orsava <torsava@redhat.com>

+ Date: Tue, 12 Nov 2019 17:15:08 +0100

+ Subject: [PATCH] Downstream only patch

+ 

+ Emit a warning to the user if pip install is run with root privileges

+ Issue upstream: https://github.com/pypa/pip/issues/4288

+ ---

+  src/pip/_internal/commands/install.py | 19 +++++++++++++++++++

+  1 file changed, 19 insertions(+)

+ 

  diff --git a/src/pip/_internal/commands/install.py b/src/pip/_internal/commands/install.py

- index 1279d4a..aeb9d26 100644

+ index 5842d18..a6104b4 100644

  --- a/src/pip/_internal/commands/install.py

  +++ b/src/pip/_internal/commands/install.py

- @@ -5,6 +5,8 @@ import logging

+ @@ -12,6 +12,8 @@ import logging

   import operator

   import os

   import shutil

@@ -11,9 +22,9 @@ 

   from optparse import SUPPRESS_HELP

   

   from pip._vendor import pkg_resources

- @@ -217,6 +219,23 @@ class InstallCommand(RequirementCommand):

-  

+ @@ -281,6 +283,23 @@ class InstallCommand(RequirementCommand):

       def run(self, options, args):

+          # type: (Values, List[Any]) -> int

           cmdoptions.check_install_build_global(options)

  +

  +        def is_venv():

@@ -35,3 +46,6 @@ 

           upgrade_strategy = "to-satisfy-only"

           if options.upgrade:

               upgrade_strategy = options.upgrade_strategy

+ -- 

+ 2.20.1

+ 

file added
+683

@@ -0,0 +1,683 @@ 

+ From 621800d5c65aea36c6a1d9b685ff88f35cfce476 Mon Sep 17 00:00:00 2001

+ From: Tomas Orsava <torsava@redhat.com>

+ Date: Fri, 15 Nov 2019 19:44:54 +0100

+ Subject: [PATCH] Mark 6 tests as network tests

+ 

+ =================================== FAILURES ===================================

+ _______________________________ test_freeze_path _______________________________

+ tmpdir = Path('/tmp/pytest-of-mockbuild/pytest-0/test_freeze_path0')

+ script = <tests.lib.PipTestEnvironment object at 0x7fe950a4caf0>

+ data = <tests.lib.TestData object at 0x7fe950a4cc10>

+     def test_freeze_path(tmpdir, script, data):

+         """

+         Test freeze with --path.

+         """

+ >       script.pip('install', '--find-links', data.find_links,

+                    '--target', tmpdir, 'simple==2.0')

+ tests/functional/test_freeze.py:712:

+ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

+ tests/lib/__init__.py:593: in run

+     _check_stderr(

+ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

+ stderr = "WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'N...t at 0x7fe6435ef280>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/\n"

+ allow_stderr_warning = False, allow_stderr_error = False

+     def _check_stderr(

+         stderr, allow_stderr_warning, allow_stderr_error,

+     ):

+         """

+         Check the given stderr for logged warnings and errors.

+ 

+         :param stderr: stderr output as a string.

+         :param allow_stderr_warning: whether a logged warning (or deprecation

+             message) is allowed. Must be True if allow_stderr_error is True.

+         :param allow_stderr_error: whether a logged error is allowed.

+         """

+         assert not (allow_stderr_error and not allow_stderr_warning)

+ 

+         lines = stderr.splitlines()

+         for line in lines:

+             # First check for logging errors, which we don't allow during

+             # tests even if allow_stderr_error=True (since a logging error

+             # would signal a bug in pip's code).

+             #    Unlike errors logged with logger.error(), these errors are

+             # sent directly to stderr and so bypass any configured log formatter.

+             # The "--- Logging error ---" string is used in Python 3.4+, and

+             # "Logged from file " is used in Python 2.

+             if (line.startswith('--- Logging error ---') or

+                     line.startswith('Logged from file ')):

+                 reason = 'stderr has a logging error, which is never allowed'

+                 msg = make_check_stderr_message(stderr, line=line, reason=reason)

+                 raise RuntimeError(msg)

+             if allow_stderr_error:

+                 continue

+ 

+             if line.startswith('ERROR: '):

+                 reason = (

+                     'stderr has an unexpected error '

+                     '(pass allow_stderr_error=True to permit this)'

+                 )

+                 msg = make_check_stderr_message(stderr, line=line, reason=reason)

+                 raise RuntimeError(msg)

+             if allow_stderr_warning:

+                 continue

+ 

+             if (line.startswith('WARNING: ') or

+                     line.startswith(DEPRECATION_MSG_PREFIX)):

+                 reason = (

+                     'stderr has an unexpected warning '

+                     '(pass allow_stderr_warning=True to permit this)'

+                 )

+                 msg = make_check_stderr_message(stderr, line=line, reason=reason)

+ >               raise RuntimeError(msg)

+ E               RuntimeError: stderr has an unexpected warning (pass allow_stderr_warning=True to permit this):

+ E                Caused by line: "WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7fe64364c850>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/"

+ E                Complete stderr: WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7fe64364c850>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/

+ E               WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7fe64364cdc0>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/

+ E               WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7fe64364cf70>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/

+ E               WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7fe6435ef130>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/

+ E               WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7fe6435ef280>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/

+ tests/lib/__init__.py:404: RuntimeError

+ ________________________ test_freeze_path_exclude_user _________________________

+ tmpdir = Path('/tmp/pytest-of-mockbuild/pytest-0/test_freeze_path_exclude_user0')

+ script = <tests.lib.PipTestEnvironment object at 0x7fe950ec8fa0>

+ data = <tests.lib.TestData object at 0x7fe950ec8a30>

+     def test_freeze_path_exclude_user(tmpdir, script, data):

+         """

+         Test freeze with --path and make sure packages from --user are not picked

+         up.

+         """

+         script.pip_install_local('--find-links', data.find_links,

+                                  '--user', 'simple2')

+ >       script.pip('install', '--find-links', data.find_links,

+                    '--target', tmpdir, 'simple==1.0')

+ tests/functional/test_freeze.py:728:

+ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

+ tests/lib/__init__.py:593: in run

+     _check_stderr(

+ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

+ stderr = "WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'N...t at 0x7f87ae751310>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/\n"

+ allow_stderr_warning = False, allow_stderr_error = False

+     def _check_stderr(

+         stderr, allow_stderr_warning, allow_stderr_error,

+     ):

+         """

+         Check the given stderr for logged warnings and errors.

+ 

+         :param stderr: stderr output as a string.

+         :param allow_stderr_warning: whether a logged warning (or deprecation

+             message) is allowed. Must be True if allow_stderr_error is True.

+         :param allow_stderr_error: whether a logged error is allowed.

+         """

+         assert not (allow_stderr_error and not allow_stderr_warning)

+ 

+         lines = stderr.splitlines()

+         for line in lines:

+             # First check for logging errors, which we don't allow during

+             # tests even if allow_stderr_error=True (since a logging error

+             # would signal a bug in pip's code).

+             #    Unlike errors logged with logger.error(), these errors are

+             # sent directly to stderr and so bypass any configured log formatter.

+             # The "--- Logging error ---" string is used in Python 3.4+, and

+             # "Logged from file " is used in Python 2.

+             if (line.startswith('--- Logging error ---') or

+                     line.startswith('Logged from file ')):

+                 reason = 'stderr has a logging error, which is never allowed'

+                 msg = make_check_stderr_message(stderr, line=line, reason=reason)

+                 raise RuntimeError(msg)

+             if allow_stderr_error:

+                 continue

+ 

+             if line.startswith('ERROR: '):

+                 reason = (

+                     'stderr has an unexpected error '

+                     '(pass allow_stderr_error=True to permit this)'

+                 )

+                 msg = make_check_stderr_message(stderr, line=line, reason=reason)

+                 raise RuntimeError(msg)

+             if allow_stderr_warning:

+                 continue

+ 

+             if (line.startswith('WARNING: ') or

+                     line.startswith(DEPRECATION_MSG_PREFIX)):

+                 reason = (

+                     'stderr has an unexpected warning '

+                     '(pass allow_stderr_warning=True to permit this)'

+                 )

+                 msg = make_check_stderr_message(stderr, line=line, reason=reason)

+ >               raise RuntimeError(msg)

+ E               RuntimeError: stderr has an unexpected warning (pass allow_stderr_warning=True to permit this):

+ E                Caused by line: "WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f87ae7aa8e0>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/"

+ E                Complete stderr: WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f87ae7aa8e0>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/

+ E               WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f87ae7aae50>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/

+ E               WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f87ae751040>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/

+ E               WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f87ae7511c0>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/

+ E               WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f87ae751310>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/

+ tests/lib/__init__.py:404: RuntimeError

+ __________________________ test_freeze_path_multiple ___________________________

+ tmpdir = Path('/tmp/pytest-of-mockbuild/pytest-0/test_freeze_path_multiple0')

+ script = <tests.lib.PipTestEnvironment object at 0x7fe950b43fd0>

+ data = <tests.lib.TestData object at 0x7fe950b43df0>

+     def test_freeze_path_multiple(tmpdir, script, data):

+         """

+         Test freeze with multiple --path arguments.

+         """

+         path1 = tmpdir / "path1"

+         os.mkdir(path1)

+         path2 = tmpdir / "path2"

+         os.mkdir(path2)

+ >       script.pip('install', '--find-links', data.find_links,

+                    '--target', path1, 'simple==2.0')

+ tests/functional/test_freeze.py:750:

+ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

+ tests/lib/__init__.py:593: in run

+     _check_stderr(

+ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

+ stderr = "WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'N...t at 0x7f07e6253280>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/\n"

+ allow_stderr_warning = False, allow_stderr_error = False

+     def _check_stderr(

+         stderr, allow_stderr_warning, allow_stderr_error,

+     ):

+         """

+         Check the given stderr for logged warnings and errors.

+ 

+         :param stderr: stderr output as a string.

+         :param allow_stderr_warning: whether a logged warning (or deprecation

+             message) is allowed. Must be True if allow_stderr_error is True.

+         :param allow_stderr_error: whether a logged error is allowed.

+         """

+         assert not (allow_stderr_error and not allow_stderr_warning)

+ 

+         lines = stderr.splitlines()

+         for line in lines:

+             # First check for logging errors, which we don't allow during

+             # tests even if allow_stderr_error=True (since a logging error

+             # would signal a bug in pip's code).

+             #    Unlike errors logged with logger.error(), these errors are

+             # sent directly to stderr and so bypass any configured log formatter.

+             # The "--- Logging error ---" string is used in Python 3.4+, and

+             # "Logged from file " is used in Python 2.

+             if (line.startswith('--- Logging error ---') or

+                     line.startswith('Logged from file ')):

+                 reason = 'stderr has a logging error, which is never allowed'

+                 msg = make_check_stderr_message(stderr, line=line, reason=reason)

+                 raise RuntimeError(msg)

+             if allow_stderr_error:

+                 continue

+ 

+             if line.startswith('ERROR: '):

+                 reason = (

+                     'stderr has an unexpected error '

+                     '(pass allow_stderr_error=True to permit this)'

+                 )

+                 msg = make_check_stderr_message(stderr, line=line, reason=reason)

+                 raise RuntimeError(msg)

+             if allow_stderr_warning:

+                 continue

+ 

+             if (line.startswith('WARNING: ') or

+                     line.startswith(DEPRECATION_MSG_PREFIX)):

+                 reason = (

+                     'stderr has an unexpected warning '

+                     '(pass allow_stderr_warning=True to permit this)'

+                 )

+                 msg = make_check_stderr_message(stderr, line=line, reason=reason)

+ >               raise RuntimeError(msg)

+ E               RuntimeError: stderr has an unexpected warning (pass allow_stderr_warning=True to permit this):

+ E                Caused by line: "WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f07e62ae850>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/"

+ E                Complete stderr: WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f07e62ae850>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/

+ E               WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f07e62aedc0>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/

+ E               WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f07e62aef70>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/

+ E               WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f07e6253130>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/

+ E               WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f07e6253280>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/

+ tests/lib/__init__.py:404: RuntimeError

+ _________________ test_install_no_binary_builds_pep_517_wheel __________________

+ script = <tests.lib.PipTestEnvironment object at 0x7fe9509f4e20>

+ data = <tests.lib.TestData object at 0x7fe9509f4640>, with_wheel = None

+     def test_install_no_binary_builds_pep_517_wheel(script, data, with_wheel):

+         to_install = data.packages.joinpath('pep517_setup_and_pyproject')

+ >       res = script.pip(

+             'install', '--no-binary=:all:', '-f', data.find_links, to_install

+         )

+ tests/functional/test_install.py:1279:

+ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

+ self = <tests.lib.PipTestEnvironment object at 0x7fe9509f4e20>

+ args = ('python', '-m', 'pip', 'install', '--no-binary=:all:', '-f', ...)

+ kw = {'expect_stderr': True}

+ cwd = Path('/tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/scratch')

+ run_from = None, allow_stderr_error = False, allow_stderr_warning = False

+ expect_error = None

+     def run(self, *args, **kw):

+         """

+         :param allow_stderr_error: whether a logged error is allowed in

+             stderr.  Passing True for this argument implies

+             `allow_stderr_warning` since warnings are weaker than errors.

+         :param allow_stderr_warning: whether a logged warning (or

+             deprecation message) is allowed in stderr.

+         :param expect_error: if False (the default), asserts that the command

+             exits with 0.  Otherwise, asserts that the command exits with a

+             non-zero exit code.  Passing True also implies allow_stderr_error

+             and allow_stderr_warning.

+         :param expect_stderr: whether to allow warnings in stderr (equivalent

+             to `allow_stderr_warning`).  This argument is an abbreviated

+             version of `allow_stderr_warning` and is also kept for backwards

+             compatibility.

+         """

+         if self.verbose:

+             print('>> running %s %s' % (args, kw))

+ 

+         cwd = kw.pop('cwd', None)

+         run_from = kw.pop('run_from', None)

+         assert not cwd or not run_from, "Don't use run_from; it's going away"

+         cwd = cwd or run_from or self.cwd

+         if sys.platform == 'win32':

+             # Partial fix for ScriptTest.run using `shell=True` on Windows.

+             args = [str(a).replace('^', '^^').replace('&', '^&') for a in args]

+ 

+         # Remove `allow_stderr_error` and `allow_stderr_warning` before

+         # calling run() because PipTestEnvironment doesn't support them.

+         allow_stderr_error = kw.pop('allow_stderr_error', None)

+         allow_stderr_warning = kw.pop('allow_stderr_warning', None)

+ 

+         # Propagate default values.

+         expect_error = kw.get('expect_error')

+         if expect_error:

+             # Then default to allowing logged errors.

+             if allow_stderr_error is not None and not allow_stderr_error:

+                 raise RuntimeError(

+                     'cannot pass allow_stderr_error=False with '

+                     'expect_error=True'

+                 )

+             allow_stderr_error = True

+ 

+         elif kw.get('expect_stderr'):

+             # Then default to allowing logged warnings.

+             if allow_stderr_warning is not None and not allow_stderr_warning:

+                 raise RuntimeError(

+                     'cannot pass allow_stderr_warning=False with '

+                     'expect_stderr=True'

+                 )

+             allow_stderr_warning = True

+ 

+         if allow_stderr_error:

+             if allow_stderr_warning is not None and not allow_stderr_warning:

+                 raise RuntimeError(

+                     'cannot pass allow_stderr_warning=False with '

+                     'allow_stderr_error=True'

+                 )

+ 

+         # Default values if not set.

+         if allow_stderr_error is None:

+             allow_stderr_error = False

+         if allow_stderr_warning is None:

+             allow_stderr_warning = allow_stderr_error

+ 

+         # Pass expect_stderr=True to allow any stderr.  We do this because

+         # we do our checking of stderr further on in check_stderr().

+         kw['expect_stderr'] = True

+ >       result = super(PipTestEnvironment, self).run(cwd=cwd, *args, **kw)

+ E       AssertionError: Script returned code: 1

+ tests/lib/__init__.py:586: AssertionError

+ ----------------------------- Captured stdout call -----------------------------

+ Script result: python -m pip install --no-binary=:all: -f file:///tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/data/packages /tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/data/packages/pep517_setup_and_pyproject

+   return code: 1

+ -- stderr: --------------------

+   ERROR: Command errored out with exit status 1:

+    command: /tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/venv/bin/python /builddir/build/BUILDROOT/python-pip-19.3.1-1.fc32.noarch/usr/lib/python3.8/site-packages/pip install --ignore-installed --no-user --prefix /tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/tmp/pip-build-env-ntp1m4dh/overlay --no-warn-script-location --no-binary :all: --only-binary :none: -i https://pypi.org/simple --find-links file:///tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/data/packages -- setuptools

+        cwd: None

+   Complete output (28 lines):

+   Looking in links: file:///tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/data/packages

+   WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f7234ef1e50>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/setuptools/

+   WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f7234e92040>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/setuptools/

+   WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f7234e921c0>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/setuptools/

+   WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f7234e92340>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/setuptools/

+   WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f7234e924c0>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/setuptools/

+   Processing /tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/data/packages/setuptools-0.9.6.tar.gz

+       ERROR: Command errored out with exit status 1:

+        command: /tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/venv/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/tmp/pip-install-b_6lf4z6/setuptools/setup.py'"'"'; __file__='"'"'/tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/tmp/pip-install-b_6lf4z6/setuptools/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/tmp/pip-install-b_6lf4z6/setuptools/pip-egg-info

+            cwd: /tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/tmp/pip-install-b_6lf4z6/setuptools/

+       Complete output (15 lines):

+       Traceback (most recent call last):

+         File "<string>", line 1, in <module>

+         File "/tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/tmp/pip-install-b_6lf4z6/setuptools/setuptools/__init__.py", line 2, in <module>

+           from setuptools.extension import Extension, Library

+         File "/tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/tmp/pip-install-b_6lf4z6/setuptools/setuptools/extension.py", line 5, in <module>

+           from setuptools.dist import _get_unpatched

+         File "/tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/tmp/pip-install-b_6lf4z6/setuptools/setuptools/dist.py", line 7, in <module>

+           from setuptools.command.install import install

+         File "/tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/tmp/pip-install-b_6lf4z6/setuptools/setuptools/command/__init__.py", line 8, in <module>

+           from setuptools.command import install_scripts

+         File "/tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/tmp/pip-install-b_6lf4z6/setuptools/setuptools/command/install_scripts.py", line 3, in <module>

+           from pkg_resources import Distribution, PathMetadata, ensure_directory

+         File "/tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/tmp/pip-install-b_6lf4z6/setuptools/pkg_resources.py", line 1545, in <module>

+           register_loader_type(importlib_bootstrap.SourceFileLoader, DefaultProvider)

+       AttributeError: module 'importlib._bootstrap' has no attribute 'SourceFileLoader'

+       ----------------------------------------

+   ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

+   ----------------------------------------

+ ERROR: Command errored out with exit status 1: /tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/venv/bin/python /builddir/build/BUILDROOT/python-pip-19.3.1-1.fc32.noarch/usr/lib/python3.8/site-packages/pip install --ignore-installed --no-user --prefix /tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/tmp/pip-build-env-ntp1m4dh/overlay --no-warn-script-location --no-binary :all: --only-binary :none: -i https://pypi.org/simple --find-links file:///tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/data/packages -- setuptools Check the logs for full command output.

+ -- stdout: --------------------

+ Looking in links: file:///tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/data/packages

+ Processing /tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/data/packages/pep517_setup_and_pyproject

+   Installing build dependencies: started

+   Installing build dependencies: finished with status 'error'

+ _______________________ test_config_file_override_stack ________________________

+ script = <tests.lib.PipTestEnvironment object at 0x7fe950d9b7f0>

+ virtualenv = <VirtualEnvironment /tmp/pytest-of-mockbuild/pytest-0/test_config_file_override_stac0/workspace/venv>

+     def test_config_file_override_stack(script, virtualenv):

+         """

+         Test config files (global, overriding a global config with a

+         local, overriding all with a command line flag).

+ 

+         """

+         fd, config_file = tempfile.mkstemp('-pip.cfg', 'test-')

+         try:

+ >           _test_config_file_override_stack(script, virtualenv, config_file)

+ tests/functional/test_install_config.py:144:

+ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

+ tests/functional/test_install_config.py:172: in _test_config_file_override_stack

+     result = script.pip(

+ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

+ self = <tests.lib.PipTestEnvironment object at 0x7fe950d9b7f0>

+ args = ('python', '-m', 'pip', 'install', '-vvv', '--index-url', ...)

+ kw = {'expect_stderr': True}

+ cwd = Path('/tmp/pytest-of-mockbuild/pytest-0/test_config_file_override_stac0/workspace/scratch')

+ run_from = None, allow_stderr_error = False, allow_stderr_warning = False

+ expect_error = None

+     def run(self, *args, **kw):

+         """

+         :param allow_stderr_error: whether a logged error is allowed in

+             stderr.  Passing True for this argument implies

+             `allow_stderr_warning` since warnings are weaker than errors.

+         :param allow_stderr_warning: whether a logged warning (or

+             deprecation message) is allowed in stderr.

+         :param expect_error: if False (the default), asserts that the command

+             exits with 0.  Otherwise, asserts that the command exits with a

+             non-zero exit code.  Passing True also implies allow_stderr_error

+             and allow_stderr_warning.

+         :param expect_stderr: whether to allow warnings in stderr (equivalent

+             to `allow_stderr_warning`).  This argument is an abbreviated

+             version of `allow_stderr_warning` and is also kept for backwards

+             compatibility.

+         """

+         if self.verbose:

+             print('>> running %s %s' % (args, kw))

+ 

+         cwd = kw.pop('cwd', None)

+         run_from = kw.pop('run_from', None)

+         assert not cwd or not run_from, "Don't use run_from; it's going away"

+         cwd = cwd or run_from or self.cwd

+         if sys.platform == 'win32':

+             # Partial fix for ScriptTest.run using `shell=True` on Windows.

+             args = [str(a).replace('^', '^^').replace('&', '^&') for a in args]

+ 

+         # Remove `allow_stderr_error` and `allow_stderr_warning` before

+         # calling run() because PipTestEnvironment doesn't support them.

+         allow_stderr_error = kw.pop('allow_stderr_error', None)

+         allow_stderr_warning = kw.pop('allow_stderr_warning', None)

+ 

+         # Propagate default values.

+         expect_error = kw.get('expect_error')

+         if expect_error:

+             # Then default to allowing logged errors.

+             if allow_stderr_error is not None and not allow_stderr_error:

+                 raise RuntimeError(

+                     'cannot pass allow_stderr_error=False with '

+                     'expect_error=True'

+                 )

+             allow_stderr_error = True

+ 

+         elif kw.get('expect_stderr'):

+             # Then default to allowing logged warnings.

+             if allow_stderr_warning is not None and not allow_stderr_warning:

+                 raise RuntimeError(

+                     'cannot pass allow_stderr_warning=False with '

+                     'expect_stderr=True'

+                 )

+             allow_stderr_warning = True

+ 

+         if allow_stderr_error:

+             if allow_stderr_warning is not None and not allow_stderr_warning:

+                 raise RuntimeError(

+                     'cannot pass allow_stderr_warning=False with '

+                     'allow_stderr_error=True'

+                 )

+ 

+         # Default values if not set.

+         if allow_stderr_error is None:

+             allow_stderr_error = False

+         if allow_stderr_warning is None:

+             allow_stderr_warning = allow_stderr_error

+ 

+         # Pass expect_stderr=True to allow any stderr.  We do this because

+         # we do our checking of stderr further on in check_stderr().

+         kw['expect_stderr'] = True

+ >       result = super(PipTestEnvironment, self).run(cwd=cwd, *args, **kw)

+ E       AssertionError: Script returned code: 1

+ tests/lib/__init__.py:586: AssertionError

+ ----------------------------- Captured stdout call -----------------------------

+ Script result: python -m pip install -vvv --index-url https://pypi.org/simple/ INITools

+   return code: 1

+ -- stderr: --------------------

+ WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f9669c3d8b0>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/initools/

+ WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f9669c3da60>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/initools/

+ WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f9669c3dbe0>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/initools/

+ WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f9669c3dd60>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/initools/

+ WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f966900f490>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/initools/

+ ERROR: Could not find a version that satisfies the requirement INITools (from versions: none)

+ ERROR: No matching distribution found for INITools

+ -- stdout: --------------------

+ Created temporary directory: /tmp/pytest-of-mockbuild/pytest-0/test_config_file_override_stac0/workspace/tmp/pip-ephem-wheel-cache-6gj33ens

+ Created temporary directory: /tmp/pytest-of-mockbuild/pytest-0/test_config_file_override_stac0/workspace/tmp/pip-req-tracker-s7_2cwgc

+ Created requirements tracker '/tmp/pytest-of-mockbuild/pytest-0/test_config_file_override_stac0/workspace/tmp/pip-req-tracker-s7_2cwgc'

+ Created temporary directory: /tmp/pytest-of-mockbuild/pytest-0/test_config_file_override_stac0/workspace/tmp/pip-install-_91mh3df

+ Looking in indexes: https://pypi.org/simple/

+ 1 location(s) to search for versions of INITools:

+ * https://pypi.org/simple/initools/

+ Getting page https://pypi.org/simple/initools/

+ Found index url https://pypi.org/simple/

+ Looking up "https://pypi.org/simple/initools/" in the cache

+ Request header has "max_age" as 0, cache bypassed

+ Starting new HTTPS connection (1): pypi.org:443

+ Incremented Retry for (url='/simple/initools/'): Retry(total=4, connect=None, read=None, redirect=None, status=None)

+ Starting new HTTPS connection (2): pypi.org:443

+ Incremented Retry for (url='/simple/initools/'): Retry(total=3, connect=None, read=None, redirect=None, status=None)

+ Starting new HTTPS connection (3): pypi.org:443

+ Incremented Retry for (url='/simple/initools/'): Retry(total=2, connect=None, read=None, redirect=None, status=None)

+ Starting new HTTPS connection (4): pypi.org:443

+ Incremented Retry for (url='/simple/initools/'): Retry(total=1, connect=None, read=None, redirect=None, status=None)

+ Starting new HTTPS connection (5): pypi.org:443

+ Incremented Retry for (url='/simple/initools/'): Retry(total=0, connect=None, read=None, redirect=None, status=None)

+ Starting new HTTPS connection (6): pypi.org:443

+ Could not fetch URL https://pypi.org/simple/initools/: connection error: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/initools/ (Caused by NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f9669c15b50>: Failed to establish a new connection: [Errno -2] Name or service not known')) - skipping

+ Given no hashes to check 0 links for project 'INITools': discarding no candidates

+ Cleaning up...

+ Removed build tracker '/tmp/pytest-of-mockbuild/pytest-0/test_config_file_override_stac0/workspace/tmp/pip-req-tracker-s7_2cwgc'

+ Exception information:

+ Traceback (most recent call last):

+   File "/builddir/build/BUILDROOT/python-pip-19.3.1-1.fc32.noarch/usr/lib/python3.8/site-packages/pip/_internal/cli/base_command.py", line 153, in _main

+     status = self.run(options, args)

+   File "/builddir/build/BUILDROOT/python-pip-19.3.1-1.fc32.noarch/usr/lib/python3.8/site-packages/pip/_internal/commands/install.py", line 401, in run

+     resolver.resolve(requirement_set)

+   File "/builddir/build/BUILDROOT/python-pip-19.3.1-1.fc32.noarch/usr/lib/python3.8/site-packages/pip/_internal/legacy_resolve.py", line 202, in resolve

+     self._resolve_one(requirement_set, req)

+   File "/builddir/build/BUILDROOT/python-pip-19.3.1-1.fc32.noarch/usr/lib/python3.8/site-packages/pip/_internal/legacy_resolve.py", line 368, in _resolve_one

+     abstract_dist = self._get_abstract_dist_for(req_to_install)

+   File "/builddir/build/BUILDROOT/python-pip-19.3.1-1.fc32.noarch/usr/lib/python3.8/site-packages/pip/_internal/legacy_resolve.py", line 314, in _get_abstract_dist_for

+     req.populate_link(self.finder, upgrade_allowed, self.require_hashes)

+   File "/builddir/build/BUILDROOT/python-pip-19.3.1-1.fc32.noarch/usr/lib/python3.8/site-packages/pip/_internal/req/req_install.py", line 226, in populate_link

+     self.link = finder.find_requirement(self, upgrade)

+   File "/builddir/build/BUILDROOT/python-pip-19.3.1-1.fc32.noarch/usr/lib/python3.8/site-packages/pip/_internal/index.py", line 905, in find_requirement

+     raise DistributionNotFound(

+ pip._internal.exceptions.DistributionNotFound: No matching distribution found for INITools

+ _______________________ test_no_upgrade_unless_requested _______________________

+ script = <tests.lib.PipTestEnvironment object at 0x7fe950d86070>

+     def test_no_upgrade_unless_requested(script):

+         """

+         No upgrade if not specifically requested.

+ 

+         """

+ >       script.pip('install', 'INITools==0.1')

+ tests/functional/test_install_upgrade.py:16:

+ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

+ self = <tests.lib.PipTestEnvironment object at 0x7fe950d86070>

+ args = ('python', '-m', 'pip', 'install', 'INITools==0.1')

+ kw = {'expect_stderr': True}

+ cwd = Path('/tmp/pytest-of-mockbuild/pytest-0/test_no_upgrade_unless_request0/workspace/scratch')

+ run_from = None, allow_stderr_error = False, allow_stderr_warning = False

+ expect_error = None

+     def run(self, *args, **kw):

+         """

+         :param allow_stderr_error: whether a logged error is allowed in

+             stderr.  Passing True for this argument implies

+             `allow_stderr_warning` since warnings are weaker than errors.

+         :param allow_stderr_warning: whether a logged warning (or

+             deprecation message) is allowed in stderr.

+         :param expect_error: if False (the default), asserts that the command

+             exits with 0.  Otherwise, asserts that the command exits with a

+             non-zero exit code.  Passing True also implies allow_stderr_error

+             and allow_stderr_warning.

+         :param expect_stderr: whether to allow warnings in stderr (equivalent

+             to `allow_stderr_warning`).  This argument is an abbreviated

+             version of `allow_stderr_warning` and is also kept for backwards

+             compatibility.

+         """

+         if self.verbose:

+             print('>> running %s %s' % (args, kw))

+ 

+         cwd = kw.pop('cwd', None)

+         run_from = kw.pop('run_from', None)

+         assert not cwd or not run_from, "Don't use run_from; it's going away"

+         cwd = cwd or run_from or self.cwd

+         if sys.platform == 'win32':

+             # Partial fix for ScriptTest.run using `shell=True` on Windows.

+             args = [str(a).replace('^', '^^').replace('&', '^&') for a in args]

+ 

+         # Remove `allow_stderr_error` and `allow_stderr_warning` before

+         # calling run() because PipTestEnvironment doesn't support them.

+         allow_stderr_error = kw.pop('allow_stderr_error', None)

+         allow_stderr_warning = kw.pop('allow_stderr_warning', None)

+ 

+         # Propagate default values.

+         expect_error = kw.get('expect_error')

+         if expect_error:

+             # Then default to allowing logged errors.

+             if allow_stderr_error is not None and not allow_stderr_error:

+                 raise RuntimeError(

+                     'cannot pass allow_stderr_error=False with '

+                     'expect_error=True'

+                 )

+             allow_stderr_error = True

+ 

+         elif kw.get('expect_stderr'):

+             # Then default to allowing logged warnings.

+             if allow_stderr_warning is not None and not allow_stderr_warning:

+                 raise RuntimeError(

+                     'cannot pass allow_stderr_warning=False with '

+                     'expect_stderr=True'

+                 )

+             allow_stderr_warning = True

+ 

+         if allow_stderr_error:

+             if allow_stderr_warning is not None and not allow_stderr_warning:

+                 raise RuntimeError(

+                     'cannot pass allow_stderr_warning=False with '

+                     'allow_stderr_error=True'

+                 )

+ 

+         # Default values if not set.

+         if allow_stderr_error is None:

+             allow_stderr_error = False

+         if allow_stderr_warning is None:

+             allow_stderr_warning = allow_stderr_error

+ 

+         # Pass expect_stderr=True to allow any stderr.  We do this because

+         # we do our checking of stderr further on in check_stderr().

+         kw['expect_stderr'] = True

+ >       result = super(PipTestEnvironment, self).run(cwd=cwd, *args, **kw)

+ E       AssertionError: Script returned code: 1

+ tests/lib/__init__.py:586: AssertionError

+ ----------------------------- Captured stdout call -----------------------------

+ Script result: python -m pip install INITools==0.1

+   return code: 1

+ -- stderr: --------------------

+ WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7fd66cc36700>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/initools/

+ WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7fd66cc36c40>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/initools/

+ WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7fd66cc36dc0>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/initools/

+ WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7fd66cc36f40>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/initools/

+ WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7fd66be48100>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/initools/

+ ERROR: Could not find a version that satisfies the requirement INITools==0.1 (from versions: none)

+ ERROR: No matching distribution found for INITools==0.1

+ ---

+  tests/functional/test_freeze.py          | 3 +++

+  tests/functional/test_install.py         | 1 +

+  tests/functional/test_install_config.py  | 1 +

+  tests/functional/test_install_upgrade.py | 1 +

+  4 files changed, 6 insertions(+)

+ 

+ diff --git a/tests/functional/test_freeze.py b/tests/functional/test_freeze.py

+ index 546a482..aabb0ca 100644

+ --- a/tests/functional/test_freeze.py

+ +++ b/tests/functional/test_freeze.py

+ @@ -705,6 +705,7 @@ def test_freeze_user(script, virtualenv, data):

+      assert 'simple2' not in result.stdout

+  

+  

+ +@pytest.mark.network

+  def test_freeze_path(tmpdir, script, data):

+      """

+      Test freeze with --path.

+ @@ -718,6 +719,7 @@ def test_freeze_path(tmpdir, script, data):

+      _check_output(result.stdout, expected)

+  

+  

+ +@pytest.mark.network

+  def test_freeze_path_exclude_user(tmpdir, script, data):

+      """

+      Test freeze with --path and make sure packages from --user are not picked

+ @@ -739,6 +741,7 @@ def test_freeze_path_exclude_user(tmpdir, script, data):

+      _check_output(result.stdout, expected)

+  

+  

+ +@pytest.mark.network

+  def test_freeze_path_multiple(tmpdir, script, data):

+      """

+      Test freeze with multiple --path arguments.

+ diff --git a/tests/functional/test_install.py b/tests/functional/test_install.py

+ index 0bea054..b816df6 100644

+ --- a/tests/functional/test_install.py

+ +++ b/tests/functional/test_install.py

+ @@ -1274,6 +1274,7 @@ def test_install_no_binary_disables_building_wheels(script, data, with_wheel):

+      assert "Running setup.py install for upper" in str(res), str(res)

+  

+  

+ +@pytest.mark.network

+  def test_install_no_binary_builds_pep_517_wheel(script, data, with_wheel):

+      to_install = data.packages.joinpath('pep517_setup_and_pyproject')

+      res = script.pip(

+ diff --git a/tests/functional/test_install_config.py b/tests/functional/test_install_config.py

+ index bcf83f1..c9c60a2 100644

+ --- a/tests/functional/test_install_config.py

+ +++ b/tests/functional/test_install_config.py

+ @@ -133,6 +133,7 @@ def test_command_line_appends_correctly(script, data):

+      ), 'stdout: {}'.format(result.stdout)

+  

+  

+ +@pytest.mark.network

+  def test_config_file_override_stack(script, virtualenv):

+      """

+      Test config files (global, overriding a global config with a

+ diff --git a/tests/functional/test_install_upgrade.py b/tests/functional/test_install_upgrade.py

+ index 36b518b..c34a961 100644

+ --- a/tests/functional/test_install_upgrade.py

+ +++ b/tests/functional/test_install_upgrade.py

+ @@ -8,6 +8,7 @@ from tests.lib import assert_all_changes, pyversion

+  from tests.lib.local_repos import local_checkout

+  

+  

+ +@pytest.mark.network

+  def test_no_upgrade_unless_requested(script):

+      """

+      No upgrade if not specifically requested.

+ -- 

+ 2.20.1

+ 

@@ -1,20 +1,23 @@ 

- --- /usr/bin/pip3	2018-03-29 15:22:13.000000000 +0200

- +++ pip3	2018-05-04 11:49:08.098821010 +0200

- @@ -4,7 +4,16 @@

+ --- /usr/bin/pip3	2019-11-12 17:37:34.793131862 +0100

+ +++ pip3	2019-11-12 17:40:42.014107134 +0100

+ @@ -2,7 +2,19 @@

+  # -*- coding: utf-8 -*-

   import re

   import sys

-  

- -from pip._internal import main

+ -from pip._internal.main import main

  +try:

- +    from pip._internal import main

+ +    from pip._internal.main import main

  +except ImportError:

- +    # user has most probably downgraded pip in their home

- +    # so let them run it anyway until ~/.local/bin makes it in front of the PATH

- +    from pip import main

- +else:

- +    # user might also upgraded pip...

- +    if hasattr(main, 'main'):

- +        main = main.main

-  

+ +    try:

+ +        # If the user has downgraded pip, the above import will fail.

+ +        # Let's try older methods of invoking it:

+ +

+ +        # pip 19 uses this

+ +        from pip._internal import main

+ +    except ImportError:

+ +        # older pip versions use this

+ +        from pip import main

+ +

   if __name__ == '__main__':

-      sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])

+      sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])

+      sys.exit(main())

file modified
+46 -26

@@ -15,35 +15,35 @@ 

  Name:           python-%{srcname}

  # When updating, update the bundled libraries versions bellow!

  # You can use vendor_meta.sh in the dist git repo

- Version:        19.2.3

- Release:        2%{?dist}

+ Version:        19.3.1

+ Release:        1%{?dist}

  Summary:        A tool for installing and managing Python packages

  

  # We bundle a lot of libraries with pip, which itself is under MIT license.

  # Here is the list of the libraries with corresponding licenses:

  

  # appdirs: MIT

+ # certifi: MPLv2.0

+ # chardet: LGPLv2

+ # colorama: BSD

+ # CacheControl: ASL 2.0

+ # contextlib2: Python

  # distlib: Python

  # distro: ASL 2.0

  # html5lib: MIT

- # six: MIT

- # colorama: BSD

- # CacheControl: ASL 2.0

- # msgpack-python: ASL 2.0

- # lockfile: MIT

- # progress: ISC

+ # idna: BSD

  # ipaddress: Python

+ # msgpack: ASL 2.0

  # packaging: ASL 2.0 or BSD

  # pep517: MIT

+ # progress: ISC

  # pyparsing: MIT

  # pytoml: MIT

- # retrying: ASL 2.0

  # requests: ASL 2.0

- # chardet: LGPLv2

- # idna: BSD

- # urllib3: MIT

- # certifi: MPLv2.0

+ # retrying: ASL 2.0

  # setuptools: MIT

+ # six: MIT

+ # urllib3: MIT

  # webencodings: BSD

  

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

@@ -62,6 +62,7 @@ 

  

  # to get tests:

  # git clone https://github.com/pypa/pip && cd pip

+ # VERSION=   # define the version you want

  # git checkout $VERSION && tar -czvf ../pip-$VERSION-tests.tar.gz tests/

  %if %{with tests}

  Source1:        pip-%{version}-tests.tar.gz

@@ -73,9 +74,6 @@ 

  Source3:        https://github.com/python/python-docs-theme/archive/2018.2.tar.gz

  %endif

  

- # Fix expected output in test to not break with alpha/beta/rc Python versions

- Patch0:         https://github.com/pypa/pip/pull/6788.patch

- 

  # Downstream only patch

  # Emit a warning to the user if pip install is run with root privileges

  # Issue upstream: https://github.com/pypa/pip/issues/4288

@@ -93,6 +91,21 @@ 

  # https://bugzilla.redhat.com/show_bug.cgi?id=1655253

  Patch4:         dummy-certifi.patch

  

+ %if %{with tests}

+ # Mark tests that need the Internet as network tests so we can skip them

+ # https://github.com/pypa/pip/pull/7359

+ Patch5:         network-tests.patch

+ %endif

+ 

+ # Dark magic to make pip 19.3+ support the old private API of main()

+ # This is needed to be able to use pip 19.3+ in ensurepip of older Pythons

+ # without patching all the Pythons

+ # A proper fix is discussed in:

+ #   https://discuss.python.org/t/can-we-finally-add-a-minimal-api-to-pip/2833/3

+ #   https://github.com/pypa/pip/pull/7061

+ #   https://github.com/python/cpython/pull/16782

+ Patch6:         callable-main.patch

+ 

  # Downstream only patch

  # Users might have local installations of pip from using

  # `pip install --user --upgrade pip` on older/newer versions.

@@ -125,26 +138,26 @@ 

  %global bundled() %{expand:

  Provides: bundled(python%{1}dist(appdirs)) = 1.4.3

  Provides: bundled(python%{1}dist(CacheControl)) = 0.12.5

- Provides: bundled(python%{1}dist(certifi)) = 2019.6.16

+ Provides: bundled(python%{1}dist(certifi)) = 2019.9.11

  Provides: bundled(python%{1}dist(chardet)) = 3.0.4

  Provides: bundled(python%{1}dist(colorama)) = 0.4.1

+ Provides: bundled(python%{1}dist(contextlib2)) = 0.6.0

  Provides: bundled(python%{1}dist(distlib)) = 0.2.9.post0

  Provides: bundled(python%{1}dist(distro)) = 1.4.0

  Provides: bundled(python%{1}dist(html5lib)) = 1.0.1

  Provides: bundled(python%{1}dist(idna)) = 2.8

  Provides: bundled(python%{1}dist(ipaddress)) = 1.0.22

- Provides: bundled(python%{1}dist(lockfile)) = 0.12.2

- Provides: bundled(python%{1}dist(msgpack)) = 0.6.1

- Provides: bundled(python%{1}dist(packaging)) = 19.0

- Provides: bundled(python%{1}dist(pep517)) = 0.5.0

+ Provides: bundled(python%{1}dist(msgpack)) = 0.6.2

+ Provides: bundled(python%{1}dist(packaging)) = 19.2

+ Provides: bundled(python%{1}dist(pep517)) = 0.7.0

  Provides: bundled(python%{1}dist(progress)) = 1.5

- Provides: bundled(python%{1}dist(pyparsing)) = 2.4.0

- Provides: bundled(python%{1}dist(pytoml)) = 0.1.20

+ Provides: bundled(python%{1}dist(pyparsing)) = 2.4.2

+ Provides: bundled(python%{1}dist(pytoml)) = 0.1.21

  Provides: bundled(python%{1}dist(requests)) = 2.22.0

  Provides: bundled(python%{1}dist(retrying)) = 1.3.3

- Provides: bundled(python%{1}dist(setuptools)) = 41.0.1

+ Provides: bundled(python%{1}dist(setuptools)) = 41.4.0

  Provides: bundled(python%{1}dist(six)) = 1.12.0

- Provides: bundled(python%{1}dist(urllib3)) = 1.25.3

+ Provides: bundled(python%{1}dist(urllib3)) = 1.25.6

  Provides: bundled(python%{1}dist(webencodings)) = 0.5.1

  }

  

@@ -243,11 +256,14 @@ 

  popd

  %endif

  

- %patch0 -p1

  %patch1 -p1

  %patch2 -p1

  %patch3 -p1

  %patch4 -p1

+ %if %{with tests}

+ %patch5 -p1

+ %endif

+ %patch6 -p1

  

  # this goes together with patch4

  rm src/pip/_vendor/certifi/*.pem

@@ -376,6 +392,10 @@ 

  %{python_wheeldir}/%{python_wheelname}

  

  %changelog

+ * Mon Nov 04 2019 Tomas Orsava <torsava@redhat.com> - 19.3.1-1

+ - Update to 19.3.1 (#1761508)

+ - Drop upstreamed patch that fixed expected output in test to not break with alpha/beta/rc Python versions

+ 

  * Wed Oct 30 2019 Miro Hrončok <mhroncok@redhat.com> - 19.2.3-2

  - Make /usr/bin/pip(3) work with user-installed pip 19.3+ (#1767212)

  

@@ -1,29 +1,34 @@ 

- commit b6d5da6796801862eb751a93d507c343af0604d6

- Author: Victor Stinner <vstinner@redhat.com>

- Date:   Tue Sep 18 17:13:51 2018 +0200

+ From 8c58a99221415ca7c3d5ce50dcffefa14e421928 Mon Sep 17 00:00:00 2001

+ From: Tomas Orsava <torsava@redhat.com>

+ Date: Tue, 12 Nov 2019 17:24:20 +0100

+ Subject: [PATCH] Subject: Prevent removing of the system packages installed

+  under /usr/lib

  

-     Subject: Prevent removing of the system packages installed under /usr/lib

-     

-     when pip install -U is executed.

-     

-     Resolves: rhbz#1550368

-     

-     Co-Authored-By: Michal Cyprian <m.cyprian@gmail.com>

+ when pip install -U is executed.

+ 

+ Resolves: rhbz#1550368

+ 

+ Co-Authored-By: Michal Cyprian <m.cyprian@gmail.com>

+ Co-Authored-By: Victor Stinner <vstinner@redhat.com>

+ ---

+  src/pip/_internal/legacy_resolve.py  |  5 ++++-

+  src/pip/_internal/req/req_install.py |  3 ++-

+  src/pip/_internal/utils/misc.py      | 11 +++++++++++

+  3 files changed, 17 insertions(+), 2 deletions(-)

  

  diff --git a/src/pip/_internal/legacy_resolve.py b/src/pip/_internal/legacy_resolve.py

- index 1d9229cb..3088d22d 100644

+ index c24158f..bd92287 100644

  --- a/src/pip/_internal/legacy_resolve.py

  +++ b/src/pip/_internal/legacy_resolve.py

- @@ -24,7 +24,7 @@ from pip._internal.exceptions import (

-  from pip._internal.req.constructors import install_req_from_req_string

+ @@ -30,6 +30,7 @@ from pip._internal.exceptions import (

+  )

   from pip._internal.utils.logging import indent_log

   from pip._internal.utils.misc import (

- -    dist_in_usersite, ensure_dir, normalize_version_info,

- +    dist_in_install_path, dist_in_usersite, ensure_dir, normalize_version_info,

-  )

-  from pip._internal.utils.packaging import (

-      check_requires_python, get_requires_python,

- @@ -219,7 +219,9 @@ class Resolver(object):

+ +    dist_in_install_path,

+      dist_in_usersite,

+      ensure_dir,

+      normalize_version_info,

+ @@ -224,7 +225,9 @@ class Resolver(object):

           """

           # Don't uninstall the conflict if doing a user install and the

           # conflict is not a user install.

@@ -35,19 +40,18 @@ 

           req.satisfied_by = None

   

  diff --git a/src/pip/_internal/req/req_install.py b/src/pip/_internal/req/req_install.py

- index f5c93504..1096c397 100644

+ index 5a8c0dc..f80ba87 100644

  --- a/src/pip/_internal/req/req_install.py

  +++ b/src/pip/_internal/req/req_install.py

- @@ -27,7 +27,7 @@ from pip._internal.utils.logging import indent_log

-  from pip._internal.utils.marker_files import PIP_DELETE_MARKER_FILENAME

-  from pip._internal.utils.misc import (

-      _make_build_dir, ask_path_exists, backup_dir, call_subprocess,

- -    display_path, dist_in_site_packages, dist_in_usersite, ensure_dir,

- +    display_path, dist_in_install_path, dist_in_site_packages, dist_in_usersite, ensure_dir,

-      get_installed_version, redact_password_from_url, rmtree,

-  )

-  from pip._internal.utils.packaging import get_metadata

- @@ -427,7 +427,7 @@ class InstallRequirement(object):

+ @@ -39,6 +39,7 @@ from pip._internal.utils.misc import (

+      ask_path_exists,

+      backup_dir,

+      display_path,

+ +    dist_in_install_path,

+      dist_in_site_packages,

+      dist_in_usersite,

+      ensure_dir,

+ @@ -461,7 +462,7 @@ class InstallRequirement(object):

                           "lack sys.path precedence to %s in %s" %

                           (existing_dist.project_name, existing_dist.location)

                       )

@@ -57,20 +61,19 @@ 

           return True

   

  diff --git a/src/pip/_internal/utils/misc.py b/src/pip/_internal/utils/misc.py

- index 61f74dc8..ffa8042c 100644

+ index b848263..5b75fed 100644

  --- a/src/pip/_internal/utils/misc.py

  +++ b/src/pip/_internal/utils/misc.py

- @@ -30,7 +30,7 @@ from pip._vendor.six.moves.urllib.parse import unquote as urllib_unquote

-  

+ @@ -28,6 +28,7 @@ from pip._vendor.six.moves.urllib.parse import unquote as urllib_unquote

   from pip import __version__

-  from pip._internal.exceptions import CommandError, InstallationError

- -from pip._internal.locations import site_packages, user_site

- +from pip._internal.locations import distutils_scheme, site_packages, user_site

-  from pip._internal.utils.compat import (

-      WINDOWS, console_to_str, expanduser, stdlib_pkgs, str_to_display,

-  )

- @@ -454,6 +454,16 @@ def dist_in_site_packages(dist):

-      ).startswith(normalize_path(site_packages))

+  from pip._internal.exceptions import CommandError

+  from pip._internal.locations import (

+ +    distutils_scheme,

+      get_major_minor_version,

+      site_packages,

+      user_site,

+ @@ -389,6 +390,16 @@ def dist_in_site_packages(dist):

+      return dist_location(dist).startswith(normalize_path(site_packages))

   

   

  +def dist_in_install_path(dist):

@@ -86,3 +89,6 @@ 

   def dist_is_editable(dist):

       # type: (Distribution) -> bool

       """

+ -- 

+ 2.20.1

+ 

file modified
+2 -2

@@ -1,4 +1,4 @@ 

- SHA512 (pip-19.2.3.tar.gz) = 64ab4ece6da526c9d1b24e73a9c0ca0a38d0fb1525bf9981177342a8b0902ae825ec8f3dabd9ce00dcf0f010aaabf4177c9146084668ce505e0c382c322948c8

- SHA512 (pip-19.2.3-tests.tar.gz) = d4052d83e20fe276d251a80d8d33c33568570d5f26038847f0e5fba34a48ae3d5318b31439f8582d337245f38472495db221d7f4bf39eb9c98181f2f8aecad36

+ SHA512 (pip-19.3.1.tar.gz) = 954b390580e23d0a85d1fa4cbd2f35171df7930fbe346f9a809477fe133e95f7d30208d79b5d07f30c81ab1b0a9b52f36f3ff6c77dc81a1c9ab9beb2bd8e0aa1

+ SHA512 (pip-19.3.1-tests.tar.gz) = fb058fcaaff3325341af5f4746be0c7943953c43fb721124758320363532911ca399f254a58e347c72795adc41764600bc6d02efce0e1e27d4b6d130efad9945

  SHA512 (d2e63fbfc62af3b7050f619b2f5bb8658985b931.tar.gz) = fc7b11c5cbf6322469ce2eaca2a8d7eb60b17398d316f7465ab5d3d38dabd00ee22a3da7437a28f6312f0115f77f2df0d8bf0abc671e055eef06356c94283409

  SHA512 (2018.2.tar.gz) = 4c09c43a70ecb3ca3bc9445b01bf209eb382e41d9c969145696dea38551992ed88fd9b725a1264380f3dbdf8acdaf5ada3ef86b44255cdfbdbe4a01a1630912d

Drop upstreamed patch that fixed expected output in test to not break with alpha/beta/rc Python versions

There are currently 6 failing tests that I didn't have time to explore yet:

FAILED tests/functional/test_freeze.py::test_freeze_path - RuntimeError: stde...
FAILED tests/functional/test_freeze.py::test_freeze_path_exclude_user - Runti...
FAILED tests/functional/test_freeze.py::test_freeze_path_multiple - RuntimeEr...
FAILED tests/functional/test_install.py::test_install_no_binary_builds_pep_517_wheel
FAILED tests/functional/test_install_config.py::test_config_file_override_stack
FAILED tests/functional/test_install_upgrade.py::test_no_upgrade_unless_requested

https://koji.fedoraproject.org/koji/taskinfo?taskID=38946525

All failing tests seem to be failing due to the lack of an internet
connection. So I'm going to disable them.

FAILED test_freeze_path

E               WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7fe6435ef280>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/
tests/lib/__init__.py:404: RuntimeError

FAILED test_freeze_path_exclude_user

E               WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f87ae751310>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/
tests/lib/__init__.py:404: RuntimeError

FAILED test_freeze_path_multiple

E               WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f07e6253280>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/
tests/lib/__init__.py:404: RuntimeError

FAILED test_install_no_binary_builds_pep_517_wheel

WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f7234e924c0>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/setuptools/
Processing /tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/data/packages/setuptools-0.9.6.tar.gz
    ERROR: Command errored out with exit status 1:
     command: /tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/venv/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/tmp/pip-install-b_6lf4z6/setuptools/setup.py'"'"'; __file__='"'"'/tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/tmp/pip-install-b_6lf4z6/setuptools/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/tmp/pip-install-b_6lf4z6/setuptools/pip-egg-info
         cwd: /tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/tmp/pip-install-b_6lf4z6/setuptools/

FAILED test_config_file_override_stack

WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f966900f490>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/initools/
ERROR: Could not find a version that satisfies the requirement INITools (from versions: none)
ERROR: No matching distribution found for INITools

FAILED test_no_upgrade_unless_requested

WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7fd66be48100>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/initools/
ERROR: Could not find a version that satisfies the requirement INITools==0.1 (from versions: none)
ERROR: No matching distribution found for INITools==0.1

Koji build.log: https://kojipkgs.fedoraproject.org//work/tasks/6556/38946556/build.log

The only one I'm not entirely sure about is test_install_no_binary_builds_pep_517_wheel, it's possible the lack of internet is not the real culprit? @churchyard what do you think?

1 new commit added

  • squash!
a month ago

2 new commits added

  • squash! Disabled internet tests
  • Update to 19.3.1 (#1761508)
a month ago

All failing tests seem to be failing due to the lack of an internet

We have -m 'not network' - please double check and submit a PR upstream that marks them as such. It has been done previously by us at least once: https://github.com/pypa/pip/pull/6263

AttributeError: module 'importlib._bootstrap' has no attribute 'SourceFileLoader'

This is indeed weird. Does it need a newer setuptools version maybe?

2 new commits added

  • squash! Mark network tests as needing network to automatically skip them
  • squash! Updated bundled libs
a month ago

Filed upstream: https://github.com/pypa/pip/pull/7359

And I added the patch to the spec to mark the tests as needing network so they are skipped.

rebased onto 9e8620b

24 days ago

rebased onto c6468e6

24 days ago

I believe the PR is complete. What do you think, @churchyard ?

the new version of pip is this one. I'd attempt to from pip._internal.main import main by default and failover to from pip._internal import main based on ImportError.

there were 4 sources, now there are only 2. I have checked and the extra removed sources ares till needed.

the new version of pip is this one. I'd attempt to from pip._internal.main import main by default and failover to from pip._internal import main based on ImportError.

I was trying to make it as similar to the previous patch. But yeah, it did seem a bit wrong not to try the correct method first :) Ok, I'll rework it.

1 new commit added

  • squash!
23 days ago

@churchyard Patch reworked and additional sources readded, thanks for the heads up.

Please don't conditionalize the patch definition, only the apply part. That way, the SRPM generated --without tests, can be rebuilt --with tests.

I also think that the comments in the pip launcher deserve to be adapted, possbily just moved a bit. Something like this maybe:

try:
    from pip._internal.main import main
except ImportError:
    try:
        # an older version of pip 19 uses this
        # user has most probably downgraded pip in their home
        # so let them run it anyway until ~/.local/bin makes it in front of the PATH
        from pip._internal import main
    except ImportError:
        # an even older version (before 19) had this:
        from pip import main

Please don't conditionalize the patch definition, only the apply part. That way, the SRPM generated --without tests, can be rebuilt --with tests.

I would normally do that, but the test sources are conditionalized. Why ship the patch for tests if there's no tests?

%if %{with tests}
Source1:        pip-%{version}-tests.tar.gz
%endif

I also think that the comments in the pip launcher deserve to be adapted, possbily just moved a bit. Something like this maybe:
try:
from pip._internal.main import main
except ImportError:
try:
# an older version of pip 19 uses this
# user has most probably downgraded pip in their home
# so let them run it anyway until ~/.local/bin makes it in front of the PATH
from pip._internal import main
except ImportError:
# an even older version (before 19) had this:
from pip import main

Will do.

I would normally do that, but the test sources are conditionalized.

Oh. You are correct. I assumed they are not. They should not be. Let's fix that?

I would normally do that, but the test sources are conditionalized.

Oh. You are correct. I assumed they are not. They should not be. Let's fix that?

I don't know the reason they're conditionalized (people need to comment more :) ), but I have run into this in the past.

It's useful for when you want to build without tests and you don't have the test sources. Because if you don't conditionalize it like this, it will refuse to build without the test sources.

I would keep it, it's useful.

1 new commit added

  • squash! Updated comments in the bindir patch
23 days ago

@churchyard Reworked the comments in the patch, what do you think?

It's useful for when you want to build without tests and you don't have the test sources.

fedpkg will download them. I don't understand this argument, sorry. However let's not block the PR on this.

Things left to do:

  • squash
  • see the CI result (I get 504 Gateway Time-out now)
  • review the vendored licensing update (will do tmrw)

rebased onto 32655fc

23 days ago

It's useful for when you want to build without tests and you don't have the test sources.

fedpkg will download them. I don't understand this argument, sorry. However let's not block the PR on this.

Last time I had this problem, there were no tests available for that version at all. So I had to fake the file to get the build to start.

Things left to do:

squash

Done

1 new commit added

  • fixup! Update to 19.3.1 (#1761508)
22 days ago

I've reviewed the licensing and pushed a small fixup commit for consistency.

Let's squash it once you see it.

The CI is broken now. Lt's run the tests manually?

Squashed, and building a scratch build in Koji in lieu of CI.

https://koji.fedoraproject.org/koji/taskinfo?taskID=39103531

rebased onto 1b6e4d4

22 days ago

Note that the Fedora Ci job normally runs https://src.fedoraproject.org/tests/python/blob/master/f/smoke/venv.sh for various Pythons to make sure our wheels work with them, not just the build.

Possible workaround: make main module callable.

Links towards a permanent solution:

https://discuss.python.org/t/can-we-finally-add-a-minimal-api-to-pip/2833/3
https://github.com/pypa/pip/pull/7061
https://github.com/python/cpython/pull/16782

In the meantime, let's look how to patch the new pip to support both old and new invocation.

I have a minimal patch. Running the build in mock and will test it locally with one older Python.

rebased onto f6e9c06

20 hours ago

Added a commit. Also fixed a typo in yours.

Let's see what does the CI say.

Python 2.7 is broken, would need to rework the patch a bit.

1 new commit added

  • Callable main module patch: Support Python 2.7
19 hours ago