Group :: Development/Python3
RPM: python3-module-setuptools
Main Changelog Spec Patches Sources Download Gear Bugs e FR Repocop
Patch: python3-module-setuptools-68.2.2-alt.patch
Download
Download
pytest.ini | 2 +
setuptools/_distutils/command/install.py | 27 ++-
setuptools/_distutils/sysconfig.py | 9 +-
setuptools/_distutils/unixccompiler.py | 9 +
setuptools/command/easy_install.py | 4 +-
setuptools/command/test.py | 5 +
setuptools/dist.py | 3 +-
setuptools/tests/config/downloads/.gitignore | 1 +
...e6b7080f2408d5f1dd544c0e1cf88378b7b10_setup.cfg | 149 ++++++++++++++++
...49d11a6e56ca8feb4b055b681cec457ef3a3d_setup.cfg | 69 ++++++++
...08b5c510cd6969127a6a2ab6f832edddef296_setup.cfg | 53 ++++++
...d3a96390e970b6b962823bfea78b4f7e1c537_setup.cfg | 56 ++++++
...1f425fae545f42795665af4162006b36c5e4a_setup.cfg | 101 +++++++++++
...6b6cf57bd6a8a261f67091aca8ca78eeec1e3_setup.cfg | 117 ++++++++++++
...2eb7fefb7dce065193967f31f805180508448_setup.cfg | 108 ++++++++++++
...7343f934a33dc231c8c74be95d8365537c376_setup.cfg | 196 +++++++++++++++++++++
...852128dd6f07511b618d6edea35046bd0c6ff_setup.cfg | 100 +++++++++++
...990172fec37766b3566679724aa8bf70ae06d_setup.cfg | 143 +++++++++++++++
...eda6e3da26a4d28c2663ffb85c4960bdb990c_setup.cfg | 129 ++++++++++++++
...d203cd896afec7f715aa2ff5980a403459a3b_setup.cfg | 71 ++++++++
...aa5dc059fbd04307419c667cc4961bc9df4b8_setup.cfg | 172 ++++++++++++++++++
...ef63291d13589c4e21aa182cd1529257e9a0a_setup.cfg | 50 ++++++
...e96dae487edbd2f55b561b31b68afac1dabe6_setup.cfg | 105 +++++++++++
...5392ca980952a6960d82b2f2d2ea10aa53239_setup.cfg | 65 +++++++
...f5718904b620be8d63f2474229945d6f8ba5d_setup.cfg | 181 +++++++++++++++++++
...87a94b8d3861d80e9e4236cd480bfdd21c90d_setup.cfg | 47 +++++
...9d5dcf578f7c7986fa76841a6b793f813df35_setup.cfg | 143 +++++++++++++++
setuptools/tests/fixtures.py | 33 ++--
setuptools/tests/test_distutils_adoption.py | 117 ++++++++++++
setuptools/tests/test_easy_install.py | 15 +-
setuptools/tests/test_editable_install.py | 36 +++-
setuptools/tests/test_virtualenv.py | 4 +
32 files changed, 2297 insertions(+), 23 deletions(-)
diff --git a/pytest.ini b/pytest.ini
index 20421f945..f282a313d 100644
--- a/pytest.ini
+++ b/pytest.ini
@@ -70,6 +70,8 @@ filterwarnings=
ignore::setuptools.command.editable_wheel.InformationOnly
+ ignore:distutils Version classes are deprecated. Use packaging.version instead:DeprecationWarning:sphinx
+
# https://github.com/pypa/setuptools/issues/3655
ignore:The --rsyncdir command line argument and rsyncdirs config variable are deprecated.:DeprecationWarning
diff --git a/setuptools/_distutils/command/install.py b/setuptools/_distutils/command/install.py
index a7ac4e607..bb1d56e0a 100644
--- a/setuptools/_distutils/command/install.py
+++ b/setuptools/_distutils/command/install.py
@@ -34,9 +34,15 @@ WINDOWS_SCHEME = {
INSTALL_SCHEMES = {
'posix_prefix': {
- 'purelib': '{base}/lib/{implementation_lower}{py_version_short}/site-packages',
- 'platlib': '{platbase}/{platlibdir}/{implementation_lower}'
- '{py_version_short}/site-packages',
+ # ALT ships site-packages in python3 directory (upstream: python3.x one)
+ 'purelib': (
+ '{base}/lib/{implementation_lower}%d/site-packages'
+ % sys.version_info.major
+ ),
+ 'platlib': (
+ '{platbase}/{platlibdir}/{implementation_lower}%d/site-packages'
+ % sys.version_info.major
+ ),
'headers': '{base}/include/{implementation_lower}'
'{py_version_short}{abiflags}/{dist_name}',
'scripts': '{base}/bin',
@@ -566,7 +572,20 @@ class install(Command):
)
# Allow Fedora to add components to the prefix
- _prefix_addition = getattr(sysconfig, '_prefix_addition', "")
+ # _prefix_addition = getattr(sysconfig, '_prefix_addition', "")
+
+ # self.prefix is set to sys.prefix + /local/
+ # if neither RPM build nor virtual environment is
+ # detected to make pip and distutils install packages
+ # into the separate location.
+ if (
+ not hasattr(sys, "real_prefix")
+ and sys.prefix == sys.base_prefix
+ and "RPM_BUILD_ROOT" not in os.environ
+ ):
+ _prefix_addition = "/local"
+ else:
+ _prefix_addition = ""
self.prefix = os.path.normpath(sys.prefix) + _prefix_addition
self.exec_prefix = os.path.normpath(sys.exec_prefix) + _prefix_addition
diff --git a/setuptools/_distutils/sysconfig.py b/setuptools/_distutils/sysconfig.py
index a40a7231b..941047bf8 100644
--- a/setuptools/_distutils/sysconfig.py
+++ b/setuptools/_distutils/sysconfig.py
@@ -253,7 +253,14 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
# Pure Python
libdir = "lib"
implementation = 'pypy' if IS_PYPY else 'python'
- libpython = os.path.join(prefix, libdir, implementation + get_python_version())
+
+ if standard_lib:
+ alt_python_dir = implementation + get_python_version()
+ else:
+ alt_python_dir = implementation + str(sys.version_info.major)
+
+ libpython = os.path.join(prefix, libdir, alt_python_dir)
+
return _posix_lib(standard_lib, libpython, early_prefix, prefix)
elif os.name == "nt":
if standard_lib:
diff --git a/setuptools/_distutils/unixccompiler.py b/setuptools/_distutils/unixccompiler.py
index 6ca2332ae..b29ea2008 100644
--- a/setuptools/_distutils/unixccompiler.py
+++ b/setuptools/_distutils/unixccompiler.py
@@ -142,6 +142,15 @@ class UnixCCompiler(CCompiler):
if sys.platform == "cygwin":
exe_extension = ".exe"
+ def _fix_lib_args(self, libraries, library_dirs, runtime_library_dirs):
+ """Remove standard library path from rpath"""
+ libraries, library_dirs, runtime_library_dirs = super()._fix_lib_args(
+ libraries, library_dirs, runtime_library_dirs)
+ libdir = sysconfig.get_config_var('LIBDIR')
+ if runtime_library_dirs and (libdir in runtime_library_dirs):
+ runtime_library_dirs.remove(libdir)
+ return libraries, library_dirs, runtime_library_dirs
+
def preprocess(
self,
source,
diff --git a/setuptools/command/easy_install.py b/setuptools/command/easy_install.py
index 8ba4f094d..6f2bbe813 100644
--- a/setuptools/command/easy_install.py
+++ b/setuptools/command/easy_install.py
@@ -1375,7 +1375,9 @@ class easy_install(Command):
INSTALL_SCHEMES = dict(
posix=dict(
- install_dir='$base/lib/python$py_version_short/site-packages',
+ install_dir=(
+ f'$base/lib/python{sys.version_info.major}/site-packages'
+ ),
script_dir='$base/bin',
),
)
diff --git a/setuptools/command/test.py b/setuptools/command/test.py
index 5fce6660c..a09595ff8 100644
--- a/setuptools/command/test.py
+++ b/setuptools/command/test.py
@@ -190,6 +190,11 @@ class test(Command):
Install the requirements indicated by self.distribution and
return an iterable of the dists that were built.
"""
+ from os import environ
+ if environ.get('RPM_BUILD_DIR'):
+ dist.install_requires = []
+ dist.tests_require = []
+ dist.extras_require = {}
ir_d = dist.fetch_build_eggs(dist.install_requires)
tr_d = dist.fetch_build_eggs(dist.tests_require or [])
er_d = dist.fetch_build_eggs(
diff --git a/setuptools/dist.py b/setuptools/dist.py
index 2672f928d..77d45341c 100644
--- a/setuptools/dist.py
+++ b/setuptools/dist.py
@@ -279,7 +279,8 @@ class Distribution(_Distribution):
name = _normalization.safe_name(str(attrs['name'])).lower()
with suppress(metadata.PackageNotFoundError):
dist = metadata.distribution(name)
- if dist is not None and not dist.read_text('PKG-INFO'):
+ if dist is not None and (os.environ.get('RPM_BUILD_DIR')
+ or not dist.read_text('PKG-INFO')):
dist._version = _normalization.safe_version(str(attrs['version']))
self._patched_dist = dist
diff --git a/setuptools/tests/config/downloads/.gitignore b/setuptools/tests/config/downloads/.gitignore
index df3779fc4..104e2502f 100644
--- a/setuptools/tests/config/downloads/.gitignore
+++ b/setuptools/tests/config/downloads/.gitignore
@@ -1,4 +1,5 @@
*
+!*_setup.cfg
!.gitignore
!__init__.py
!preload.py
diff --git a/setuptools/tests/config/downloads/aio-libs_aiohttp5e0e6b7080f2408d5f1dd544c0e1cf88378b7b10_setup.cfg b/setuptools/tests/config/downloads/aio-libs_aiohttp5e0e6b7080f2408d5f1dd544c0e1cf88378b7b10_setup.cfg
new file mode 100644
index 000000000..e6dd14bc0
--- /dev/null
+++ b/setuptools/tests/config/downloads/aio-libs_aiohttp5e0e6b7080f2408d5f1dd544c0e1cf88378b7b10_setup.cfg
@@ -0,0 +1,149 @@
+[metadata]
+name = aiohttp
+version = attr: aiohttp.__version__
+url = https://github.com/aio-libs/aiohttp
+project_urls =
+ Chat: Gitter = https://gitter.im/aio-libs/Lobby
+ CI: GitHub Actions = https://github.com/aio-libs/aiohttp/actions?query=workflow%%3ACI
+ Coverage: codecov = https://codecov.io/github/aio-libs/aiohttp
+ Docs: Changelog = https://docs.aiohttp.org/en/stable/changes.html
+ Docs: RTD = https://docs.aiohttp.org
+ GitHub: issues = https://github.com/aio-libs/aiohttp/issues
+ GitHub: repo = https://github.com/aio-libs/aiohttp
+description = Async http client/server framework (asyncio)
+long_description = file: README.rst
+long_description_content_type = text/x-rst
+maintainer = aiohttp team <team@aiohttp.org>
+maintainer_email = team@aiohttp.org
+license = Apache 2
+license_files = LICENSE.txt
+classifiers =
+ Development Status :: 5 - Production/Stable
+
+ Framework :: AsyncIO
+
+ Intended Audience :: Developers
+
+ License :: OSI Approved :: Apache Software License
+
+ Operating System :: POSIX
+ Operating System :: MacOS :: MacOS X
+ Operating System :: Microsoft :: Windows
+
+ Programming Language :: Python
+ Programming Language :: Python :: 3
+ Programming Language :: Python :: 3.7
+ Programming Language :: Python :: 3.8
+ Programming Language :: Python :: 3.9
+ Programming Language :: Python :: 3.10
+
+ Topic :: Internet :: WWW/HTTP
+
+[options]
+python_requires = >=3.7
+packages = find:
+# https://setuptools.readthedocs.io/en/latest/setuptools.html#setting-the-zip-safe-flag
+zip_safe = False
+include_package_data = True
+
+install_requires =
+ charset-normalizer >=2.0, < 3.0
+ multidict >=4.5, < 7.0
+ async_timeout >= 4.0, < 5.0
+ asynctest == 0.13.0; python_version<"3.8"
+ yarl >= 1.0, < 2.0
+ typing_extensions >= 3.7.4
+ frozenlist >= 1.1.1
+ aiosignal >= 1.1.2
+
+[options.exclude_package_data]
+* =
+ *.c
+ *.h
+
+[options.extras_require]
+speedups =
+ aiodns >= 1.1
+ Brotli
+ cchardet
+
+[options.packages.find]
+exclude =
+ examples
+
+[options.package_data]
+# Ref:
+# https://setuptools.readthedocs.io/en/latest/setuptools.html#options
+# (see notes for the asterisk/`*` meaning)
+* =
+ *.so
+
+[pep8]
+max-line-length=79
+
+[easy_install]
+zip_ok = false
+
+[flake8]
+# TODO: don't disable D*, fix up issues instead
+ignore = N801,N802,N803,E203,E226,E305,W504,E252,E301,E302,E704,W503,W504,F811,D1,D4
+max-line-length = 88
+
+[isort]
+line_length=88
+include_trailing_comma=True
+multi_line_output=3
+force_grid_wrap=0
+combine_as_imports=True
+
+known_third_party=jinja2,pytest,multidict,yarl,gunicorn,freezegun
+known_first_party=aiohttp,aiohttp_jinja2,aiopg
+
+[report]
+exclude_lines =
+ @abc.abstractmethod
+ @abstractmethod
+
+[coverage:run]
+branch = True
+source = aiohttp, tests
+omit = site-packages
+
+[tool:pytest]
+addopts =
+ # show 10 slowest invocations:
+ --durations=10
+
+ # a bit of verbosity doesn't hurt:
+ -v
+
+ # report all the things == -rxXs:
+ -ra
+
+ # show values of the local vars in errors:
+ --showlocals
+
+ # `pytest-cov`:
+ --cov=aiohttp
+ --cov=tests/
+
+ # run tests that are not marked with dev_mode
+ -m "not dev_mode"
+filterwarnings =
+ error
+ ignore:module 'ssl' has no attribute 'OP_NO_COMPRESSION'. The Python interpreter is compiled against OpenSSL < 1.0.0. Ref. https.//docs.python.org/3/library/ssl.html#ssl.OP_NO_COMPRESSION:UserWarning
+ ignore:Exception ignored in. <function _SSLProtocolTransport.__del__ at.:pytest.PytestUnraisableExceptionWarning:_pytest.unraisableexception
+ ignore:Exception ignored in. <coroutine object BaseConnector.close at 0x.:pytest.PytestUnraisableExceptionWarning:_pytest.unraisableexception
+ ignore:Exception ignored in. <coroutine object ClientSession._request at 0x.:pytest.PytestUnraisableExceptionWarning:_pytest.unraisableexception
+ ignore:Exception ignored in. <function ClientSession.__del__ at 0x.:pytest.PytestUnraisableExceptionWarning:_pytest.unraisableexception
+ ignore:Exception ignored in. <_io.FileIO .closed.>:pytest.PytestUnraisableExceptionWarning:_pytest.unraisableexception
+ ignore:The loop argument is deprecated:DeprecationWarning:asyncio
+ ignore:Creating a LegacyVersion has been deprecated and will be removed in the next major release:DeprecationWarning::
+junit_suite_name = aiohttp_test_suite
+norecursedirs = dist docs build .tox .eggs
+minversion = 3.8.2
+testpaths = tests/
+junit_family=xunit2
+xfail_strict = true
+markers =
+ dev_mode: mark test to run in dev mode.
diff --git a/setuptools/tests/config/downloads/django_django4e249d11a6e56ca8feb4b055b681cec457ef3a3d_setup.cfg b/setuptools/tests/config/downloads/django_django4e249d11a6e56ca8feb4b055b681cec457ef3a3d_setup.cfg
new file mode 100644
index 000000000..d20e8dfd1
--- /dev/null
+++ b/setuptools/tests/config/downloads/django_django4e249d11a6e56ca8feb4b055b681cec457ef3a3d_setup.cfg
@@ -0,0 +1,69 @@
+[metadata]
+name = Django
+version = attr: django.__version__
+url = https://www.djangoproject.com/
+author = Django Software Foundation
+author_email = foundation@djangoproject.com
+description = A high-level Python web framework that encourages rapid development and clean, pragmatic design.
+long_description = file: README.rst
+license = BSD-3-Clause
+classifiers =
+ Development Status :: 2 - Pre-Alpha
+ Environment :: Web Environment
+ Framework :: Django
+ Intended Audience :: Developers
+ License :: OSI Approved :: BSD License
+ Operating System :: OS Independent
+ Programming Language :: Python
+ Programming Language :: Python :: 3
+ Programming Language :: Python :: 3 :: Only
+ Programming Language :: Python :: 3.8
+ Programming Language :: Python :: 3.9
+ Programming Language :: Python :: 3.10
+ Topic :: Internet :: WWW/HTTP
+ Topic :: Internet :: WWW/HTTP :: Dynamic Content
+ Topic :: Internet :: WWW/HTTP :: WSGI
+ Topic :: Software Development :: Libraries :: Application Frameworks
+ Topic :: Software Development :: Libraries :: Python Modules
+project_urls =
+ Documentation = https://docs.djangoproject.com/
+ Release notes = https://docs.djangoproject.com/en/stable/releases/
+ Funding = https://www.djangoproject.com/fundraising/
+ Source = https://github.com/django/django
+ Tracker = https://code.djangoproject.com/
+
+[options]
+python_requires = >=3.8
+packages = find:
+include_package_data = true
+zip_safe = false
+install_requires =
+ asgiref >= 3.4.1
+ backports.zoneinfo; python_version<"3.9"
+ sqlparse >= 0.2.2
+ tzdata; sys_platform == 'win32'
+
+[options.entry_points]
+console_scripts =
+ django-admin = django.core.management:execute_from_command_line
+
+[options.extras_require]
+argon2 = argon2-cffi >= 19.1.0
+bcrypt = bcrypt
+
+[bdist_rpm]
+doc_files = docs extras AUTHORS INSTALL LICENSE README.rst
+install_script = scripts/rpm-install.sh
+
+[flake8]
+exclude = build,.git,.tox,./tests/.env
+ignore = W504,W601
+max-line-length = 119
+
+[isort]
+combine_as_imports = true
+default_section = THIRDPARTY
+include_trailing_comma = true
+known_first_party = django
+line_length = 79
+multi_line_output = 5
diff --git a/setuptools/tests/config/downloads/jaraco_skeletond9008b5c510cd6969127a6a2ab6f832edddef296_setup.cfg b/setuptools/tests/config/downloads/jaraco_skeletond9008b5c510cd6969127a6a2ab6f832edddef296_setup.cfg
new file mode 100644
index 000000000..bd1da7a28
--- /dev/null
+++ b/setuptools/tests/config/downloads/jaraco_skeletond9008b5c510cd6969127a6a2ab6f832edddef296_setup.cfg
@@ -0,0 +1,53 @@
+[metadata]
+name = skeleton
+author = Jason R. Coombs
+author_email = jaraco@jaraco.com
+description = skeleton
+long_description = file:README.rst
+url = https://github.com/jaraco/skeleton
+classifiers =
+ Development Status :: 5 - Production/Stable
+ Intended Audience :: Developers
+ License :: OSI Approved :: MIT License
+ Programming Language :: Python :: 3
+ Programming Language :: Python :: 3 :: Only
+
+[options]
+packages = find_namespace:
+include_package_data = true
+python_requires = >=3.7
+install_requires =
+
+[options.packages.find]
+exclude =
+ build*
+ dist*
+ docs*
+ tests*
+
+[options.extras_require]
+testing =
+ # upstream
+ pytest >= 6
+ pytest-checkdocs >= 2.4
+ pytest-flake8
+ pytest-black >= 0.3.7; \
+ # workaround for jaraco/skeleton#22
+ python_implementation != "PyPy"
+ pytest-cov
+ pytest-mypy; \
+ # workaround for jaraco/skeleton#22
+ python_implementation != "PyPy"
+ pytest-enabler >= 1.0.1
+
+ # local
+
+docs =
+ # upstream
+ sphinx
+ jaraco.packaging >= 8.2
+ rst.linker >= 1.9
+
+ # local
+
+[options.entry_points]
diff --git a/setuptools/tests/config/downloads/jaraco_zipp700d3a96390e970b6b962823bfea78b4f7e1c537_setup.cfg b/setuptools/tests/config/downloads/jaraco_zipp700d3a96390e970b6b962823bfea78b4f7e1c537_setup.cfg
new file mode 100644
index 000000000..c61cf02d2
--- /dev/null
+++ b/setuptools/tests/config/downloads/jaraco_zipp700d3a96390e970b6b962823bfea78b4f7e1c537_setup.cfg
@@ -0,0 +1,56 @@
+[metadata]
+name = zipp
+author = Jason R. Coombs
+author_email = jaraco@jaraco.com
+description = Backport of pathlib-compatible object wrapper for zip files
+long_description = file:README.rst
+url = https://github.com/jaraco/zipp
+classifiers =
+ Development Status :: 5 - Production/Stable
+ Intended Audience :: Developers
+ License :: OSI Approved :: MIT License
+ Programming Language :: Python :: 3
+ Programming Language :: Python :: 3 :: Only
+
+[options]
+packages = find_namespace:
+py_modules = zipp
+include_package_data = true
+python_requires = >=3.6
+install_requires =
+
+[options.packages.find]
+exclude =
+ build*
+ dist*
+ docs*
+ tests*
+
+[options.extras_require]
+testing =
+ # upstream
+ pytest >= 6
+ pytest-checkdocs >= 2.4
+ pytest-flake8
+ pytest-black >= 0.3.7; \
+ # workaround for jaraco/skeleton#22
+ python_implementation != "PyPy"
+ pytest-cov
+ pytest-mypy; \
+ # workaround for jaraco/skeleton#22
+ python_implementation != "PyPy"
+ pytest-enabler >= 1.0.1
+
+ # local
+ jaraco.itertools
+ func-timeout
+
+docs =
+ # upstream
+ sphinx
+ jaraco.packaging >= 8.2
+ rst.linker >= 1.9
+
+ # local
+
+[options.entry_points]
diff --git a/setuptools/tests/config/downloads/pallets_click6411f425fae545f42795665af4162006b36c5e4a_setup.cfg b/setuptools/tests/config/downloads/pallets_click6411f425fae545f42795665af4162006b36c5e4a_setup.cfg
new file mode 100644
index 000000000..6e9de95d1
--- /dev/null
+++ b/setuptools/tests/config/downloads/pallets_click6411f425fae545f42795665af4162006b36c5e4a_setup.cfg
@@ -0,0 +1,101 @@
+[metadata]
+name = click
+version = attr: click.__version__
+url = https://palletsprojects.com/p/click/
+project_urls =
+ Donate = https://palletsprojects.com/donate
+ Documentation = https://click.palletsprojects.com/
+ Changes = https://click.palletsprojects.com/changes/
+ Source Code = https://github.com/pallets/click/
+ Issue Tracker = https://github.com/pallets/click/issues/
+ Twitter = https://twitter.com/PalletsTeam
+ Chat = https://discord.gg/pallets
+license = BSD-3-Clause
+license_files = LICENSE.rst
+author = Armin Ronacher
+author_email = armin.ronacher@active-4.com
+maintainer = Pallets
+maintainer_email = contact@palletsprojects.com
+description = Composable command line interface toolkit
+long_description = file: README.rst
+long_description_content_type = text/x-rst
+classifiers =
+ Development Status :: 5 - Production/Stable
+ Intended Audience :: Developers
+ License :: OSI Approved :: BSD License
+ Operating System :: OS Independent
+ Programming Language :: Python
+
+[options]
+packages = find:
+package_dir = = src
+include_package_data = true
+python_requires = >= 3.7
+# Dependencies are in setup.py for GitHub's dependency graph.
+
+[options.packages.find]
+where = src
+
+[tool:pytest]
+testpaths = tests
+filterwarnings =
+ error
+
+[coverage:run]
+branch = true
+source =
+ click
+ tests
+
+[coverage:paths]
+source =
+ click
+ */site-packages
+
+[flake8]
+# B = bugbear
+# E = pycodestyle errors
+# F = flake8 pyflakes
+# W = pycodestyle warnings
+# B9 = bugbear opinions,
+# ISC = implicit str concat
+select = B, E, F, W, B9, ISC
+ignore =
+ # slice notation whitespace, invalid
+ E203
+ # line length, handled by bugbear B950
+ E501
+ # bare except, handled by bugbear B001
+ E722
+ # bin op line break, invalid
+ W503
+
+# up to 88 allowed by bugbear B950
+max-line-length = 80
+per-file-ignores =
+ # __init__ module exports names
+ src/click/__init__.py: F401
+
+[mypy]
+files = src/click
+python_version = 3.7
+disallow_subclassing_any = True
+disallow_untyped_calls = True
+disallow_untyped_defs = True
+disallow_incomplete_defs = True
+check_untyped_defs = True
+no_implicit_optional = True
+local_partial_types = True
+no_implicit_reexport = True
+strict_equality = True
+warn_redundant_casts = True
+warn_unused_configs = True
+warn_unused_ignores = True
+warn_return_any = True
+warn_unreachable = True
+
+[mypy-colorama.*]
+ignore_missing_imports = True
+
+[mypy-importlib_metadata.*]
+ignore_missing_imports = True
diff --git a/setuptools/tests/config/downloads/pallets_flask9486b6cf57bd6a8a261f67091aca8ca78eeec1e3_setup.cfg b/setuptools/tests/config/downloads/pallets_flask9486b6cf57bd6a8a261f67091aca8ca78eeec1e3_setup.cfg
new file mode 100644
index 000000000..131b3ad35
--- /dev/null
+++ b/setuptools/tests/config/downloads/pallets_flask9486b6cf57bd6a8a261f67091aca8ca78eeec1e3_setup.cfg
@@ -0,0 +1,117 @@
+[metadata]
+name = Flask
+version = attr: flask.__version__
+url = https://palletsprojects.com/p/flask
+project_urls =
+ Donate = https://palletsprojects.com/donate
+ Documentation = https://flask.palletsprojects.com/
+ Changes = https://flask.palletsprojects.com/changes/
+ Source Code = https://github.com/pallets/flask/
+ Issue Tracker = https://github.com/pallets/flask/issues/
+ Twitter = https://twitter.com/PalletsTeam
+ Chat = https://discord.gg/pallets
+license = BSD-3-Clause
+author = Armin Ronacher
+author_email = armin.ronacher@active-4.com
+maintainer = Pallets
+maintainer_email = contact@palletsprojects.com
+description = A simple framework for building complex web applications.
+long_description = file: README.rst
+long_description_content_type = text/x-rst
+classifiers =
+ Development Status :: 5 - Production/Stable
+ Environment :: Web Environment
+ Framework :: Flask
+ Intended Audience :: Developers
+ License :: OSI Approved :: BSD License
+ Operating System :: OS Independent
+ Programming Language :: Python
+ Topic :: Internet :: WWW/HTTP :: Dynamic Content
+ Topic :: Internet :: WWW/HTTP :: WSGI
+ Topic :: Internet :: WWW/HTTP :: WSGI :: Application
+ Topic :: Software Development :: Libraries :: Application Frameworks
+
+[options]
+packages = find:
+package_dir = = src
+include_package_data = true
+python_requires = >= 3.7
+# Dependencies are in setup.py for GitHub's dependency graph.
+
+[options.packages.find]
+where = src
+
+[options.entry_points]
+console_scripts =
+ flask = flask.cli:main
+
+[tool:pytest]
+testpaths = tests
+filterwarnings =
+ error
+
+[coverage:run]
+branch = True
+source =
+ flask
+ tests
+
+[coverage:paths]
+source =
+ src
+ */site-packages
+
+[flake8]
+# B = bugbear
+# E = pycodestyle errors
+# F = flake8 pyflakes
+# W = pycodestyle warnings
+# B9 = bugbear opinions
+# ISC = implicit-str-concat
+select = B, E, F, W, B9, ISC
+ignore =
+ # slice notation whitespace, invalid
+ E203
+ # import at top, too many circular import fixes
+ E402
+ # line length, handled by bugbear B950
+ E501
+ # bare except, handled by bugbear B001
+ E722
+ # bin op line break, invalid
+ W503
+# up to 88 allowed by bugbear B950
+max-line-length = 80
+per-file-ignores =
+ # __init__ module exports names
+ src/flask/__init__.py: F401
+
+[mypy]
+files = src/flask
+python_version = 3.7
+allow_redefinition = True
+disallow_subclassing_any = True
+# disallow_untyped_calls = True
+# disallow_untyped_defs = True
+# disallow_incomplete_defs = True
+no_implicit_optional = True
+local_partial_types = True
+# no_implicit_reexport = True
+strict_equality = True
+warn_redundant_casts = True
+warn_unused_configs = True
+warn_unused_ignores = True
+# warn_return_any = True
+# warn_unreachable = True
+
+[mypy-asgiref.*]
+ignore_missing_imports = True
+
+[mypy-blinker.*]
+ignore_missing_imports = True
+
+[mypy-dotenv.*]
+ignore_missing_imports = True
+
+[mypy-cryptography.*]
+ignore_missing_imports = True
diff --git a/setuptools/tests/config/downloads/pallets_jinja7d72eb7fefb7dce065193967f31f805180508448_setup.cfg b/setuptools/tests/config/downloads/pallets_jinja7d72eb7fefb7dce065193967f31f805180508448_setup.cfg
new file mode 100644
index 000000000..803e8c6cf
--- /dev/null
+++ b/setuptools/tests/config/downloads/pallets_jinja7d72eb7fefb7dce065193967f31f805180508448_setup.cfg
@@ -0,0 +1,108 @@
+[metadata]
+name = Jinja2
+version = attr: jinja2.__version__
+url = https://palletsprojects.com/p/jinja/
+project_urls =
+ Donate = https://palletsprojects.com/donate
+ Documentation = https://jinja.palletsprojects.com/
+ Changes = https://jinja.palletsprojects.com/changes/
+ Source Code = https://github.com/pallets/jinja/
+ Issue Tracker = https://github.com/pallets/jinja/issues/
+ Twitter = https://twitter.com/PalletsTeam
+ Chat = https://discord.gg/pallets
+license = BSD-3-Clause
+license_files = LICENSE.rst
+author = Armin Ronacher
+author_email = armin.ronacher@active-4.com
+maintainer = Pallets
+maintainer_email = contact@palletsprojects.com
+description = A very fast and expressive template engine.
+long_description = file: README.rst
+long_description_content_type = text/x-rst
+classifiers =
+ Development Status :: 5 - Production/Stable
+ Environment :: Web Environment
+ Intended Audience :: Developers
+ License :: OSI Approved :: BSD License
+ Operating System :: OS Independent
+ Programming Language :: Python
+ Topic :: Internet :: WWW/HTTP :: Dynamic Content
+ Topic :: Text Processing :: Markup :: HTML
+
+[options]
+packages = find:
+package_dir = = src
+include_package_data = true
+python_requires = >= 3.7
+# Dependencies are in setup.py for GitHub's dependency graph.
+
+[options.packages.find]
+where = src
+
+[options.entry_points]
+babel.extractors =
+ jinja2 = jinja2.ext:babel_extract[i18n]
+
+[tool:pytest]
+testpaths = tests
+filterwarnings =
+ error
+ # Python 3.9 raises a deprecation from internal asyncio code.
+ ignore:The loop argument:DeprecationWarning:asyncio[.]base_events:542
+
+[coverage:run]
+branch = True
+source =
+ jinja2
+ tests
+
+[coverage:paths]
+source =
+ src
+ */site-packages
+
+[flake8]
+# B = bugbear
+# E = pycodestyle errors
+# F = flake8 pyflakes
+# W = pycodestyle warnings
+# B9 = bugbear opinions
+# ISC = implicit-str-concat
+select = B, E, F, W, B9, ISC
+ignore =
+ # slice notation whitespace, invalid
+ E203
+ # line length, handled by bugbear B950
+ E501
+ # bare except, handled by bugbear B001
+ E722
+ # bin op line break, invalid
+ W503
+# up to 88 allowed by bugbear B950
+max-line-length = 80
+per-file-ignores =
+ # __init__ module exports names
+ src/jinja2/__init__.py: F401
+
+[mypy]
+files = src/jinja2
+python_version = 3.7
+disallow_subclassing_any = True
+disallow_untyped_calls = True
+disallow_untyped_defs = True
+disallow_incomplete_defs = True
+no_implicit_optional = True
+local_partial_types = True
+no_implicit_reexport = True
+strict_equality = True
+warn_redundant_casts = True
+warn_unused_configs = True
+warn_unused_ignores = True
+warn_return_any = True
+warn_unreachable = True
+
+[mypy-jinja2.defaults]
+no_implicit_reexport = False
+
+[mypy-markupsafe]
+no_implicit_reexport = False
diff --git a/setuptools/tests/config/downloads/pandas-dev_pandasbc17343f934a33dc231c8c74be95d8365537c376_setup.cfg b/setuptools/tests/config/downloads/pandas-dev_pandasbc17343f934a33dc231c8c74be95d8365537c376_setup.cfg
new file mode 100644
index 000000000..9deebb835
--- /dev/null
+++ b/setuptools/tests/config/downloads/pandas-dev_pandasbc17343f934a33dc231c8c74be95d8365537c376_setup.cfg
@@ -0,0 +1,196 @@
+[metadata]
+name = pandas
+description = Powerful data structures for data analysis, time series, and statistics
+long_description = file: README.md
+long_description_content_type = text/markdown
+url = https://pandas.pydata.org
+author = The Pandas Development Team
+author_email = pandas-dev@python.org
+license = BSD-3-Clause
+license_file = LICENSE
+platforms = any
+classifiers =
+ Development Status :: 5 - Production/Stable
+ Environment :: Console
+ Intended Audience :: Science/Research
+ License :: OSI Approved :: BSD License
+ Operating System :: OS Independent
+ Programming Language :: Cython
+ Programming Language :: Python
+ Programming Language :: Python :: 3
+ Programming Language :: Python :: 3 :: Only
+ Programming Language :: Python :: 3.8
+ Programming Language :: Python :: 3.9
+ Programming Language :: Python :: 3.10
+ Topic :: Scientific/Engineering
+project_urls =
+ Bug Tracker = https://github.com/pandas-dev/pandas/issues
+ Documentation = https://pandas.pydata.org/pandas-docs/stable
+ Source Code = https://github.com/pandas-dev/pandas
+
+[options]
+packages = find:
+install_requires =
+ numpy>=1.18.5; platform_machine!='aarch64' and platform_machine!='arm64' and python_version<'3.10'
+ numpy>=1.19.2; platform_machine=='aarch64' and python_version<'3.10'
+ numpy>=1.20.0; platform_machine=='arm64' and python_version<'3.10'
+ numpy>=1.21.0; python_version>='3.10'
+ python-dateutil>=2.8.1
+ pytz>=2020.1
+python_requires = >=3.8
+include_package_data = True
+zip_safe = False
+
+[options.entry_points]
+pandas_plotting_backends =
+ matplotlib = pandas:plotting._matplotlib
+
+[options.extras_require]
+test =
+ hypothesis>=5.5.3
+ pytest>=6.0
+ pytest-xdist>=1.31
+
+[options.package_data]
+* = templates/*, _libs/**/*.dll
+
+[build_ext]
+inplace = True
+
+[options.packages.find]
+include = pandas, pandas.*
+
+# See the docstring in versioneer.py for instructions. Note that you must
+# re-run 'versioneer.py setup' after changing this section, and commit the
+# resulting files.
+[versioneer]
+VCS = git
+style = pep440
+versionfile_source = pandas/_version.py
+versionfile_build = pandas/_version.py
+tag_prefix = v
+parentdir_prefix = pandas-
+
+[flake8]
+max-line-length = 88
+ignore =
+ # space before : (needed for how black formats slicing)
+ E203,
+ # line break before binary operator
+ W503,
+ # line break after binary operator
+ W504,
+ # module level import not at top of file
+ E402,
+ # do not assign a lambda expression, use a def
+ E731,
+ # found modulo formatter (incorrect picks up mod operations)
+ S001,
+ # controversial
+ B005,
+ # controversial
+ B006,
+ # controversial
+ B007,
+ # controversial
+ B008,
+ # setattr is used to side-step mypy
+ B009,
+ # getattr is used to side-step mypy
+ B010,
+ # tests use assert False
+ B011,
+ # tests use comparisons but not their returned value
+ B015,
+ # false positives
+ B301
+exclude =
+ doc/sphinxext/*.py,
+ doc/build/*.py,
+ doc/temp/*.py,
+ .eggs/*.py,
+ versioneer.py,
+ # exclude asv benchmark environments from linting
+ env
+per-file-ignores =
+ # private import across modules
+ pandas/tests/*:PDF020
+ # pytest.raises without match=
+ pandas/tests/extension/*:PDF009
+ # os.remove
+ doc/make.py:PDF008
+ # import from pandas._testing
+ pandas/testing.py:PDF014
+
+
+[flake8-rst]
+max-line-length = 84
+bootstrap =
+ import numpy as np
+ import pandas as pd
+ # avoiding error when importing again numpy or pandas
+ np
+ # (in some cases we want to do it to show users)
+ pd
+ignore =
+ # space before : (needed for how black formats slicing)
+ E203,
+ # module level import not at top of file
+ E402,
+ # line break before binary operator
+ W503,
+ # Classes/functions in different blocks can generate those errors
+ # expected 2 blank lines, found 0
+ E302,
+ # expected 2 blank lines after class or function definition, found 0
+ E305,
+ # We use semicolon at the end to avoid displaying plot objects
+ # statement ends with a semicolon
+ E703,
+ # comparison to none should be 'if cond is none:'
+ E711,
+exclude =
+ doc/source/development/contributing_docstring.rst,
+ # work around issue of undefined variable warnings
+ # https://github.com/pandas-dev/pandas/pull/38837#issuecomment-752884156
+ doc/source/getting_started/comparison/includes/*.rst
+
+[codespell]
+ignore-words-list = ba,blocs,coo,hist,nd,sav,ser
+ignore-regex = https://(\w+\.)+
+
+[coverage:run]
+branch = True
+omit =
+ */tests/*
+ pandas/_typing.py
+ pandas/_version.py
+plugins = Cython.Coverage
+source = pandas
+
+[coverage:report]
+ignore_errors = False
+show_missing = True
+omit =
+ pandas/_version.py
+# Regexes for lines to exclude from consideration
+exclude_lines =
+ # Have to re-enable the standard pragma
+ pragma: no cover
+
+ # Don't complain about missing debug-only code:
+ def __repr__
+ if self\.debug
+
+ # Don't complain if tests don't hit defensive assertion code:
+ raise AssertionError
+ raise NotImplementedError
+ AbstractMethodError
+
+ # Don't complain if non-runnable code isn't run:
+ if 0:
+ if __name__ == .__main__.:
+ if TYPE_CHECKING:
+
+[coverage:html]
+directory = coverage_html_report
diff --git a/setuptools/tests/config/downloads/platformdirs_platformdirs7b7852128dd6f07511b618d6edea35046bd0c6ff_setup.cfg b/setuptools/tests/config/downloads/platformdirs_platformdirs7b7852128dd6f07511b618d6edea35046bd0c6ff_setup.cfg
new file mode 100644
index 000000000..c56ca839e
--- /dev/null
+++ b/setuptools/tests/config/downloads/platformdirs_platformdirs7b7852128dd6f07511b618d6edea35046bd0c6ff_setup.cfg
@@ -0,0 +1,100 @@
+[metadata]
+name = platformdirs
+description = A small Python module for determining appropriate platform-specific dirs, e.g. a "user data dir".
+long_description = file: README.rst
+long_description_content_type = text/x-rst
+url = https://github.com/platformdirs/platformdirs
+maintainer = Bernát Gábor, Julian Berman, Ofek Lev, Ronny Pfannschmidt
+maintainer_email = gaborjbernat@gmail.com, Julian@GrayVines.com, oss@ofek.dev, opensource@ronnypfannschmidt.de
+license = MIT
+license_file = LICENSE.txt
+classifiers =
+ Development Status :: 5 - Production/Stable
+ Intended Audience :: Developers
+ License :: OSI Approved :: MIT License
+ Operating System :: OS Independent
+ Programming Language :: Python
+ Programming Language :: Python :: 3
+ Programming Language :: Python :: 3 :: Only
+ Programming Language :: Python :: 3.6
+ Programming Language :: Python :: 3.7
+ Programming Language :: Python :: 3.8
+ Programming Language :: Python :: 3.9
+ Programming Language :: Python :: 3.10
+ Programming Language :: Python :: Implementation :: CPython
+ Programming Language :: Python :: Implementation :: PyPy
+ Topic :: Software Development :: Libraries :: Python Modules
+keywords = application directory log cache user
+project_urls =
+ Source=https://github.com/platformdirs/platformdirs
+ Tracker=https://github.com/platformdirs/platformdirs/issues
+ Documentation=https://platformdirs.readthedocs.io/
+
+[options]
+packages = find:
+python_requires = >=3.6
+package_dir =
+ =src
+zip_safe = True
+
+[options.packages.find]
+where = src
+
+[options.extras_require]
+docs =
+ Sphinx>=4
+ furo>=2021.7.5b38
+ proselint>=0.10.2
+ sphinx-autodoc-typehints>=1.12
+test =
+ appdirs==1.4.4
+ pytest>=6
+ pytest-cov>=2.7
+ pytest-mock>=3.6
+
+[options.package_data]
+platformdirs = py.typed
+
+[flake8]
+max-line-length = 120
+dictionaries = en_US,python,technical
+
+[coverage:report]
+show_missing = True
+exclude_lines =
+ \#\s*pragma: no cover
+ ^\s*raise AssertionError\b
+ ^\s*raise NotImplementedError\b
+ ^\s*raise$
+ ^if __name__ == ['"]__main__['"]:$
+
+[coverage:paths]
+source =
+ src
+ .tox/*/lib/python*/site-packages
+ .tox/pypy*/site-packages
+ .tox\*\Lib\site-packages\
+ */src
+ *\src
+
+[coverage:run]
+branch = true
+parallel = true
+dynamic_context = test_function
+source =
+ ${_COVERAGE_SRC}
+
+[coverage:html]
+show_contexts = true
+skip_covered = false
+skip_empty = true
+
+[mypy]
+python_version = 3.9
+warn_unused_ignores = False
+
+[mypy-appdirs.*]
+ignore_missing_imports = True
+
+[mypy-jnius.*]
+ignore_missing_imports = True
diff --git a/setuptools/tests/config/downloads/pypa_setuptools52c990172fec37766b3566679724aa8bf70ae06d_setup.cfg b/setuptools/tests/config/downloads/pypa_setuptools52c990172fec37766b3566679724aa8bf70ae06d_setup.cfg
new file mode 100644
index 000000000..08eefc49b
--- /dev/null
+++ b/setuptools/tests/config/downloads/pypa_setuptools52c990172fec37766b3566679724aa8bf70ae06d_setup.cfg
@@ -0,0 +1,143 @@
+[metadata]
+name = setuptools
+version = 60.0.4
+author = Python Packaging Authority
+author_email = distutils-sig@python.org
+description = Easily download, build, install, upgrade, and uninstall Python packages
+long_description = file:README.rst
+url = https://github.com/pypa/setuptools
+classifiers =
+ Development Status :: 5 - Production/Stable
+ Intended Audience :: Developers
+ License :: OSI Approved :: MIT License
+ Programming Language :: Python :: 3
+ Programming Language :: Python :: 3 :: Only
+ Topic :: Software Development :: Libraries :: Python Modules
+ Topic :: System :: Archiving :: Packaging
+ Topic :: System :: Systems Administration
+ Topic :: Utilities
+keywords = CPAN PyPI distutils eggs package management
+project_urls =
+ Documentation = https://setuptools.pypa.io/
+
+[options]
+packages = find_namespace:
+# disabled as it causes tests to be included #2505
+# include_package_data = true
+python_requires = >=3.7
+install_requires =
+
+[options.packages.find]
+exclude =
+ build*
+ dist*
+ docs*
+ tests*
+ *.tests
+ tools*
+
+[options.extras_require]
+testing =
+ # upstream
+ pytest >= 6
+ pytest-checkdocs >= 2.4
+ pytest-flake8
+ pytest-black >= 0.3.7; \
+ # workaround for jaraco/skeleton#22
+ python_implementation != "PyPy"
+ pytest-cov
+ pytest-mypy; \
+ # workaround for jaraco/skeleton#22
+ python_implementation != "PyPy"
+ pytest-enabler >= 1.0.1
+
+ # local
+ mock
+ flake8-2020
+ virtualenv>=13.0.0
+ pytest-virtualenv>=1.2.7 # TODO: Update once man-group/pytest-plugins#188 is solved
+ wheel
+ paver
+ pip>=19.1 # For proper file:// URLs support.
+ jaraco.envs>=2.2
+ pytest-xdist
+ sphinx
+ jaraco.path>=3.2.0
+
+docs =
+ # upstream
+ sphinx
+ jaraco.packaging >= 8.2
+ rst.linker >= 1.9
+ jaraco.tidelift >= 1.4
+
+ # local
+ pygments-github-lexers==0.0.5
+ sphinx-inline-tabs
+ sphinxcontrib-towncrier
+ furo
+
+ssl =
+
+certs =
+
+[options.entry_points]
+distutils.commands =
+ alias = setuptools.command.alias:alias
+ bdist_egg = setuptools.command.bdist_egg:bdist_egg
+ bdist_rpm = setuptools.command.bdist_rpm:bdist_rpm
+ build_clib = setuptools.command.build_clib:build_clib
+ build_ext = setuptools.command.build_ext:build_ext
+ build_py = setuptools.command.build_py:build_py
+ develop = setuptools.command.develop:develop
+ dist_info = setuptools.command.dist_info:dist_info
+ easy_install = setuptools.command.easy_install:easy_install
+ egg_info = setuptools.command.egg_info:egg_info
+ install = setuptools.command.install:install
+ install_egg_info = setuptools.command.install_egg_info:install_egg_info
+ install_lib = setuptools.command.install_lib:install_lib
+ install_scripts = setuptools.command.install_scripts:install_scripts
+ rotate = setuptools.command.rotate:rotate
+ saveopts = setuptools.command.saveopts:saveopts
+ sdist = setuptools.command.sdist:sdist
+ setopt = setuptools.command.setopt:setopt
+ test = setuptools.command.test:test
+ upload_docs = setuptools.command.upload_docs:upload_docs
+setuptools.finalize_distribution_options =
+ parent_finalize = setuptools.dist:_Distribution.finalize_options
+ keywords = setuptools.dist:Distribution._finalize_setup_keywords
+distutils.setup_keywords =
+ eager_resources = setuptools.dist:assert_string_list
+ namespace_packages = setuptools.dist:check_nsp
+ extras_require = setuptools.dist:check_extras
+ install_requires = setuptools.dist:check_requirements
+ tests_require = setuptools.dist:check_requirements
+ setup_requires = setuptools.dist:check_requirements
+ python_requires = setuptools.dist:check_specifier
+ entry_points = setuptools.dist:check_entry_points
+ test_suite = setuptools.dist:check_test_suite
+ zip_safe = setuptools.dist:assert_bool
+ package_data = setuptools.dist:check_package_data
+ exclude_package_data = setuptools.dist:check_package_data
+ include_package_data = setuptools.dist:assert_bool
+ packages = setuptools.dist:check_packages
+ dependency_links = setuptools.dist:assert_string_list
+ test_loader = setuptools.dist:check_importable
+ test_runner = setuptools.dist:check_importable
+ use_2to3 = setuptools.dist:invalid_unless_false
+egg_info.writers =
+ PKG-INFO = setuptools.command.egg_info:write_pkg_info
+ requires.txt = setuptools.command.egg_info:write_requirements
+ entry_points.txt = setuptools.command.egg_info:write_entries
+ eager_resources.txt = setuptools.command.egg_info:overwrite_arg
+ namespace_packages.txt = setuptools.command.egg_info:overwrite_arg
+ top_level.txt = setuptools.command.egg_info:write_toplevel_names
+ depends.txt = setuptools.command.egg_info:warn_depends_obsolete
+ dependency_links.txt = setuptools.command.egg_info:overwrite_arg
+
+[egg_info]
+tag_build = .post
+tag_date = 1
+
+[sdist]
+formats = zip
diff --git a/setuptools/tests/config/downloads/pypa_virtualenvf92eda6e3da26a4d28c2663ffb85c4960bdb990c_setup.cfg b/setuptools/tests/config/downloads/pypa_virtualenvf92eda6e3da26a4d28c2663ffb85c4960bdb990c_setup.cfg
new file mode 100644
index 000000000..2b48a54b0
--- /dev/null
+++ b/setuptools/tests/config/downloads/pypa_virtualenvf92eda6e3da26a4d28c2663ffb85c4960bdb990c_setup.cfg
@@ -0,0 +1,129 @@
+[metadata]
+name = virtualenv
+description = Virtual Python Environment builder
+long_description = file: README.md
+long_description_content_type = text/markdown
+url = https://virtualenv.pypa.io/
+author = Bernat Gabor
+author_email = gaborjbernat@gmail.com
+maintainer = Bernat Gabor
+maintainer_email = gaborjbernat@gmail.com
+license = MIT
+license_file = LICENSE
+platforms = any
+classifiers =
+ Development Status :: 5 - Production/Stable
+ Intended Audience :: Developers
+ License :: OSI Approved :: MIT License
+ Operating System :: MacOS :: MacOS X
+ Operating System :: Microsoft :: Windows
+ Operating System :: POSIX
+ Programming Language :: Python :: 2
+ Programming Language :: Python :: 2.7
+ Programming Language :: Python :: 3
+ Programming Language :: Python :: 3.5
+ Programming Language :: Python :: 3.6
+ Programming Language :: Python :: 3.7
+ Programming Language :: Python :: 3.8
+ Programming Language :: Python :: 3.9
+ Programming Language :: Python :: 3.10
+ Programming Language :: Python :: Implementation :: CPython
+ Programming Language :: Python :: Implementation :: PyPy
+ Topic :: Software Development :: Libraries
+ Topic :: Software Development :: Testing
+ Topic :: Utilities
+keywords = virtual, environments, isolated
+project_urls =
+ Source=https://github.com/pypa/virtualenv
+ Tracker=https://github.com/pypa/virtualenv/issues
+
+[options]
+packages = find:
+install_requires =
+ backports.entry-points-selectable>=1.0.4
+ distlib>=0.3.1,<1
+ filelock>=3.2,<4
+ platformdirs>=2,<3
+ six>=1.9.0,<2 # keep it >=1.9.0 as it may cause problems on LTS platforms
+ importlib-metadata>=0.12;python_version<"3.8"
+ importlib-resources>=1.0;python_version<"3.7"
+ pathlib2>=2.3.3,<3;python_version < '3.4' and sys.platform != 'win32'
+python_requires = >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*
+package_dir =
+ =src
+zip_safe = True
+
+[options.packages.find]
+where = src
+
+[options.entry_points]
+console_scripts =
+ virtualenv=virtualenv.__main__:run_with_catch
+virtualenv.activate =
+ bash = virtualenv.activation.bash:BashActivator
+ cshell = virtualenv.activation.cshell:CShellActivator
+ batch = virtualenv.activation.batch:BatchActivator
+ fish = virtualenv.activation.fish:FishActivator
+ powershell = virtualenv.activation.powershell:PowerShellActivator
+ python = virtualenv.activation.python:PythonActivator
+ nushell = virtualenv.activation.nushell:NushellActivator
+virtualenv.create =
+ venv = virtualenv.create.via_global_ref.venv:Venv
+ cpython3-posix = virtualenv.create.via_global_ref.builtin.cpython.cpython3:CPython3Posix
+ cpython3-win = virtualenv.create.via_global_ref.builtin.cpython.cpython3:CPython3Windows
+ cpython2-posix = virtualenv.create.via_global_ref.builtin.cpython.cpython2:CPython2Posix
+ cpython2-mac-framework = virtualenv.create.via_global_ref.builtin.cpython.mac_os:CPython2macOsFramework
+ cpython3-mac-framework = virtualenv.create.via_global_ref.builtin.cpython.mac_os:CPython3macOsFramework
+ cpython2-win = virtualenv.create.via_global_ref.builtin.cpython.cpython2:CPython2Windows
+ pypy2-posix = virtualenv.create.via_global_ref.builtin.pypy.pypy2:PyPy2Posix
+ pypy2-win = virtualenv.create.via_global_ref.builtin.pypy.pypy2:Pypy2Windows
+ pypy3-posix = virtualenv.create.via_global_ref.builtin.pypy.pypy3:PyPy3Posix
+ pypy3-win = virtualenv.create.via_global_ref.builtin.pypy.pypy3:Pypy3Windows
+virtualenv.discovery =
+ builtin = virtualenv.discovery.builtin:Builtin
+virtualenv.seed =
+ pip = virtualenv.seed.embed.pip_invoke:PipInvoke
+ app-data = virtualenv.seed.embed.via_app_data.via_app_data:FromAppData
+
+[options.extras_require]
+docs =
+ proselint>=0.10.2
+ sphinx>=3
+ sphinx-argparse>=0.2.5
+ sphinx-rtd-theme>=0.4.3
+ towncrier>=21.3
+testing =
+ coverage>=4
+ coverage-enable-subprocess>=1
+ flaky>=3
+ pytest>=4
+ pytest-env>=0.6.2
+ pytest-freezegun>=0.4.1
+ pytest-mock>=2
+ pytest-randomly>=1
+ pytest-timeout>=1
+ packaging>=20.0;python_version>"3.4"
+
+[options.package_data]
+virtualenv.activation.bash = *.sh
+virtualenv.activation.batch = *.bat
+virtualenv.activation.cshell = *.csh
+virtualenv.activation.fish = *.fish
+virtualenv.activation.nushell = *.nu
+virtualenv.activation.powershell = *.ps1
+virtualenv.seed.wheels.embed = *.whl
+
+[sdist]
+formats = gztar
+
+[bdist_wheel]
+universal = true
+
+[tool:pytest]
+markers =
+ slow
+junit_family = xunit2
+addopts = --tb=auto -ra --showlocals --no-success-flaky-report
+env =
+ PYTHONWARNINGS=ignore:DEPRECATION::pip._internal.cli.base_command
+ PYTHONIOENCODING=utf-8
diff --git a/setuptools/tests/config/downloads/pypa_wheel0acd203cd896afec7f715aa2ff5980a403459a3b_setup.cfg b/setuptools/tests/config/downloads/pypa_wheel0acd203cd896afec7f715aa2ff5980a403459a3b_setup.cfg
new file mode 100644
index 000000000..7f1a86fbb
--- /dev/null
+++ b/setuptools/tests/config/downloads/pypa_wheel0acd203cd896afec7f715aa2ff5980a403459a3b_setup.cfg
@@ -0,0 +1,71 @@
+[metadata]
+name = wheel
+version = attr: wheel.__version__
+description = A built-package format for Python
+long_description = file: README.rst
+classifiers =
+ Development Status :: 5 - Production/Stable
+ Intended Audience :: Developers
+ Topic :: System :: Archiving :: Packaging
+ License :: OSI Approved :: MIT License
+ Programming Language :: Python
+ Programming Language :: Python :: 2
+ Programming Language :: Python :: 2.7
+ Programming Language :: Python :: 3
+ Programming Language :: Python :: 3.5
+ Programming Language :: Python :: 3.6
+ Programming Language :: Python :: 3.7
+ Programming Language :: Python :: 3.8
+ Programming Language :: Python :: 3.9
+ Programming Language :: Python :: 3.10
+author = Daniel Holth
+author_email = dholth@fastmail.fm
+maintainer = Alex Gronholm
+maintainer_email = alex.gronholm@nextday.fi
+url = https://github.com/pypa/wheel
+project_urls =
+ Documentation = https://wheel.readthedocs.io/
+ Changelog = https://wheel.readthedocs.io/en/stable/news.html
+ Issue Tracker = https://github.com/pypa/wheel/issues
+keywords = wheel, packaging
+license = MIT
+
+[options]
+package_dir=
+ = src
+packages = find:
+python_requires = >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*
+setup_requires = setuptools >= 40.9.0
+zip_safe = False
+
+[options.packages.find]
+where = src
+
+[options.extras_require]
+test =
+ pytest >= 3.0.0
+ pytest-cov
+
+[options.entry_points]
+console_scripts =
+ wheel = wheel.cli:main
+distutils.commands =
+ bdist_wheel = wheel.bdist_wheel:bdist_wheel
+
+[tool:pytest]
+addopts = --cov --cov-config=setup.cfg
+testpaths = tests
+
+[coverage:run]
+source = wheel
+omit = */vendored/*
+
+[coverage:report]
+show_missing = true
+
+[flake8]
+max-line-length = 99
+
+[bdist_wheel]
+# use py2.py3 tag for pure-python dist:
+universal = 1
diff --git a/setuptools/tests/config/downloads/pyscaffold_pyscaffoldde7aa5dc059fbd04307419c667cc4961bc9df4b8_setup.cfg b/setuptools/tests/config/downloads/pyscaffold_pyscaffoldde7aa5dc059fbd04307419c667cc4961bc9df4b8_setup.cfg
new file mode 100644
index 000000000..88f2b5cd7
--- /dev/null
+++ b/setuptools/tests/config/downloads/pyscaffold_pyscaffoldde7aa5dc059fbd04307419c667cc4961bc9df4b8_setup.cfg
@@ -0,0 +1,172 @@
+[metadata]
+name = PyScaffold
+description = Template tool for putting up the scaffold of a Python project
+author = Florian Wilhelm
+author_email = Florian.Wilhelm@gmail.com
+license = MIT
+url = https://github.com/pyscaffold/pyscaffold/
+project_urls =
+ Documentation = https://pyscaffold.org/
+ Source = https://github.com/pyscaffold/pyscaffold/
+ Tracker = https://github.com/pyscaffold/pyscaffold/issues
+ Changelog = https://pyscaffold.org/en/latest/changelog.html
+ Conda-Forge = https://anaconda.org/conda-forge/pyscaffold
+ Download = https://pypi.org/project/PyScaffold/#files
+ Twitter = https://twitter.com/PyScaffold
+long_description = file: README.rst
+long_description_content_type = text/x-rst; charset=UTF-8
+platforms = any
+classifiers =
+ Development Status :: 5 - Production/Stable
+ Topic :: Utilities
+ Programming Language :: Python
+ Programming Language :: Python :: 3
+ Programming Language :: Python :: 3 :: Only
+ Environment :: Console
+ Intended Audience :: Developers
+ License :: OSI Approved :: MIT License
+ Operating System :: POSIX :: Linux
+ Operating System :: Unix
+ Operating System :: MacOS
+ Operating System :: Microsoft :: Windows
+
+[options]
+zip_safe = False
+packages = find_namespace:
+python_requires = >=3.6
+include_package_data = True
+package_dir =
+ =src
+install_requires =
+ importlib-metadata; python_version<"3.8"
+ appdirs>=1.4.4,<2
+ configupdater>=3.0,<4 # pyscaffoldext-custom-extension should have a compatible range
+ setuptools>=46.1.0
+ setuptools_scm>=5
+ tomlkit>=0.7.0,<2
+ packaging>=20.7
+
+# packaging is versioned by year, not SemVer
+
+# Notes about setuptools versions:
+# - 40.1: required for `find_namespace`
+# - 45: required for `setuptools_scm` v6
+# However we specify a higher version so we encourage users to update the
+# version they have installed...
+
+[options.packages.find]
+where = src
+exclude =
+ tests
+
+[options.extras_require]
+# Add here additional requirements for extra features, like:
+all =
+ pyscaffoldext-markdown>=0.4
+ pyscaffoldext-custom-extension>=0.6
+ pyscaffoldext-dsproject>=0.5
+ pyscaffoldext-django>=0.1.1
+ pyscaffoldext-cookiecutter>=0.1
+ pyscaffoldext-travis>=0.3
+ virtualenv
+ pre-commit
+md =
+ pyscaffoldext-markdown>=0.4
+ds =
+ pyscaffoldext-dsproject>=0.5
+# Add here test dependencies (used by tox)
+testing =
+ # Used for building/installing during tests
+ setuptools
+ setuptools_scm[toml]
+ wheel
+ build
+ #
+ tomlkit # as dependency in `-e fast`
+ certifi # tries to prevent certificate problems on windows
+ tox # system tests use tox inside tox
+ pre-commit # system tests run pre-commit
+ sphinx # system tests build docs
+ flake8 # system tests run flake8
+ virtualenv # virtualenv as dependency for the venv extension in `-e fast`
+ pytest
+ pytest-cov
+ pytest-shutil
+ pytest-virtualenv
+ pytest-fixture-config
+ pytest-xdist
+ # We keep pytest-xdist in the test dependencies, so the developer can
+ # easily opt-in for distributed tests by adding, for example, the `-n 15`
+ # arguments in the command-line.
+
+[options.entry_points]
+console_scripts =
+ putup = pyscaffold.cli:run
+pyscaffold.cli =
+ config = pyscaffold.extensions.config:Config
+ interactive = pyscaffold.extensions.interactive:Interactive
+ venv = pyscaffold.extensions.venv:Venv
+ namespace = pyscaffold.extensions.namespace:Namespace
+ no_skeleton = pyscaffold.extensions.no_skeleton:NoSkeleton
+ pre_commit = pyscaffold.extensions.pre_commit:PreCommit
+ no_tox = pyscaffold.extensions.no_tox:NoTox
+ gitlab = pyscaffold.extensions.gitlab_ci:GitLab
+ cirrus = pyscaffold.extensions.cirrus:Cirrus
+ no_pyproject = pyscaffold.extensions.no_pyproject:NoPyProject
+
+[tool:pytest]
+# Options for pytest:
+# Specify command line options as you would do when invoking pytest directly.
+# e.g. --cov-report html (or xml) for html/xml output or --junit-xml junit.xml
+# in order to write a coverage file that can be read by Jenkins.
+# CAUTION: --cov flags may prohibit setting breakpoints while debugging.
+# Comment those flags to avoid this pytest issue.
+addopts =
+ --cov pyscaffold --cov-config .coveragerc --cov-report term-missing
+ --verbose
+# In order to use xdist, the developer can add, for example, the following
+# arguments:
+# --numprocesses=auto
+norecursedirs =
+ dist
+ build
+ .tox
+testpaths = tests
+markers =
+ only: for debugging purposes, a single, failing, test can be required to run
+ slow: mark tests as slow (deselect with '-m "not slow"')
+ system: mark system tests
+ original_logger: do not isolate logger in specific tests
+ no_fake_config_dir: avoid the autofixture fake_config_dir to take effect
+ requires_src: tests that require the raw source of PyScaffold and assume our default CI environment
+log_level = DEBUG
+log_cli = True
+log_cli_level = CRITICAL
+junit_family = xunit2
+
+[devpi:upload]
+# Options for the devpi: PyPI server and packaging tool
+# VCS export must be deactivated since we are using setuptools-scm
+no_vcs = 1
+formats = bdist_wheel
+
+[flake8]
+# Some sane defaults for the code style checker flake8
+# black compatibility
+max_line_length = 88
+# E203 and W503 have edge cases handled by black
+extend_ignore = E203, W503
+exclude =
+ src/pyscaffold/contrib
+ .tox
+ build
+ dist
+ .eggs
+ docs/conf.py
+
+[mypy]
+ignore_missing_imports = True
+pretty = True
+show_error_codes = True
+show_error_context = True
+show_traceback = True
diff --git a/setuptools/tests/config/downloads/pytest-dev_pluggy461ef63291d13589c4e21aa182cd1529257e9a0a_setup.cfg b/setuptools/tests/config/downloads/pytest-dev_pluggy461ef63291d13589c4e21aa182cd1529257e9a0a_setup.cfg
new file mode 100644
index 000000000..adb6d4fc0
--- /dev/null
+++ b/setuptools/tests/config/downloads/pytest-dev_pluggy461ef63291d13589c4e21aa182cd1529257e9a0a_setup.cfg
@@ -0,0 +1,50 @@
+[metadata]
+name = pluggy
+description = plugin and hook calling mechanisms for python
+long_description = file: README.rst
+long_description_content_type = text/x-rst
+license = MIT
+platforms = unix, linux, osx, win32
+author = Holger Krekel
+author_email = holger@merlinux.eu
+url = https://github.com/pytest-dev/pluggy
+classifiers =
+ Development Status :: 6 - Mature
+ Intended Audience :: Developers
+ License :: OSI Approved :: MIT License
+ Operating System :: POSIX
+ Operating System :: Microsoft :: Windows
+ Operating System :: MacOS :: MacOS X
+ Topic :: Software Development :: Testing
+ Topic :: Software Development :: Libraries
+ Topic :: Utilities
+ Programming Language :: Python :: Implementation :: CPython
+ Programming Language :: Python :: Implementation :: PyPy
+ Programming Language :: Python :: 3
+ Programming Language :: Python :: 3 :: Only
+ Programming Language :: Python :: 3.6
+ Programming Language :: Python :: 3.7
+ Programming Language :: Python :: 3.8
+ Programming Language :: Python :: 3.9
+ Programming Language :: Python :: 3.10
+
+[options]
+packages =
+ pluggy
+install_requires =
+ importlib-metadata>=0.12;python_version<"3.8"
+python_requires = >=3.6
+package_dir =
+ =src
+setup_requires =
+ setuptools-scm
+[options.extras_require]
+dev =
+ pre-commit
+ tox
+testing =
+ pytest
+ pytest-benchmark
+
+[devpi:upload]
+formats=sdist.tgz,bdist_wheel
diff --git a/setuptools/tests/config/downloads/pytest-dev_pytestc7be96dae487edbd2f55b561b31b68afac1dabe6_setup.cfg b/setuptools/tests/config/downloads/pytest-dev_pytestc7be96dae487edbd2f55b561b31b68afac1dabe6_setup.cfg
new file mode 100644
index 000000000..26a5d2e63
--- /dev/null
+++ b/setuptools/tests/config/downloads/pytest-dev_pytestc7be96dae487edbd2f55b561b31b68afac1dabe6_setup.cfg
@@ -0,0 +1,105 @@
+[metadata]
+name = pytest
+description = pytest: simple powerful testing with Python
+long_description = file: README.rst
+long_description_content_type = text/x-rst
+url = https://docs.pytest.org/en/latest/
+author = Holger Krekel, Bruno Oliveira, Ronny Pfannschmidt, Floris Bruynooghe, Brianna Laugher, Florian Bruhin and others
+license = MIT
+license_file = LICENSE
+platforms = unix, linux, osx, cygwin, win32
+classifiers =
+ Development Status :: 6 - Mature
+ Intended Audience :: Developers
+ License :: OSI Approved :: MIT License
+ Operating System :: MacOS :: MacOS X
+ Operating System :: Microsoft :: Windows
+ Operating System :: POSIX
+ Programming Language :: Python :: 3
+ Programming Language :: Python :: 3 :: Only
+ Programming Language :: Python :: 3.6
+ Programming Language :: Python :: 3.7
+ Programming Language :: Python :: 3.8
+ Programming Language :: Python :: 3.9
+ Programming Language :: Python :: 3.10
+ Topic :: Software Development :: Libraries
+ Topic :: Software Development :: Testing
+ Topic :: Utilities
+keywords = test, unittest
+project_urls =
+ Changelog=https://docs.pytest.org/en/stable/changelog.html
+ Twitter=https://twitter.com/pytestdotorg
+ Source=https://github.com/pytest-dev/pytest
+ Tracker=https://github.com/pytest-dev/pytest/issues
+
+[options]
+packages =
+ _pytest
+ _pytest._code
+ _pytest._io
+ _pytest.assertion
+ _pytest.config
+ _pytest.mark
+ pytest
+install_requires =
+ attrs>=19.2.0
+ iniconfig
+ packaging
+ pluggy>=0.12,<2.0
+ py>=1.8.2
+ tomli>=1.0.0
+ atomicwrites>=1.0;sys_platform=="win32"
+ colorama;sys_platform=="win32"
+ importlib-metadata>=0.12;python_version<"3.8"
+python_requires = >=3.6
+package_dir =
+ =src
+setup_requires =
+ setuptools
+ setuptools-scm>=6.0
+zip_safe = no
+
+[options.entry_points]
+console_scripts =
+ pytest=pytest:console_main
+ py.test=pytest:console_main
+
+[options.extras_require]
+testing =
+ argcomplete
+ hypothesis>=3.56
+ mock
+ nose
+ pygments>=2.7.2
+ requests
+ xmlschema
+
+[options.package_data]
+_pytest = py.typed
+pytest = py.typed
+
+[build_sphinx]
+source_dir = doc/en/
+build_dir = doc/build
+all_files = 1
+
+[check-manifest]
+ignore =
+ src/_pytest/_version.py
+
+[devpi:upload]
+formats = sdist.tgz,bdist_wheel
+
+[mypy]
+mypy_path = src
+check_untyped_defs = True
+disallow_any_generics = True
+ignore_missing_imports = True
+no_implicit_optional = True
+show_error_codes = True
+strict_equality = True
+warn_redundant_casts = True
+warn_return_any = True
+warn_unreachable = True
+warn_unused_configs = True
+no_implicit_reexport = True
diff --git a/setuptools/tests/config/downloads/python_importlib_metadata2f05392ca980952a6960d82b2f2d2ea10aa53239_setup.cfg b/setuptools/tests/config/downloads/python_importlib_metadata2f05392ca980952a6960d82b2f2d2ea10aa53239_setup.cfg
new file mode 100644
index 000000000..28a47076f
--- /dev/null
+++ b/setuptools/tests/config/downloads/python_importlib_metadata2f05392ca980952a6960d82b2f2d2ea10aa53239_setup.cfg
@@ -0,0 +1,65 @@
+[metadata]
+name = importlib_metadata
+author = Jason R. Coombs
+author_email = jaraco@jaraco.com
+description = Read metadata from Python packages
+long_description = file:README.rst
+url = https://github.com/python/importlib_metadata
+classifiers =
+ Development Status :: 5 - Production/Stable
+ Intended Audience :: Developers
+ License :: OSI Approved :: Apache Software License
+ Programming Language :: Python :: 3
+ Programming Language :: Python :: 3 :: Only
+
+[options]
+packages = find_namespace:
+include_package_data = true
+python_requires = >=3.6
+install_requires =
+ zipp>=0.5
+ typing-extensions>=3.6.4; python_version < "3.8"
+
+[options.packages.find]
+exclude =
+ build*
+ dist*
+ docs*
+ tests*
+ prepare*
+
+[options.extras_require]
+testing =
+ # upstream
+ pytest >= 6
+ pytest-checkdocs >= 2.4
+ pytest-flake8
+ pytest-black >= 0.3.7; \
+ # workaround for jaraco/skeleton#22
+ python_implementation != "PyPy"
+ pytest-cov
+ pytest-mypy; \
+ # workaround for jaraco/skeleton#22
+ python_implementation != "PyPy"
+ pytest-enabler >= 1.0.1
+
+ # local
+ importlib_resources>=1.3; python_version < "3.9"
+ packaging
+ pep517
+ pyfakefs
+ flufl.flake8
+ pytest-perf >= 0.9.2
+
+docs =
+ # upstream
+ sphinx
+ jaraco.packaging >= 8.2
+ rst.linker >= 1.9
+
+ # local
+
+perf =
+ ipython
+
+[options.entry_points]
diff --git a/setuptools/tests/config/downloads/sqlalchemy_sqlalchemy533f5718904b620be8d63f2474229945d6f8ba5d_setup.cfg b/setuptools/tests/config/downloads/sqlalchemy_sqlalchemy533f5718904b620be8d63f2474229945d6f8ba5d_setup.cfg
new file mode 100644
index 000000000..92c0006c0
--- /dev/null
+++ b/setuptools/tests/config/downloads/sqlalchemy_sqlalchemy533f5718904b620be8d63f2474229945d6f8ba5d_setup.cfg
@@ -0,0 +1,181 @@
+[metadata]
+name = SQLAlchemy
+# version comes from setup.py; setuptools
+# can't read the "attr:" here without importing
+# until version 47.0.0 which is too recent
+
+description = Database Abstraction Library
+long_description = file: README.rst
+long_description_content_type = text/x-rst
+url = https://www.sqlalchemy.org
+author = Mike Bayer
+author_email = mike_mp@zzzcomputing.com
+license = MIT
+license_file = LICENSE
+classifiers =
+ Development Status :: 5 - Production/Stable
+ Intended Audience :: Developers
+ License :: OSI Approved :: MIT License
+ Operating System :: OS Independent
+ Programming Language :: Python
+ Programming Language :: Python :: 3
+ Programming Language :: Python :: 3.7
+ Programming Language :: Python :: 3.8
+ Programming Language :: Python :: 3.9
+ Programming Language :: Python :: 3.10
+ Programming Language :: Python :: Implementation :: CPython
+ Programming Language :: Python :: Implementation :: PyPy
+ Topic :: Database :: Front-Ends
+project_urls =
+ Documentation=https://docs.sqlalchemy.org
+ Issue Tracker=https://github.com/sqlalchemy/sqlalchemy/
+
+[options]
+packages = find:
+python_requires = >=3.7
+package_dir =
+ =lib
+
+install_requires =
+ importlib-metadata;python_version<"3.8"
+ greenlet != 0.4.17;python_version>='3' and (platform_machine=='aarch64' or (platform_machine=='ppc64le' or (platform_machine=='x86_64' or (platform_machine=='amd64' or (platform_machine=='AMD64' or (platform_machine=='win32' or platform_machine=='WIN32'))))))
+ typing-extensions >= 4;python_version<"3.11"
+
+[options.extras_require]
+asyncio =
+ greenlet!=0.4.17;python_version>="3"
+mypy =
+ mypy >= 0.910;python_version>="3"
+ sqlalchemy2-stubs
+mssql = pyodbc
+mssql_pymssql = pymssql
+mssql_pyodbc = pyodbc
+mysql =
+ mysqlclient>=1.4.0,<2;python_version<"3"
+ mysqlclient>=1.4.0;python_version>="3"
+mysql_connector =
+ mysql-connector-python
+mariadb_connector =
+ mariadb>=1.0.1;python_version>="3"
+oracle =
+ cx_oracle>=7,<8;python_version<"3"
+ cx_oracle>=7;python_version>="3"
+postgresql = psycopg2>=2.7
+postgresql_pg8000 = pg8000>=1.16.6
+postgresql_asyncpg =
+ %(asyncio)s
+ asyncpg;python_version>="3"
+postgresql_psycopg2binary = psycopg2-binary
+postgresql_psycopg2cffi = psycopg2cffi
+postgresql_psycopg = psycopg>=3.0.2
+pymysql =
+ pymysql;python_version>="3"
+ pymysql<1;python_version<"3"
+aiomysql =
+ %(asyncio)s
+ aiomysql;python_version>="3"
+asyncmy =
+ %(asyncio)s
+ asyncmy>=0.2.3;python_version>="3"
+aiosqlite =
+ %(asyncio)s
+ aiosqlite;python_version>="3"
+ typing_extensions!=3.10.0.1
+sqlcipher =
+ sqlcipher3_binary;python_version>="3"
+
+[egg_info]
+tag_build = dev
+
+[options.packages.find]
+where = lib
+
+[tool:pytest]
+addopts = --tb native -v -r sfxX --maxfail=250 -p no:warnings -p no:logging
+python_files = test/*test_*.py
+
+[upload]
+sign = 1
+identity = C4DAFEE1
+
+[flake8]
+show-source = false
+enable-extensions = G
+
+# E203 is due to https://github.com/PyCQA/pycodestyle/issues/373
+ignore =
+ A003,
+ D,
+ E203,E305,E711,E712,E721,E722,E741,
+ N801,N802,N806,
+ RST304,RST303,RST299,RST399,
+ W503,W504
+exclude = .venv,.git,.tox,dist,doc,*egg,build
+import-order-style = google
+application-import-names = sqlalchemy,test
+per-file-ignores =
+ **/__init__.py:F401
+ lib/sqlalchemy/events.py:F401
+ lib/sqlalchemy/schema.py:F401
+ lib/sqlalchemy/types.py:F401
+ lib/sqlalchemy/sql/expression.py:F401
+
+[mypy]
+# min mypy version 0.800
+strict = True
+incremental = True
+plugins = sqlalchemy.ext.mypy.plugin
+
+[mypy-sqlalchemy.*]
+ignore_errors = True
+
+[mypy-sqlalchemy.ext.mypy.*]
+ignore_errors = False
+
+
+[sqla_testing]
+requirement_cls = test.requirements:DefaultRequirements
+profile_file = test/profiles.txt
+
+# name of a "loopback" link set up on the oracle database.
+# to create this, suppose your DB is scott/tiger@xe. You'd create it
+# like:
+# create public database link test_link connect to scott identified by tiger
+# using 'xe';
+oracle_db_link = test_link
+
+# host name of a postgres database that has the postgres_fdw extension.
+# to create this run:
+# CREATE EXTENSION postgres_fdw;
+# GRANT USAGE ON FOREIGN DATA WRAPPER postgres_fdw TO public;
+# this can be localhost to create a loopback foreign table
+# postgres_test_db_link = localhost
+
+[db]
+default = sqlite:///:memory:
+sqlite = sqlite:///:memory:
+aiosqlite = sqlite+aiosqlite:///:memory:
+sqlite_file = sqlite:///querytest.db
+aiosqlite_file = sqlite+aiosqlite:///async_querytest.db
+pysqlcipher_file = sqlite+pysqlcipher://:test@/querytest.db.enc
+postgresql = postgresql+psycopg2://scott:tiger@127.0.0.1:5432/test
+psycopg2 = postgresql+psycopg2://scott:tiger@127.0.0.1:5432/test
+psycopg = postgresql+psycopg://scott:tiger@127.0.0.1:5432/test
+psycopg_async = postgresql+psycopg_async://scott:tiger@127.0.0.1:5432/test
+psycopg_async_fallback = postgresql+psycopg_async://scott:tiger@127.0.0.1:5432/test?async_fallback=true
+asyncpg = postgresql+asyncpg://scott:tiger@127.0.0.1:5432/test
+asyncpg_fallback = postgresql+asyncpg://scott:tiger@127.0.0.1:5432/test?async_fallback=true
+pg8000 = postgresql+pg8000://scott:tiger@127.0.0.1:5432/test
+postgresql_psycopg2cffi = postgresql+psycopg2cffi://scott:tiger@127.0.0.1:5432/test
+mysql = mysql+mysqldb://scott:tiger@127.0.0.1:3306/test?charset=utf8mb4
+pymysql = mysql+pymysql://scott:tiger@127.0.0.1:3306/test?charset=utf8mb4
+aiomysql = mysql+aiomysql://scott:tiger@127.0.0.1:3306/test?charset=utf8mb4
+aiomysql_fallback = mysql+aiomysql://scott:tiger@127.0.0.1:3306/test?charset=utf8mb4&async_fallback=true
+asyncmy = mysql+asyncmy://scott:tiger@127.0.0.1:3306/test?charset=utf8mb4
+asyncmy_fallback = mysql+asyncmy://scott:tiger@127.0.0.1:3306/test?charset=utf8mb4&async_fallback=true
+mariadb = mariadb+mysqldb://scott:tiger@127.0.0.1:3306/test
+mssql = mssql+pyodbc://scott:tiger^5HHH@mssql2017:1433/test?driver=ODBC+Driver+13+for+SQL+Server
+mssql_pymssql = mssql+pymssql://scott:tiger@ms_2008
+docker_mssql = mssql+pymssql://scott:tiger^5HHH@127.0.0.1:1433/test
+oracle = oracle+cx_oracle://scott:tiger@127.0.0.1:1521
+oracle8 = oracle+cx_oracle://scott:tiger@127.0.0.1:1521/?use_ansi=0
diff --git a/setuptools/tests/config/downloads/tkem_cachetools2fd87a94b8d3861d80e9e4236cd480bfdd21c90d_setup.cfg b/setuptools/tests/config/downloads/tkem_cachetools2fd87a94b8d3861d80e9e4236cd480bfdd21c90d_setup.cfg
new file mode 100644
index 000000000..74bcbc590
--- /dev/null
+++ b/setuptools/tests/config/downloads/tkem_cachetools2fd87a94b8d3861d80e9e4236cd480bfdd21c90d_setup.cfg
@@ -0,0 +1,47 @@
+[metadata]
+name = cachetools
+version = attr: cachetools.__version__
+url = https://github.com/tkem/cachetools/
+author = Thomas Kemmer
+author_email = tkemmer@computer.org
+license = MIT
+license_file = LICENSE
+description = Extensible memoizing collections and decorators
+long_description = file: README.rst
+classifiers =
+ Development Status :: 5 - Production/Stable
+ Environment :: Other Environment
+ Intended Audience :: Developers
+ License :: OSI Approved :: MIT License
+ Operating System :: OS Independent
+ Programming Language :: Python
+ Programming Language :: Python :: 3
+ Programming Language :: Python :: 3.5
+ Programming Language :: Python :: 3.6
+ Programming Language :: Python :: 3.7
+ Programming Language :: Python :: 3.8
+ Programming Language :: Python :: 3.9
+ Programming Language :: Python :: 3.10
+ Topic :: Software Development :: Libraries :: Python Modules
+
+[options]
+package_dir =
+ = src
+packages = find:
+python_requires = ~= 3.5
+
+[options.packages.find]
+where = src
+
+[flake8]
+max-line-length = 80
+exclude = .git, .tox, build
+select = C, E, F, W, B, B950, I, N
+# F401: imported but unused (submodule shims)
+# E501: line too long (black)
+ignore = F401, E501
+
+[build_sphinx]
+source-dir = docs/
+build-dir = docs/_build
+all_files = 1
diff --git a/setuptools/tests/config/downloads/tqdm_tqdmfc69d5dcf578f7c7986fa76841a6b793f813df35_setup.cfg b/setuptools/tests/config/downloads/tqdm_tqdmfc69d5dcf578f7c7986fa76841a6b793f813df35_setup.cfg
new file mode 100644
index 000000000..8637b38d0
--- /dev/null
+++ b/setuptools/tests/config/downloads/tqdm_tqdmfc69d5dcf578f7c7986fa76841a6b793f813df35_setup.cfg
@@ -0,0 +1,143 @@
+[metadata]
+name=tqdm
+url=https://tqdm.github.io
+project_urls=
+ Changelog=https://tqdm.github.io/releases
+ Source=https://github.com/tqdm/tqdm
+ Wiki=https://github.com/tqdm/tqdm/wiki
+maintainer=tqdm developers
+maintainer_email=python.tqdm@gmail.com
+license=MPLv2.0, MIT Licences
+license_file=LICENCE
+description=Fast, Extensible Progress Meter
+long_description=file: README.rst
+long_description_content_type=text/x-rst
+keywords=progressbar, progressmeter, progress, bar, meter, rate, eta, console, terminal, time
+platforms=any
+provides=tqdm
+# Trove classifiers (https://pypi.org/pypi?%3Aaction=list_classifiers)
+classifiers=
+ Development Status :: 5 - Production/Stable
+ Environment :: Console
+ Environment :: MacOS X
+ Environment :: Other Environment
+ Environment :: Win32 (MS Windows)
+ Environment :: X11 Applications
+ Framework :: IPython
+ Framework :: Jupyter
+ Intended Audience :: Developers
+ Intended Audience :: Education
+ Intended Audience :: End Users/Desktop
+ Intended Audience :: Other Audience
+ Intended Audience :: System Administrators
+ License :: OSI Approved :: MIT License
+ License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)
+ Operating System :: MacOS
+ Operating System :: MacOS :: MacOS X
+ Operating System :: Microsoft
+ Operating System :: Microsoft :: MS-DOS
+ Operating System :: Microsoft :: Windows
+ Operating System :: POSIX
+ Operating System :: POSIX :: BSD
+ Operating System :: POSIX :: BSD :: FreeBSD
+ Operating System :: POSIX :: Linux
+ Operating System :: POSIX :: SunOS/Solaris
+ Operating System :: Unix
+ Programming Language :: Python
+ Programming Language :: Python :: 2
+ Programming Language :: Python :: 2.7
+ Programming Language :: Python :: 3
+ Programming Language :: Python :: 3.5
+ Programming Language :: Python :: 3.6
+ Programming Language :: Python :: 3.7
+ Programming Language :: Python :: 3.8
+ Programming Language :: Python :: 3.9
+ Programming Language :: Python :: Implementation
+ Programming Language :: Python :: Implementation :: IronPython
+ Programming Language :: Python :: Implementation :: PyPy
+ Programming Language :: Unix Shell
+ Topic :: Desktop Environment
+ Topic :: Education :: Computer Aided Instruction (CAI)
+ Topic :: Education :: Testing
+ Topic :: Office/Business
+ Topic :: Other/Nonlisted Topic
+ Topic :: Software Development :: Build Tools
+ Topic :: Software Development :: Libraries
+ Topic :: Software Development :: Libraries :: Python Modules
+ Topic :: Software Development :: Pre-processors
+ Topic :: Software Development :: User Interfaces
+ Topic :: System :: Installation/Setup
+ Topic :: System :: Logging
+ Topic :: System :: Monitoring
+ Topic :: System :: Shells
+ Topic :: Terminals
+ Topic :: Utilities
+[options]
+setup_requires=setuptools>=42; setuptools_scm[toml]>=3.4
+python_requires=>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*
+install_requires=
+ colorama; platform_system == 'Windows'
+tests_require=tox
+include_package_data=True
+packages=find:
+[options.extras_require]
+dev=py-make>=0.1.0; twine; wheel
+telegram=requests
+notebook=ipywidgets>=6
+[options.entry_points]
+console_scripts=
+ tqdm=tqdm.cli:main
+[options.packages.find]
+exclude=benchmarks, tests
+
+[bdist_wheel]
+universal=1
+
+[flake8]
+max_line_length=99
+exclude=.asv,.eggs,.tox,.ipynb_checkpoints,build,dist,.git,__pycache__
+
+[pydocstyle]
+add_ignore=D400,D415
+
+[yapf]
+coalesce_brackets=True
+column_limit=99
+each_dict_entry_on_separate_line=False
+i18n_comment=NOQA
+space_between_ending_comma_and_closing_bracket=False
+split_before_named_assigns=False
+split_before_closing_bracket=False
+
+[isort]
+line_length=99
+multi_line_output=4
+known_first_party=tqdm,tests
+
+[tool:pytest]
+timeout=30
+log_level=INFO
+markers=
+ asyncio
+ slow
+python_files=tests_*.py tests_*.ipynb
+testpaths=tests
+addopts=-v --tb=short -rxs -W=error --durations=0 --durations-min=0.1
+[regex1]
+regex: (?<= )[\s\d.]+(it/s|s/it)
+replace: ??.??it/s
+[regex2]
+regex: 00:0[01]<00:0[01]
+replace: 00:00<00:00
+
+[coverage:run]
+branch=True
+include=tqdm/*
+omit=
+ tqdm/contrib/bells.py
+ tqdm/contrib/discord.py
+ tqdm/contrib/telegram.py
+ tqdm/contrib/utils_worker.py
+relative_files=True
+[coverage:report]
+show_missing=True
diff --git a/setuptools/tests/fixtures.py b/setuptools/tests/fixtures.py
index 524c6cbd2..48d9da7db 100644
--- a/setuptools/tests/fixtures.py
+++ b/setuptools/tests/fixtures.py
@@ -1,5 +1,6 @@
import os
import contextlib
+import os
import sys
import subprocess
from pathlib import Path
@@ -76,17 +77,23 @@ def setuptools_sdist(tmp_path_factory, request):
if dist:
return dist
- subprocess.check_call(
+ build_args = [
+ sys.executable,
+ "-m",
+ "build",
+ "--sdist",
+ ]
+ if os.environ.get("NO_INTERNET") is not None:
+ build_args.append("--no-isolation")
+
+ build_args.extend(
[
- sys.executable,
- "-m",
- "build",
- "--sdist",
"--outdir",
str(tmp),
str(request.config.rootdir),
]
)
+ subprocess.check_call(build_args)
return next(tmp.glob("*.tar.gz"))
@@ -102,17 +109,23 @@ def setuptools_wheel(tmp_path_factory, request):
if dist:
return dist
- subprocess.check_call(
+ build_args = [
+ sys.executable,
+ "-m",
+ "build",
+ "--wheel",
+ ]
+ if os.environ.get("NO_INTERNET") is not None:
+ build_args.append("--no-isolation")
+
+ build_args.extend(
[
- sys.executable,
- "-m",
- "build",
- "--wheel",
"--outdir",
str(tmp),
str(request.config.rootdir),
]
)
+ subprocess.check_call(build_args)
return next(tmp.glob("*.whl"))
diff --git a/setuptools/tests/test_distutils_adoption.py b/setuptools/tests/test_distutils_adoption.py
index b371a5d35..a09031a2e 100644
--- a/setuptools/tests/test_distutils_adoption.py
+++ b/setuptools/tests/test_distutils_adoption.py
@@ -1,6 +1,7 @@
import os
import sys
import functools
+import json
import platform
import textwrap
@@ -41,6 +42,79 @@ def find_distutils(venv, imports='distutils', env=None, **kwargs):
return popen_text(venv.run)(cmd, env=win_sr(env), **kwargs)
+def get_distsysconfig(venv, env, **kwargs):
+ py_cmd = textwrap.dedent(
+ """\
+ import json
+
+ from distutils.sysconfig import get_python_lib, get_python_inc
+
+ prefix = "{prefix}"
+ # should conform to default posix_prefix install scheme
+ posix_prefix_paths = {{
+ "purelib": get_python_lib(
+ plat_specific=0, standard_lib=0, prefix=prefix
+ ),
+ "stdlib": get_python_lib(plat_specific=0, standard_lib=1),
+ "platlib": get_python_lib(
+ plat_specific=1, standard_lib=0, prefix=prefix
+ ),
+ "platstdlib": get_python_lib(
+ plat_specific=1, standard_lib=1, prefix=prefix
+ ),
+ "include": get_python_inc(plat_specific=0),
+ "platinclude": get_python_inc(plat_specific=1),
+ "data": prefix,
+ "scripts": f"{{prefix}}/bin",
+ }}
+ print(json.dumps(posix_prefix_paths))
+ """
+ ).format(prefix=str(venv.dir))
+ cmd = ['python', '-c', py_cmd]
+ return json.loads(popen_text(venv.run)(cmd, env=env, **kwargs).rstrip())
+
+
+def get_sysconfig(venv, env, **kwargs):
+ py_cmd = textwrap.dedent(
+ """\
+ import json
+
+ from sysconfig import get_paths
+
+ print(json.dumps(get_paths()))
+ """
+ )
+ cmd = ['python', '-c', py_cmd]
+ return json.loads(popen_text(venv.run)(cmd, env=env, **kwargs).rstrip())
+
+
+def get_dist_config_h(venv, env, python_build, **kwargs):
+ py_cmd = textwrap.dedent(
+ """\
+ import distutils.sysconfig
+ # result of get_config_h_filename depends on python_build attr:
+ # if python_build is True then the path is calculated by
+ # distutils otherwise by sysconfig
+ distutils.sysconfig.python_build = {python_build}
+
+ print(distutils.sysconfig.get_config_h_filename())
+ """
+ ).format(python_build=python_build)
+ cmd = ['python', '-c', py_cmd]
+ return popen_text(venv.run)(cmd, env=env, **kwargs).rstrip()
+
+
+def get_sysconfig_config_h(venv, env, **kwargs):
+ py_cmd = textwrap.dedent(
+ """\
+ from sysconfig import get_config_h_filename
+ print(get_config_h_filename())
+ """
+ )
+ cmd = ['python', '-c', py_cmd]
+ return popen_text(venv.run)(cmd, env=env, **kwargs).rstrip()
+
+
def count_meta_path(venv, env=None):
py_cmd = textwrap.dedent(
"""
@@ -170,3 +244,46 @@ def test_log_module_is_not_duplicated_on_import(distutils_version, tmpdir_cwd, v
cmd = ['python', '-c', ENSURE_LOG_IMPORT_IS_NOT_DUPLICATED]
output = popen_text(venv.run)(cmd, env=win_sr(env)).strip()
assert output == "success"
+
+
+def test_distutils_local_sysconfig_synced(venv):
+ """
+ ALT: Ensure local distutils sysconfig is synced to system's one.
+ ALT patches site-packages paths (platlib and purelib).
+ """
+ env = dict(SETUPTOOLS_USE_DISTUTILS='local')
+ local_distsysconfig = get_distsysconfig(venv, env=env)
+
+ env = dict(SETUPTOOLS_USE_DISTUTILS='stdlib')
+ stdlib_distsysconfig = get_distsysconfig(venv, env=env)
+
+ assert local_distsysconfig == stdlib_distsysconfig
+
+
+def test_distutils_local_sysconfig_conformed(venv):
+ """
+ ALT: Ensure local distutils sysconfig is conformed to system's sysconfig.
+ ALT patches site-packages paths (platlib and purelib).
+ """
+ env = dict(SETUPTOOLS_USE_DISTUTILS='local')
+ local_distsysconfig = get_distsysconfig(venv, env=env)
+
+ system_sysconfig = get_sysconfig(venv, env=env)
+ assert local_distsysconfig == system_sysconfig
+
+
+def test_distutils_local_pycondig_conformed(venv):
+ """
+ ALT: Ensure local distutils 'pyconfig.h' is synced to sysconfig' one.
+
+ ALT ships pyconfig-32.h and pyconfig-64.h for i686 and x86_64 respectively.
+ """
+ env = dict(SETUPTOOLS_USE_DISTUTILS='local')
+ local_config_name = os.path.basename(
+ get_dist_config_h(venv, env=env, python_build=True)
+ )
+
+ sysconfig_config_name = os.path.basename(
+ get_sysconfig_config_h(venv, env=env)
+ )
+ assert local_config_name == sysconfig_config_name
diff --git a/setuptools/tests/test_easy_install.py b/setuptools/tests/test_easy_install.py
index d71e01586..de9e7ac76 100644
--- a/setuptools/tests/test_easy_install.py
+++ b/setuptools/tests/test_easy_install.py
@@ -1348,7 +1348,13 @@ class TestWindowsScriptWriter:
VersionStub = namedtuple("VersionStub", "major, minor, micro, releaselevel, serial")
-def test_use_correct_python_version_string(tmpdir, tmpdir_cwd, monkeypatch):
+# ALT: how to reproduce:
+# python3 -c 'from setuptools import setup; setup()' develop --prefix /tmp
+@pytest.mark.parametrize("user", [True, False], ids=["user", "nouser"])
+@pytest.mark.parametrize("prefix", [True, False], ids=["prefix", "noprefix"])
+def test_use_correct_python_version_string(
+ tmpdir, tmpdir_cwd, monkeypatch, user, prefix
+):
# In issue #3001, easy_install wrongly uses the `python3.1` directory
# when the interpreter is `python3.10` and the `--user` option is given.
# See pypa/setuptools#3001.
@@ -1356,7 +1362,9 @@ def test_use_correct_python_version_string(tmpdir, tmpdir_cwd, monkeypatch):
cmd = dist.get_command_obj('easy_install')
cmd.args = ['ok']
cmd.optimize = 0
- cmd.user = True
+ cmd.user = user
+ if prefix:
+ cmd.prefix = str(tmpdir)
cmd.install_userbase = str(tmpdir)
cmd.install_usersite = None
install_cmd = dist.get_command_obj('install')
@@ -1386,6 +1394,9 @@ def test_use_correct_python_version_string(tmpdir, tmpdir_cwd, monkeypatch):
if re.search(name + r'3\.?1', install_dir):
assert re.search(name + r'3\.?1\d', install_dir)
+ # ALT specific: python3.x -> python3
+ assert f"{os.sep}{name}{sys.version_info.major}{os.sep}" in install_dir
+
# The following "variables" are used for interpolation in distutils
# installation schemes, so it should be fair to treat them as "semi-public",
# or at least public enough so we can have a test to make sure they are correct
diff --git a/setuptools/tests/test_editable_install.py b/setuptools/tests/test_editable_install.py
index ef71147ad..0f73990cd 100644
--- a/setuptools/tests/test_editable_install.py
+++ b/setuptools/tests/test_editable_install.py
@@ -2,6 +2,7 @@ import os
import stat
import sys
import subprocess
+import time
import platform
from copy import deepcopy
from importlib import import_module
@@ -146,12 +147,26 @@ def test_editable_with_pyproject(tmp_path, venv, files, editable_opts):
]
print(str(subprocess.check_output(cmd), "utf-8"))
- cmd = [venv.exe(), "-m", "mypkg"]
- assert subprocess.check_output(cmd).strip() == b"3.14159.post0 Hello World"
+ cmd = [venv.exe(), "-vv", "-m", "mypkg"]
+ expected = b"3.14159.post0 Hello World"
+ assert expected in subprocess.check_output(cmd).strip()
+
+ time.sleep(1)
(project / "src/mypkg/data.txt").write_text("foobar")
(project / "src/mypkg/mod.py").write_text("x = 42")
- assert subprocess.check_output(cmd).strip() == b"3.14159.post0 foobar 42"
+
+ """
+ sporadically fails on girar:
+ [00:00:33] > assert subprocess.check_output(cmd).strip() == b"3.14159.post0 foobar 42"
+ [00:00:33] E AssertionError: assert b'3.14159.post0 foobar' == b'3.14159.post0 foobar 42'
+ [00:00:33] E Full diff:
+ [00:00:33] E - b'3.14159.post0 foobar 42'
+ [00:00:33] E ? ---
+ [00:00:33] E + b'3.14159.post0 foobar'
+ """
+ expected = b"3.14159.post0 foobar 42"
+ assert expected in subprocess.check_output(cmd).strip()
def test_editable_with_flat_layout(tmp_path, venv, editable_opts):
@@ -899,11 +914,20 @@ class TestOverallBehaviour:
mod2 = next(project.glob("**/mod2.py"))
resource_file = next(project.glob("**/resource_file.txt"))
+ time.sleep(1)
+
mod1.write_text("var = 17", encoding="utf-8")
mod2.write_text("var = 781", encoding="utf-8")
resource_file.write_text("resource 374", encoding="utf-8")
- out = venv.run(["python", "-c", dedent(cmd_get_vars)])
+ out = venv.run(["python", "-vv", "-c", dedent(cmd_get_vars)])
+ """
+ debug girar issue
+ [00:00:30] out = venv.run(["python", "-c", dedent(cmd_get_vars)])
+ [00:00:30] assert b"42 13" not in out
+ [00:00:30] > assert b"17 781" in out
+ [00:00:30] E AssertionError: assert b'17 781' in b'42 781\n'
+ """
assert b"42 13" not in out
assert b"17 781" in out
@@ -1028,6 +1052,10 @@ def test_compat_install(tmp_path, venv):
assert "cannot import name 'subpackage'" in out
+@pytest.mark.skipif(
+ os.environ.get("NO_INTERNET") is not None,
+ reason="Requires Internet",
+)
def test_pbr_integration(tmp_path, venv, editable_opts):
"""Ensure editable installs work with pbr, issue #3500"""
files = {
diff --git a/setuptools/tests/test_virtualenv.py b/setuptools/tests/test_virtualenv.py
index d02993fd6..73c8c47ed 100644
--- a/setuptools/tests/test_virtualenv.py
+++ b/setuptools/tests/test_virtualenv.py
@@ -179,6 +179,10 @@ def _check_test_command_install_requirements(venv, tmpdir):
assert tmpdir.join('success').check()
+@pytest.mark.xfail(
+ os.environ.get("RPM_BUILD_DIR") is not None,
+ reason="Fails in ALT's RPM build environment",
+)
def test_test_command_install_requirements(venv, tmpdir, tmpdir_cwd):
# Ensure pip is installed.
venv.run(["python", "-c", "import pip"])