forked from pool/python-pip
		
	* Deprecations and Removals
    + Deprecate installation with setup.py install when no-binary is enabled
      for source distributions without pyproject.toml. (#11452)
    + Deprecate installation with setup.py install when the wheel package is
      absent for source distributions without pyproject.toml. (#8559)
    + Drop --use-deprecated=out-of-tree-build. (#11001)
  * Features
    + Use the data-dist-info-metadata attribute from PEP 658 to resolve
      distribution metadata without downloading the dist yet. (#11111)
    + Add --dry-run option to pip install, to let it print what it would
     install but not actually make changes in the target environment. (#11096)
    + Add pip inspect command to obtain the list of installed distributions
     and other information about the Python environment, in JSON. (#11245)
    + Add option to install and uninstall commands to opt-out from
      running-as-root warning. (#10556)
    + Add a user interface for supplying config settings to build backends.
      (#11059)
    + Explains why specified version cannot be retrieved when Requires-Python
      is not satisfied. (#9615)
    + Validate build dependencies when using --no-build-isolation. (#9794)
  * Bug Fixes
    + Fix entry point generation of pip.X, pipX.Y, and easy_install-X.Y to
      correctly account for multi-digit Python version segments. (#11547)
    + Fix --no-index when --index-url or --extra-index-url is specified
      inside a requirements file. (#11276)
    + Ignore distributions with invalid Name in metadata instead of crashing,
      when using the importlib.metadata backend. (#11352)
    + Raise RequirementsFileParseError when parsing malformed requirements
      options that can’t be sucessfully parsed by shlex. (#11491)
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-pip?expand=0&rev=101
		
	
		
			
				
	
	
		
			153 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			153 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| ---
 | |
|  src/pip/_vendor/certifi/core.py |   70 ++++------------------------------------
 | |
|  tests/unit/test_options.py      |    5 ++
 | |
|  2 files changed, 13 insertions(+), 62 deletions(-)
 | |
| 
 | |
| Index: pip-22.3.1/src/pip/_vendor/certifi/core.py
 | |
| ===================================================================
 | |
| --- pip-22.3.1.orig/src/pip/_vendor/certifi/core.py
 | |
| +++ pip-22.3.1/src/pip/_vendor/certifi/core.py
 | |
| @@ -3,106 +3,17 @@ certifi.py
 | |
|  ~~~~~~~~~~
 | |
|  
 | |
|  This module returns the installation location of cacert.pem or its contents.
 | |
| +Patched by openSUSE: return the system bundle
 | |
|  """
 | |
| -import sys
 | |
|  
 | |
| +def read_text(_module=None, _path=None, encoding="ascii"):
 | |
| +    with open(where(), "r", encoding=encoding) as data:
 | |
| +        return data.read()
 | |
|  
 | |
| -if sys.version_info >= (3, 11):
 | |
|  
 | |
| -    from importlib.resources import as_file, files
 | |
| +def where() -> str:
 | |
| +    return "/etc/ssl/ca-bundle.pem"
 | |
|  
 | |
| -    _CACERT_CTX = None
 | |
| -    _CACERT_PATH = None
 | |
| -
 | |
| -    def where() -> str:
 | |
| -        # This is slightly terrible, but we want to delay extracting the file
 | |
| -        # in cases where we're inside of a zipimport situation until someone
 | |
| -        # actually calls where(), but we don't want to re-extract the file
 | |
| -        # on every call of where(), so we'll do it once then store it in a
 | |
| -        # global variable.
 | |
| -        global _CACERT_CTX
 | |
| -        global _CACERT_PATH
 | |
| -        if _CACERT_PATH is None:
 | |
| -            # This is slightly janky, the importlib.resources API wants you to
 | |
| -            # manage the cleanup of this file, so it doesn't actually return a
 | |
| -            # path, it returns a context manager that will give you the path
 | |
| -            # when you enter it and will do any cleanup when you leave it. In
 | |
| -            # the common case of not needing a temporary file, it will just
 | |
| -            # return the file system location and the __exit__() is a no-op.
 | |
| -            #
 | |
| -            # We also have to hold onto the actual context manager, because
 | |
| -            # it will do the cleanup whenever it gets garbage collected, so
 | |
| -            # we will also store that at the global level as well.
 | |
| -            _CACERT_CTX = as_file(files("pip._vendor.certifi").joinpath("cacert.pem"))
 | |
| -            _CACERT_PATH = str(_CACERT_CTX.__enter__())
 | |
| -
 | |
| -        return _CACERT_PATH
 | |
| -
 | |
| -    def contents() -> str:
 | |
| -        return files("pip._vendor.certifi").joinpath("cacert.pem").read_text(encoding="ascii")
 | |
| -
 | |
| -elif sys.version_info >= (3, 7):
 | |
| -
 | |
| -    from importlib.resources import path as get_path, read_text
 | |
| -
 | |
| -    _CACERT_CTX = None
 | |
| -    _CACERT_PATH = None
 | |
| -
 | |
| -    def where() -> str:
 | |
| -        # This is slightly terrible, but we want to delay extracting the
 | |
| -        # file in cases where we're inside of a zipimport situation until
 | |
| -        # someone actually calls where(), but we don't want to re-extract
 | |
| -        # the file on every call of where(), so we'll do it once then store
 | |
| -        # it in a global variable.
 | |
| -        global _CACERT_CTX
 | |
| -        global _CACERT_PATH
 | |
| -        if _CACERT_PATH is None:
 | |
| -            # This is slightly janky, the importlib.resources API wants you
 | |
| -            # to manage the cleanup of this file, so it doesn't actually
 | |
| -            # return a path, it returns a context manager that will give
 | |
| -            # you the path when you enter it and will do any cleanup when
 | |
| -            # you leave it. In the common case of not needing a temporary
 | |
| -            # file, it will just return the file system location and the
 | |
| -            # __exit__() is a no-op.
 | |
| -            #
 | |
| -            # We also have to hold onto the actual context manager, because
 | |
| -            # it will do the cleanup whenever it gets garbage collected, so
 | |
| -            # we will also store that at the global level as well.
 | |
| -            _CACERT_CTX = get_path("pip._vendor.certifi", "cacert.pem")
 | |
| -            _CACERT_PATH = str(_CACERT_CTX.__enter__())
 | |
| -
 | |
| -        return _CACERT_PATH
 | |
| -
 | |
| -    def contents() -> str:
 | |
| -        return read_text("pip._vendor.certifi", "cacert.pem", encoding="ascii")
 | |
| -
 | |
| -else:
 | |
| -    import os
 | |
| -    import types
 | |
| -    from typing import Union
 | |
| -
 | |
| -    Package = Union[types.ModuleType, str]
 | |
| -    Resource = Union[str, "os.PathLike"]
 | |
| -
 | |
| -    # This fallback will work for Python versions prior to 3.7 that lack the
 | |
| -    # importlib.resources module but relies on the existing `where` function
 | |
| -    # so won't address issues with environments like PyOxidizer that don't set
 | |
| -    # __file__ on modules.
 | |
| -    def read_text(
 | |
| -        package: Package,
 | |
| -        resource: Resource,
 | |
| -        encoding: str = 'utf-8',
 | |
| -        errors: str = 'strict'
 | |
| -    ) -> str:
 | |
| -        with open(where(), encoding=encoding) as data:
 | |
| -            return data.read()
 | |
| -
 | |
| -    # If we don't have importlib.resources, then we will just do the old logic
 | |
| -    # of assuming we're on the filesystem and munge the path directly.
 | |
| -    def where() -> str:
 | |
| -        f = os.path.dirname(__file__)
 | |
|  
 | |
| -        return os.path.join(f, "cacert.pem")
 | |
| -
 | |
| -    def contents() -> str:
 | |
| -        return read_text("pip._vendor.certifi", "cacert.pem", encoding="ascii")
 | |
| +def contents() -> str:
 | |
| +    return read_text(encoding="ascii")
 | |
| Index: pip-22.3.1/tests/unit/test_options.py
 | |
| ===================================================================
 | |
| --- pip-22.3.1.orig/tests/unit/test_options.py
 | |
| +++ pip-22.3.1/tests/unit/test_options.py
 | |
| @@ -1,4 +1,5 @@
 | |
|  import os
 | |
| +import os.path
 | |
|  from contextlib import contextmanager
 | |
|  from optparse import Values
 | |
|  from tempfile import NamedTemporaryFile
 | |
| @@ -11,6 +12,7 @@ from pip._internal.cli.main import main
 | |
|  from pip._internal.commands import create_command
 | |
|  from pip._internal.commands.configuration import ConfigurationCommand
 | |
|  from pip._internal.exceptions import PipError
 | |
| +from pip._vendor.certifi import where
 | |
|  from tests.lib.options_helpers import AddFakeCommandMixin
 | |
|  
 | |
|  
 | |
| @@ -619,6 +621,9 @@ class TestOptionsConfigFiles:
 | |
|          else:
 | |
|              assert expect == cmd._determine_file(options, need_value=False)
 | |
|  
 | |
| +    def test_certificates(self):
 | |
| +        assert os.path.exists(where())
 | |
| +
 | |
|  
 | |
|  class TestOptionsExpandUser(AddFakeCommandMixin):
 | |
|      def test_cache_dir(self) -> None:
 |