diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 9b4c4bc74b1..2ba688afbe8 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -27,7 +27,7 @@ repos: - id: validate_manifest - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.5.4 + rev: v0.7.3 hooks: - id: ruff - id: ruff-format diff --git a/CHANGELOG.md b/CHANGELOG.md index 3208cd05d4c..ee6be5d4394 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Change Log +## [1.8.4] - 2024-10-14 + +### Added + +- **Add official support for Python 3.13** ([#9523](https://github.com/python-poetry/poetry/pull/9523)). + +### Changed + +- Require `virtualenv>=20.26.6` to mitigate potential command injection when running `poetry shell` in untrusted projects ([#9757](https://github.com/python-poetry/poetry/pull/9757)). + +### poetry-core ([`1.9.1`](https://github.com/python-poetry/poetry-core/releases/tag/1.9.1)) + +- Add `3.13` to the list of available Python versions ([#747](https://github.com/python-poetry/poetry-core/pull/747)). ## [1.8.3] - 2024-05-08 diff --git a/poetry.lock b/poetry.lock index 716203f6b9b..63c85ff1d4a 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.4 and should not be changed by hand. [[package]] name = "backports-tarfile" @@ -819,38 +819,43 @@ files = [ [[package]] name = "mypy" -version = "1.11.0" +version = "1.13.0" description = "Optional static typing for Python" optional = false python-versions = ">=3.8" files = [ - {file = "mypy-1.11.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a3824187c99b893f90c845bab405a585d1ced4ff55421fdf5c84cb7710995229"}, - {file = "mypy-1.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:96f8dbc2c85046c81bcddc246232d500ad729cb720da4e20fce3b542cab91287"}, - {file = "mypy-1.11.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1a5d8d8dd8613a3e2be3eae829ee891b6b2de6302f24766ff06cb2875f5be9c6"}, - {file = "mypy-1.11.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:72596a79bbfb195fd41405cffa18210af3811beb91ff946dbcb7368240eed6be"}, - {file = "mypy-1.11.0-cp310-cp310-win_amd64.whl", hash = "sha256:35ce88b8ed3a759634cb4eb646d002c4cef0a38f20565ee82b5023558eb90c00"}, - {file = "mypy-1.11.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:98790025861cb2c3db8c2f5ad10fc8c336ed2a55f4daf1b8b3f877826b6ff2eb"}, - {file = "mypy-1.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:25bcfa75b9b5a5f8d67147a54ea97ed63a653995a82798221cca2a315c0238c1"}, - {file = "mypy-1.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0bea2a0e71c2a375c9fa0ede3d98324214d67b3cbbfcbd55ac8f750f85a414e3"}, - {file = "mypy-1.11.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d2b3d36baac48e40e3064d2901f2fbd2a2d6880ec6ce6358825c85031d7c0d4d"}, - {file = "mypy-1.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:d8e2e43977f0e09f149ea69fd0556623919f816764e26d74da0c8a7b48f3e18a"}, - {file = "mypy-1.11.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1d44c1e44a8be986b54b09f15f2c1a66368eb43861b4e82573026e04c48a9e20"}, - {file = "mypy-1.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cea3d0fb69637944dd321f41bc896e11d0fb0b0aa531d887a6da70f6e7473aba"}, - {file = "mypy-1.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a83ec98ae12d51c252be61521aa5731f5512231d0b738b4cb2498344f0b840cd"}, - {file = "mypy-1.11.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c7b73a856522417beb78e0fb6d33ef89474e7a622db2653bc1285af36e2e3e3d"}, - {file = "mypy-1.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:f2268d9fcd9686b61ab64f077be7ffbc6fbcdfb4103e5dd0cc5eaab53a8886c2"}, - {file = "mypy-1.11.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:940bfff7283c267ae6522ef926a7887305945f716a7704d3344d6d07f02df850"}, - {file = "mypy-1.11.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:14f9294528b5f5cf96c721f231c9f5b2733164e02c1c018ed1a0eff8a18005ac"}, - {file = "mypy-1.11.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d7b54c27783991399046837df5c7c9d325d921394757d09dbcbf96aee4649fe9"}, - {file = "mypy-1.11.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:65f190a6349dec29c8d1a1cd4aa71284177aee5949e0502e6379b42873eddbe7"}, - {file = "mypy-1.11.0-cp38-cp38-win_amd64.whl", hash = "sha256:dbe286303241fea8c2ea5466f6e0e6a046a135a7e7609167b07fd4e7baf151bf"}, - {file = "mypy-1.11.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:104e9c1620c2675420abd1f6c44bab7dd33cc85aea751c985006e83dcd001095"}, - {file = "mypy-1.11.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f006e955718ecd8d159cee9932b64fba8f86ee6f7728ca3ac66c3a54b0062abe"}, - {file = "mypy-1.11.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:becc9111ca572b04e7e77131bc708480cc88a911adf3d0239f974c034b78085c"}, - {file = "mypy-1.11.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6801319fe76c3f3a3833f2b5af7bd2c17bb93c00026a2a1b924e6762f5b19e13"}, - {file = "mypy-1.11.0-cp39-cp39-win_amd64.whl", hash = "sha256:c1a184c64521dc549324ec6ef7cbaa6b351912be9cb5edb803c2808a0d7e85ac"}, - {file = "mypy-1.11.0-py3-none-any.whl", hash = "sha256:56913ec8c7638b0091ef4da6fcc9136896914a9d60d54670a75880c3e5b99ace"}, - {file = "mypy-1.11.0.tar.gz", hash = "sha256:93743608c7348772fdc717af4aeee1997293a1ad04bc0ea6efa15bf65385c538"}, + {file = "mypy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6607e0f1dd1fb7f0aca14d936d13fd19eba5e17e1cd2a14f808fa5f8f6d8f60a"}, + {file = "mypy-1.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8a21be69bd26fa81b1f80a61ee7ab05b076c674d9b18fb56239d72e21d9f4c80"}, + {file = "mypy-1.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b2353a44d2179846a096e25691d54d59904559f4232519d420d64da6828a3a7"}, + {file = "mypy-1.13.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0730d1c6a2739d4511dc4253f8274cdd140c55c32dfb0a4cf8b7a43f40abfa6f"}, + {file = "mypy-1.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:c5fc54dbb712ff5e5a0fca797e6e0aa25726c7e72c6a5850cfd2adbc1eb0a372"}, + {file = "mypy-1.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:581665e6f3a8a9078f28d5502f4c334c0c8d802ef55ea0e7276a6e409bc0d82d"}, + {file = "mypy-1.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3ddb5b9bf82e05cc9a627e84707b528e5c7caaa1c55c69e175abb15a761cec2d"}, + {file = "mypy-1.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:20c7ee0bc0d5a9595c46f38beb04201f2620065a93755704e141fcac9f59db2b"}, + {file = "mypy-1.13.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3790ded76f0b34bc9c8ba4def8f919dd6a46db0f5a6610fb994fe8efdd447f73"}, + {file = "mypy-1.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:51f869f4b6b538229c1d1bcc1dd7d119817206e2bc54e8e374b3dfa202defcca"}, + {file = "mypy-1.13.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5c7051a3461ae84dfb5dd15eff5094640c61c5f22257c8b766794e6dd85e72d5"}, + {file = "mypy-1.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:39bb21c69a5d6342f4ce526e4584bc5c197fd20a60d14a8624d8743fffb9472e"}, + {file = "mypy-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:164f28cb9d6367439031f4c81e84d3ccaa1e19232d9d05d37cb0bd880d3f93c2"}, + {file = "mypy-1.13.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a4c1bfcdbce96ff5d96fc9b08e3831acb30dc44ab02671eca5953eadad07d6d0"}, + {file = "mypy-1.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:a0affb3a79a256b4183ba09811e3577c5163ed06685e4d4b46429a271ba174d2"}, + {file = "mypy-1.13.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a7b44178c9760ce1a43f544e595d35ed61ac2c3de306599fa59b38a6048e1aa7"}, + {file = "mypy-1.13.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5d5092efb8516d08440e36626f0153b5006d4088c1d663d88bf79625af3d1d62"}, + {file = "mypy-1.13.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de2904956dac40ced10931ac967ae63c5089bd498542194b436eb097a9f77bc8"}, + {file = "mypy-1.13.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:7bfd8836970d33c2105562650656b6846149374dc8ed77d98424b40b09340ba7"}, + {file = "mypy-1.13.0-cp313-cp313-win_amd64.whl", hash = "sha256:9f73dba9ec77acb86457a8fc04b5239822df0c14a082564737833d2963677dbc"}, + {file = "mypy-1.13.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:100fac22ce82925f676a734af0db922ecfea991e1d7ec0ceb1e115ebe501301a"}, + {file = "mypy-1.13.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7bcb0bb7f42a978bb323a7c88f1081d1b5dee77ca86f4100735a6f541299d8fb"}, + {file = "mypy-1.13.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bde31fc887c213e223bbfc34328070996061b0833b0a4cfec53745ed61f3519b"}, + {file = "mypy-1.13.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07de989f89786f62b937851295ed62e51774722e5444a27cecca993fc3f9cd74"}, + {file = "mypy-1.13.0-cp38-cp38-win_amd64.whl", hash = "sha256:4bde84334fbe19bad704b3f5b78c4abd35ff1026f8ba72b29de70dda0916beb6"}, + {file = "mypy-1.13.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0246bcb1b5de7f08f2826451abd947bf656945209b140d16ed317f65a17dc7dc"}, + {file = "mypy-1.13.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7f5b7deae912cf8b77e990b9280f170381fdfbddf61b4ef80927edd813163732"}, + {file = "mypy-1.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7029881ec6ffb8bc233a4fa364736789582c738217b133f1b55967115288a2bc"}, + {file = "mypy-1.13.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3e38b980e5681f28f033f3be86b099a247b13c491f14bb8b1e1e134d23bb599d"}, + {file = "mypy-1.13.0-cp39-cp39-win_amd64.whl", hash = "sha256:a6789be98a2017c912ae6ccb77ea553bbaf13d27605d2ca20a76dfbced631b24"}, + {file = "mypy-1.13.0-py3-none-any.whl", hash = "sha256:9c250883f9fd81d212e0952c92dbfcc96fc237f4b7c92f56ac81fd48460b3e5a"}, + {file = "mypy-1.13.0.tar.gz", hash = "sha256:0291a61b6fbf3e6673e3405cfcc0e7650bebc7939659fdca2702958038bd835e"}, ] [package.dependencies] @@ -860,6 +865,7 @@ typing-extensions = ">=4.6.0" [package.extras] dmypy = ["psutil (>=4.0)"] +faster-cache = ["orjson"] install-types = ["pip"] mypyc = ["setuptools (>=50)"] reports = ["lxml"] @@ -880,7 +886,7 @@ name = "nodeenv" version = "1.9.1" description = "Node.js virtual environment builder" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" files = [ {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, diff --git a/pyproject.toml b/pyproject.toml index 1ac026df493..5e35aee21ca 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -98,8 +98,6 @@ extend-exclude = [ # External to the project's coding standards "tests/fixtures/git/*", "tests/fixtures/project_with_setup*/*", - "tests/masonry/builders/fixtures/pep_561_stub_only*/*", - "tests/utils/fixtures/setups/*", ] fix = true line-length = 88 diff --git a/src/poetry/console/application.py b/src/poetry/console/application.py index c5c1348d885..c038db7f02b 100644 --- a/src/poetry/console/application.py +++ b/src/poetry/console/application.py @@ -16,7 +16,6 @@ from cleo.events.event_dispatcher import EventDispatcher from cleo.exceptions import CleoError from cleo.formatters.style import Style -from cleo.io.null_io import NullIO from poetry.__version__ import __version__ from poetry.console.command_loader import CommandLoader @@ -322,13 +321,10 @@ def configure_installer_for_command(command: InstallerCommand, io: IO) -> None: ) command.set_installer(installer) - def _load_plugins(self, io: IO | None = None) -> None: + def _load_plugins(self, io: IO) -> None: if self._plugins_loaded: return - if io is None: - io = NullIO() - self._disable_plugins = io.input.has_parameter_option("--no-plugins") if not self._disable_plugins: diff --git a/src/poetry/factory.py b/src/poetry/factory.py index e4807aa00c2..d2f6e3f695b 100644 --- a/src/poetry/factory.py +++ b/src/poetry/factory.py @@ -195,7 +195,11 @@ def create_package_source( raise InvalidSourceError( "The PyPI repository cannot be configured with a custom url." ) - return PyPiRepository(disable_cache=disable_cache, pool_size=pool_size) + return PyPiRepository( + config=config, + disable_cache=disable_cache, + pool_size=pool_size, + ) try: url = source["url"] diff --git a/src/poetry/inspection/lazy_wheel.py b/src/poetry/inspection/lazy_wheel.py index 8722a04ef5c..41826ebe8ea 100644 --- a/src/poetry/inspection/lazy_wheel.py +++ b/src/poetry/inspection/lazy_wheel.py @@ -10,11 +10,10 @@ from bisect import bisect_right from contextlib import contextmanager from tempfile import NamedTemporaryFile +from typing import IO from typing import TYPE_CHECKING from typing import Any -from typing import BinaryIO from typing import ClassVar -from typing import cast from urllib.parse import urlparse from zipfile import BadZipFile from zipfile import ZipFile @@ -168,14 +167,14 @@ def minimal_intervals_covering( yield from self._merge(start, end, left, right) -class ReadOnlyIOWrapper(BinaryIO): - """Implement read-side ``BinaryIO`` methods wrapping an inner ``BinaryIO``. +class ReadOnlyIOWrapper(IO[bytes]): + """Implement read-side ``IO[bytes]`` methods wrapping an inner ``IO[bytes]``. This wrapper is useful because Python currently does not distinguish read-only streams at the type level. """ - def __init__(self, inner: BinaryIO) -> None: + def __init__(self, inner: IO[bytes]) -> None: self._file = inner def __enter__(self) -> Self: @@ -296,7 +295,8 @@ def __init__( session: Session | Authenticator, delete_backing_file: bool = True, ) -> None: - super().__init__(cast(BinaryIO, NamedTemporaryFile(delete=delete_backing_file))) + inner = NamedTemporaryFile(delete=delete_backing_file) # noqa: SIM115 + super().__init__(inner) self._merge_intervals: MergeIntervals | None = None self._length: int | None = None diff --git a/src/poetry/repositories/cached_repository.py b/src/poetry/repositories/cached_repository.py index 1a24477d780..cb5bac13915 100644 --- a/src/poetry/repositories/cached_repository.py +++ b/src/poetry/repositories/cached_repository.py @@ -25,7 +25,7 @@ class CachedRepository(Repository, ABC): CACHE_VERSION = parse_constraint("2.0.0") def __init__( - self, name: str, disable_cache: bool = False, config: Config | None = None + self, name: str, *, disable_cache: bool = False, config: Config | None = None ) -> None: super().__init__(name) self._disable_cache = disable_cache diff --git a/src/poetry/repositories/http_repository.py b/src/poetry/repositories/http_repository.py index 905668e66f0..4548d2f1c49 100644 --- a/src/poetry/repositories/http_repository.py +++ b/src/poetry/repositories/http_repository.py @@ -49,11 +49,12 @@ def __init__( self, name: str, url: str, + *, config: Config | None = None, disable_cache: bool = False, pool_size: int = requests.adapters.DEFAULT_POOLSIZE, ) -> None: - super().__init__(name, disable_cache, config) + super().__init__(name, disable_cache=disable_cache, config=config) self._url = url if config is None: config = Config.create() diff --git a/src/poetry/repositories/legacy_repository.py b/src/poetry/repositories/legacy_repository.py index 5cdcd7cc35f..d8f1e5d2fce 100644 --- a/src/poetry/repositories/legacy_repository.py +++ b/src/poetry/repositories/legacy_repository.py @@ -30,6 +30,7 @@ def __init__( self, name: str, url: str, + *, config: Config | None = None, disable_cache: bool = False, pool_size: int = requests.adapters.DEFAULT_POOLSIZE, @@ -37,7 +38,13 @@ def __init__( if name == "pypi": raise ValueError("The name [pypi] is reserved for repositories") - super().__init__(name, url.rstrip("/"), config, disable_cache, pool_size) + super().__init__( + name, + url.rstrip("/"), + config=config, + disable_cache=disable_cache, + pool_size=pool_size, + ) def package( self, name: str, version: Version, extras: list[str] | None = None diff --git a/src/poetry/repositories/pypi_repository.py b/src/poetry/repositories/pypi_repository.py index 5e47047b1c3..3aa77278373 100644 --- a/src/poetry/repositories/pypi_repository.py +++ b/src/poetry/repositories/pypi_repository.py @@ -29,6 +29,8 @@ from poetry.core.constraints.version import Version from poetry.core.constraints.version import VersionConstraint + from poetry.config.config import Config + SUPPORTED_PACKAGE_TYPES = {"sdist", "bdist_wheel"} @@ -36,13 +38,16 @@ class PyPiRepository(HTTPRepository): def __init__( self, url: str = "https://pypi.org/", + *, + config: Config | None = None, disable_cache: bool = False, - fallback: bool = True, pool_size: int = requests.adapters.DEFAULT_POOLSIZE, + fallback: bool = True, ) -> None: super().__init__( "PyPI", url.rstrip("/") + "/simple/", + config=config, disable_cache=disable_cache, pool_size=pool_size, ) diff --git a/src/poetry/utils/helpers.py b/src/poetry/utils/helpers.py index 22608f8c3eb..bd3ea330aaa 100644 --- a/src/poetry/utils/helpers.py +++ b/src/poetry/utils/helpers.py @@ -397,7 +397,7 @@ def extractall(source: Path, dest: Path, zip: bool) -> None: else: # These versions of python shipped with a broken tarfile data_filter, per # https://github.com/python/cpython/issues/107845. - broken_tarfile_filter = {(3, 8, 17), (3, 9, 17), (3, 10, 12), (3, 11, 4)} + broken_tarfile_filter = {(3, 9, 17), (3, 10, 12), (3, 11, 4)} with tarfile.open(source) as archive: if ( hasattr(tarfile, "data_filter") diff --git a/src/poetry/vcs/git/system.py b/src/poetry/vcs/git/system.py index 27ab0330002..2d0ffc761f3 100644 --- a/src/poetry/vcs/git/system.py +++ b/src/poetry/vcs/git/system.py @@ -40,7 +40,7 @@ def run(*args: Any, **kwargs: Any) -> None: git_command = find_git_command() env = os.environ.copy() env["GIT_TERMINAL_PROMPT"] = "0" - subprocess.check_call( # type: ignore[call-arg] + subprocess.check_call( git_command + list(args), stderr=subprocess.DEVNULL, stdout=subprocess.DEVNULL, diff --git a/tests/console/conftest.py b/tests/console/conftest.py index f14cf70d3c1..11b7a3d2268 100644 --- a/tests/console/conftest.py +++ b/tests/console/conftest.py @@ -97,7 +97,8 @@ def poetry( @pytest.fixture def app(poetry: Poetry) -> PoetryTestApplication: app_ = PoetryTestApplication(poetry) - app_._load_plugins() + io = NullIO() + app_._load_plugins(io) return app_ diff --git a/tests/installation/fixtures/with-pypi-repository.test b/tests/installation/fixtures/with-pypi-repository.test index f277d537dbd..ce79893c9a8 100644 --- a/tests/installation/fixtures/with-pypi-repository.test +++ b/tests/installation/fixtures/with-pypi-repository.test @@ -8,7 +8,7 @@ optional = false python-versions = "*" groups = ["dev"] files = [ - {file = "attrs-17.4.0-py2.py3-none-any.whl", hash = "sha256:d38e57f381e891928357c68e300d28d3d4dcddc50486d5f8dfaf743d40477619"}, + {file = "attrs-17.4.0-py2.py3-none-any.whl", hash = "sha256:1fbfc10ebc8c876dcbab17f016b80ae1a4f0c1413461a695871427960795beb4"}, {file = "attrs-17.4.0.tar.gz", hash = "sha256:eb7536a1e6928190b3008c5b350bdf9850d619fff212341cd096f87a27a5e564"}, ] @@ -26,7 +26,7 @@ python-versions = "*" groups = ["dev"] markers = 'sys_platform == "win32"' files = [ - {file = "colorama-0.3.9-py2.py3-none-any.whl", hash = "sha256:5b632359f1ed2b7676a869812ba0edaacb99be04679b29eb56c07a5e137ab5a2"}, + {file = "colorama-0.3.9-py2.py3-none-any.whl", hash = "sha256:78a441d2e984c790526cdef1cfd8415a366979ef5b3186771a055b35886953bf"}, {file = "colorama-0.3.9.tar.gz", hash = "sha256:4c5a15209723ce1330a5c193465fe221098f761e9640d823a2ce7c03f983137f"}, ] @@ -39,8 +39,8 @@ python-versions = "*" groups = ["dev"] files = [ {file = "more-itertools-4.1.0.tar.gz", hash = "sha256:bab2dc6f4be8f9a4a72177842c5283e2dff57c167439a03e3d8d901e854f0f2e"}, - {file = "more_itertools-4.1.0-py2-none-any.whl", hash = "sha256:5dd7dfd88d2fdaea446da478ffef8d7151fdf26ee92ac7ed7b14e8d71efe4b62"}, - {file = "more_itertools-4.1.0-py3-none-any.whl", hash = "sha256:29b1e1661aaa56875ce090fa219fa84dfc13daecb52cd4fae321f6f57b419ec4"}, + {file = "more_itertools-4.1.0-py2-none-any.whl", hash = "sha256:0f461c2cd4ec16611396f9ee57f40433de3d59e95475d84c0c829cde02f746cd"}, + {file = "more_itertools-4.1.0-py3-none-any.whl", hash = "sha256:580b6002d1f28feb5bcb8303278d59cf17dfbd19a63a5c2375112dae72c9bf98"}, ] [package.dependencies] @@ -54,8 +54,8 @@ optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" groups = ["dev"] files = [ - {file = "pluggy-0.6.0-py2-none-any.whl", hash = "sha256:9b835f86bfe5498c87ace7f4899cb1b0c40e71c9277377f6851c74a307879285"}, - {file = "pluggy-0.6.0-py3-none-any.whl", hash = "sha256:8c646771f5eab7557d1f3924077c55408e86bdfb700f7d86a6d83abeabff4c66"}, + {file = "pluggy-0.6.0-py2-none-any.whl", hash = "sha256:f5f767d398f18aa177976bf9c4d0c05d96487a7d8f07062251585803aaf56246"}, + {file = "pluggy-0.6.0-py3-none-any.whl", hash = "sha256:d34798b80853ab688de1a3ca5b99ba4de91c459c19c76a555dc939979ae67eb0"}, {file = "pluggy-0.6.0.tar.gz", hash = "sha256:a982e208d054867661d27c6d2a86b17ba05fbb6b1bdc01f42660732dd107f865"}, ] @@ -67,7 +67,7 @@ optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" groups = ["dev"] files = [ - {file = "py-1.5.3-py2.py3-none-any.whl", hash = "sha256:43ee6c7f95e0ec6a906de49906b79d138d89728fff17109d49f086abc2fdd985"}, + {file = "py-1.5.3-py2.py3-none-any.whl", hash = "sha256:ef4a94f47156178e42ef8f2b131db420e0f4b6aa0b3936b6dbde6ad6487476a5"}, {file = "py-1.5.3.tar.gz", hash = "sha256:2df2c513c3af11de15f58189ba5539ddc4768c6f33816dc5c03950c8bd6180fa"}, ] @@ -79,7 +79,7 @@ optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" groups = ["dev"] files = [ - {file = "pytest-3.5.1-py2.py3-none-any.whl", hash = "sha256:6d3e83b1c1697d220137e436980e73b3ca674f643e666d7c24b0321cb57b76a4"}, + {file = "pytest-3.5.1-py2.py3-none-any.whl", hash = "sha256:d327df3686046c5b374a9776d9e11606f7dba6fb3db5cf5d60ebc78a31e0768e"}, {file = "pytest-3.5.1.tar.gz", hash = "sha256:b8fe151f3e181801dd38583a1c03818fbc662a8fce96c9063a0af624613e78f8"}, ] @@ -117,7 +117,7 @@ optional = false python-versions = "*" groups = ["dev"] files = [ - {file = "six-1.11.0-py2.py3-none-any.whl", hash = "sha256:112f5b46e6aa106db3e4e2494a03694c938f41c4c4535edbdfc816c2e0cb50f2"}, + {file = "six-1.11.0-py2.py3-none-any.whl", hash = "sha256:534e9875e44a507adec601c29b3cbd2ca6dae7df92bf3dd20c7289b2f99f7466"}, {file = "six-1.11.0.tar.gz", hash = "sha256:268a4ccb159c1a2d2c79336b02e75058387b0cdbb4cea2f07846a758f48a356d"}, ] diff --git a/tests/integration/test_utils_vcs_git.py b/tests/integration/test_utils_vcs_git.py index 1e4229e0f48..e17966f3d6b 100644 --- a/tests/integration/test_utils_vcs_git.py +++ b/tests/integration/test_utils_vcs_git.py @@ -310,11 +310,11 @@ def test_system_git_fallback_on_http_401( GIT_USERNAME = os.environ.get("POETRY_TEST_INTEGRATION_GIT_USERNAME") GIT_PASSWORD = os.environ.get("POETRY_TEST_INTEGRATION_GIT_PASSWORD") -HTTP_AUTH_CREDENTIALS_AVAILABLE = not (GIT_USERNAME and GIT_PASSWORD) +HTTP_AUTH_CREDENTIALS_UNAVAILABLE = not (GIT_USERNAME and GIT_PASSWORD) @pytest.mark.skipif( - HTTP_AUTH_CREDENTIALS_AVAILABLE, + HTTP_AUTH_CREDENTIALS_UNAVAILABLE, reason="HTTP authentication credentials not available", ) def test_configured_repository_http_auth( diff --git a/tests/masonry/builders/fixtures/pep_561_stub_only/pkg-stubs/__init__.pyi b/tests/masonry/builders/fixtures/pep_561_stub_only/pkg-stubs/__init__.pyi deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/tests/masonry/builders/fixtures/pep_561_stub_only/pkg-stubs/module.pyi b/tests/masonry/builders/fixtures/pep_561_stub_only/pkg-stubs/module.pyi deleted file mode 100644 index d79e6e39ee0..00000000000 --- a/tests/masonry/builders/fixtures/pep_561_stub_only/pkg-stubs/module.pyi +++ /dev/null @@ -1,4 +0,0 @@ -"""Example module""" -from typing import Tuple - -version_info = Tuple[int, int, int] diff --git a/tests/masonry/builders/fixtures/pep_561_stub_only/pkg-stubs/subpkg/__init__.pyi b/tests/masonry/builders/fixtures/pep_561_stub_only/pkg-stubs/subpkg/__init__.pyi deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/tests/masonry/builders/fixtures/pep_561_stub_only/pyproject.toml b/tests/masonry/builders/fixtures/pep_561_stub_only/pyproject.toml deleted file mode 100644 index 36a077afd95..00000000000 --- a/tests/masonry/builders/fixtures/pep_561_stub_only/pyproject.toml +++ /dev/null @@ -1,14 +0,0 @@ -[tool.poetry] -name = "pep-561-stubs" -version = "0.1" -description = "PEP 561 stub package example" -authors = [ - "Oleg Höfling " -] -license = "MIT" -packages = [ - {include = "pkg-stubs"} -] - -[tool.poetry.dependencies] -python = "^3.6" diff --git a/tests/masonry/builders/fixtures/pep_561_stub_only_partial/pkg-stubs/__init__.pyi b/tests/masonry/builders/fixtures/pep_561_stub_only_partial/pkg-stubs/__init__.pyi deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/tests/masonry/builders/fixtures/pep_561_stub_only_partial/pkg-stubs/module.pyi b/tests/masonry/builders/fixtures/pep_561_stub_only_partial/pkg-stubs/module.pyi deleted file mode 100644 index d79e6e39ee0..00000000000 --- a/tests/masonry/builders/fixtures/pep_561_stub_only_partial/pkg-stubs/module.pyi +++ /dev/null @@ -1,4 +0,0 @@ -"""Example module""" -from typing import Tuple - -version_info = Tuple[int, int, int] diff --git a/tests/masonry/builders/fixtures/pep_561_stub_only_partial/pkg-stubs/py.typed b/tests/masonry/builders/fixtures/pep_561_stub_only_partial/pkg-stubs/py.typed deleted file mode 100644 index b648ac92333..00000000000 --- a/tests/masonry/builders/fixtures/pep_561_stub_only_partial/pkg-stubs/py.typed +++ /dev/null @@ -1 +0,0 @@ -partial diff --git a/tests/masonry/builders/fixtures/pep_561_stub_only_partial/pkg-stubs/subpkg/__init__.pyi b/tests/masonry/builders/fixtures/pep_561_stub_only_partial/pkg-stubs/subpkg/__init__.pyi deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/tests/masonry/builders/fixtures/pep_561_stub_only_partial/pyproject.toml b/tests/masonry/builders/fixtures/pep_561_stub_only_partial/pyproject.toml deleted file mode 100644 index db202c04a1c..00000000000 --- a/tests/masonry/builders/fixtures/pep_561_stub_only_partial/pyproject.toml +++ /dev/null @@ -1,14 +0,0 @@ -[tool.poetry] -name = "pep-561-stubs" -version = "0.1" -description = "PEP 561 stub package example with the py.typed marker file" -authors = [ - "Oleg Höfling " -] -license = "MIT" -packages = [ - {include = "pkg-stubs"} -] - -[tool.poetry.dependencies] -python = "^3.6" diff --git a/tests/masonry/builders/fixtures/pep_561_stub_only_src/pyproject.toml b/tests/masonry/builders/fixtures/pep_561_stub_only_src/pyproject.toml deleted file mode 100644 index 666b2b24f6d..00000000000 --- a/tests/masonry/builders/fixtures/pep_561_stub_only_src/pyproject.toml +++ /dev/null @@ -1,14 +0,0 @@ -[tool.poetry] -name = "pep-561-stubs" -version = "0.1" -description = "PEP 561 stub package example with an src layout" -authors = [ - "Oleg Höfling " -] -license = "MIT" -packages = [ - {include = "pkg-stubs", from = "src"} -] - -[tool.poetry.dependencies] -python = "^3.6" diff --git a/tests/masonry/builders/fixtures/pep_561_stub_only_src/src/pkg-stubs/__init__.pyi b/tests/masonry/builders/fixtures/pep_561_stub_only_src/src/pkg-stubs/__init__.pyi deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/tests/masonry/builders/fixtures/pep_561_stub_only_src/src/pkg-stubs/module.pyi b/tests/masonry/builders/fixtures/pep_561_stub_only_src/src/pkg-stubs/module.pyi deleted file mode 100644 index d79e6e39ee0..00000000000 --- a/tests/masonry/builders/fixtures/pep_561_stub_only_src/src/pkg-stubs/module.pyi +++ /dev/null @@ -1,4 +0,0 @@ -"""Example module""" -from typing import Tuple - -version_info = Tuple[int, int, int] diff --git a/tests/masonry/builders/fixtures/pep_561_stub_only_src/src/pkg-stubs/subpkg/__init__.pyi b/tests/masonry/builders/fixtures/pep_561_stub_only_src/src/pkg-stubs/subpkg/__init__.pyi deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/tests/repositories/fixtures/distribution_hashes.py b/tests/repositories/fixtures/distribution_hashes.py index 64c85b37319..5452af81cdb 100644 --- a/tests/repositories/fixtures/distribution_hashes.py +++ b/tests/repositories/fixtures/distribution_hashes.py @@ -28,48 +28,48 @@ class DistributionHash: "35ff4705ea90a76bf972ff3b229546ca", ), "attrs-17.4.0-py2.py3-none-any.whl": DistributionHash( - "d38e57f381e891928357c68e300d28d3d4dcddc50486d5f8dfaf743d40477619", - "9d32f2b5a93343e01f54d87740f2da60", + "1fbfc10ebc8c876dcbab17f016b80ae1a4f0c1413461a695871427960795beb4", + "7fe37931797b16c7fa158017457a9ea9", ), "attrs-17.4.0.tar.gz": DistributionHash( "eb7536a1e6928190b3008c5b350bdf9850d619fff212341cd096f87a27a5e564", "c03e5b3608d9071fbd098850d8922668", ), "black-19.10b0-py36-none-any.whl": DistributionHash( - "3471ff321348d851b6f3047f4ed42c88622ac038caf7c2d160bd653334c88e88", - "4a420234749e1ea350581160ef51cd02", + "13001c5b7dbc81137164b43137320a1785e95ce84e4db849279786877ac6d7f6", + "acc537b0f3f7ebf575616490d7cc14f4", ), "black-19.10b0.tar.gz": DistributionHash( "6cada614d5d2132698c6d5fff384657273d922c4fffa6a2f0de9e03e25b8913a", "c383543109a66a5a99113e6326db5251", ), "black-21.11b0-py3-none-any.whl": DistributionHash( - "e16b6879ed61f9268994b879174fad1cb2319a651afd20f8cf036428ac65f846", - "294e105f34e2e21286a49bfcfb8fb6ae", + "38f6ad54069912caf2fa2d4f25d0c5dedef4b2338a0cb545dbe2fdf54a6a8891", + "92942a9efabf8e321a11360667ad2494", ), "black-21.11b0.tar.gz": DistributionHash( "f23c482185d842e2f19d506e55c004061167e3c677c063ecd721042c62086ada", "f01267bf2613f825dd6684629c1c829e", ), "cleo-1.0.0a5-py3-none-any.whl": DistributionHash( - "20dbd69ed5c27e2889a2d428b9b01771f6073e4a1483a731e3c14c07a666aa9f", - "eaf14b3f99b2b88c0846ecc9a5a18af4", + "d0cfea878b77be28be027033e6af419b705abe47278067a7c3a298f39cf825c5", + "19ed7de77063e8f16bc459276ccbe197", ), "cleo-1.0.0a5.tar.gz": DistributionHash( "88f0a4275a17f2ab4d013786b8b9522d4c60bd37d8fc9b3def0fb27f4ac1e694", "92e181952976e09b9d1c583da6c3e2fc", ), "clikit-0.2.4-py2.py3-none-any.whl": DistributionHash( - "60900adbac91d6d2cefc88efe2639ce3090f4520106596ac855bee3763f276c0", - "c3558fef2a1148bb1df96376def5c8fe", + "27316bf6382b04be8fb2f60c85d538fd2b2b03f0f1eba5c88f7d7eddbefc2778", + "93a51e8bf259c29692e51a7cbca6d664", ), "clikit-0.2.4.tar.gz": DistributionHash( "0fdd41e86e8b118a8b1e94ef2835925ada541d481c9b3b2fc635fa68713e6125", "f7cdbad3508038a04561f646aae68146", ), "colorama-0.3.9-py2.py3-none-any.whl": DistributionHash( - "5b632359f1ed2b7676a869812ba0edaacb99be04679b29eb56c07a5e137ab5a2", - "faef2bbd3c2ecc43e0969877d67b4c92", + "78a441d2e984c790526cdef1cfd8415a366979ef5b3186771a055b35886953bf", + "8021c861015b5f590be41190bc3f8eed", ), "colorama-0.3.9.tar.gz": DistributionHash( "4c5a15209723ce1330a5c193465fe221098f761e9640d823a2ce7c03f983137f", @@ -112,16 +112,16 @@ class DistributionHash: "eeaf257d6b2c3b01def567751b21c1e8", ), "discord.py-2.0.0-py3-none-any.whl": DistributionHash( - "054c3d8cf89a8e37a691e0268232dad23e07f4e9a06f33454c3bafeaba34a9b7", - "8ffc907807f8351401dbe4408dcaff79", + "25b9739ba456622655203a0925b354c0ba96ac6c740562e7c37791c2f6b594fb", + "65394fc868632423cedb6be7259db970", ), "discord.py-2.0.0.tar.gz": DistributionHash( "b86fa9dd562684f7a52564e6dfe0216f6c172a009c0d86b8dea8bdd6ffa6b1f4", "6c0505a6032342b29f31f9979f37d277", ), "futures-3.2.0-py2-none-any.whl": DistributionHash( - "d89e1540e8b553fbda912230db359954365a1f5d0d0fa7fab96ad3969d9d5a93", - "33e76564a87766c3e186d986ddc55bd8", + "41353b36198757a766cfc82dc9b60e88ecb28e543dd92473b2cc74fc7bf205af", + "f81c5c27f3ba2efc008cc96363a81c5e", ), "futures-3.2.0.tar.gz": DistributionHash( "baf0d469c9e541b747986b7404cd63a5496955bd0c43a3cc068c449b09b7d4a4", @@ -132,40 +132,40 @@ class DistributionHash: "b284e3118882f169aa618a856cd91c5f", ), "ipython-5.7.0-py2-none-any.whl": DistributionHash( - "3d93d3995e2e52a98dc4f44361cd5bf68dbde62925d1f820b97d8f0e1d941f73", - "cf35939995e0fd8c44fca7509308abde", + "4608e3e0500fe8142659d149891400fc0b9fa250051814b569457ae4688943dc", + "20da5e0b1f79dccb37f033a885d798d7", ), "ipython-5.7.0-py3-none-any.whl": DistributionHash( - "b94c7a3971290024ffaa916d51ee377ee85f8860a62b5f30c58f5376f0956a06", - "8805d83c415de06f5eadd55aeb2fa738", + "4292c026552a77b2edc0543941516eddd6fe1a4b681a76ac40b3f585d2fca76f", + "2844fa01618fe27ab99ad455d605b47d", ), "ipython-5.7.0.tar.gz": DistributionHash( "4e7fb265e0264498bd0d62c6261936a658bf3d38beb8a7b10cd2c6327c62ac2a", "01f2808ebe78ff2f28dc39be3aa635ca", ), "ipython-7.5.0-py3-none-any.whl": DistributionHash( - "634f505893bbbdb79d1a04d89f4633d8cfc41115337847fbf9d5a23610fc3e3d", - "99a386eca39b536033c71aacf9f98e2b", + "1b4c76bf1e8dd9067a4f5ab4695d4c5ad81c30d7d06f7592f4c069c389e37f37", + "f40ea889fb7adf989760c5e7a38bd112", ), "ipython-7.5.0.tar.gz": DistributionHash( "cd2a17ac273fea8bf8953118a2d83bad94f592f0db3e83fff9129a1842e36dbe", "0e8c1d7c14f309f6cd2dfd4e48e75cb1", ), "isort-4.3.4-py2-none-any.whl": DistributionHash( - "3bbfc8f6119a46a48064487afb0b3ca9daa4b09fbfd94336a24c7616b71db2ca", - "e84fb6f2278ee4d0bd719a4d44863d9f", + "383c39c10b5db83e8d150ac5b84d74bda96e3a1b06a30257f022dcbcd21f54b9", + "42bccda292eca3c91eadf3eb781a224f", ), "isort-4.3.4-py3-none-any.whl": DistributionHash( - "e7aa083302c758b358e10a3a1c707adcc9f8ab57795e99246ac72eeffe7f2b20", - "baa2e5dc4e89511b6bc54e969d040a08", + "5668dce9fb48544c57ed626982e190c8ea99e3a612850453e9c3b193b9fa2edc", + "6c3b582d7782633ec23917b00a97a2fe", ), "isort-4.3.4.tar.gz": DistributionHash( "234ad07e1e2780c27fa56364eefa734bee991b0d744337ef7e7ce3d5b1b59f39", "9244631852cf8bd8559f7ab78bf4ec78", ), "jupyter-1.0.0-py2.py3-none-any.whl": DistributionHash( - "83c4591b9c7392ea5f91e0d9f8e98d894f76e8e669260788f0fcb281ec0b3b1f", - "b2f5e2daab779c7bda0be38925ab1b92", + "1de1f2be45629dd6f7f9558e2385ddf6901849699ef1044c52d171a9b520a420", + "27f411f164e0878104d76d868127f76f", ), "jupyter-1.0.0.tar.gz": DistributionHash( "3ef1e86ba0556ea5922b846416a41acfd2625830d996c7d06d80c90bed1dc193", @@ -180,28 +180,28 @@ class DistributionHash: "bf351a1050242ce3af7e475a4da1a26b", ), "more_itertools-4.1.0-py2-none-any.whl": DistributionHash( - "5dd7dfd88d2fdaea446da478ffef8d7151fdf26ee92ac7ed7b14e8d71efe4b62", - "c70269eabc5fae5e0d93c2eca638720e", + "0f461c2cd4ec16611396f9ee57f40433de3d59e95475d84c0c829cde02f746cd", + "703e1e0922de1f11823da60af1488b7a", ), "more_itertools-4.1.0-py3-none-any.whl": DistributionHash( - "29b1e1661aaa56875ce090fa219fa84dfc13daecb52cd4fae321f6f57b419ec4", - "26d7c309ef806b4e563d2a7e4ceafb14", + "580b6002d1f28feb5bcb8303278d59cf17dfbd19a63a5c2375112dae72c9bf98", + "ae17a45d13e9dc319794c40fa739c38f", ), "pastel-0.1.0-py3-none-any.whl": DistributionHash( - "d88b34efa115392ee42c55d6f82cdf5e5e08221ef2e18a16ae696a80008c3499", - "632fcf45cc28aed4a4dce1324d1bd1d1", + "754d192c088e256d52a3f825c3b9e14252d5adc70f53656453f6431e50a70b99", + "cf7c53ab0a5d7e7c721425b24b486124", ), "pastel-0.1.0.tar.gz": DistributionHash( "22f14474c4120b37c54ac2173b49b0ac1de9283ca714be6eb3ea8b39296285a9", "43ea5f07660f630da18ae1827f5b4333", ), "pluggy-0.6.0-py2-none-any.whl": DistributionHash( - "9b835f86bfe5498c87ace7f4899cb1b0c40e71c9277377f6851c74a307879285", - "de6f342e8044d0071eefc3c9cda33055", + "f5f767d398f18aa177976bf9c4d0c05d96487a7d8f07062251585803aaf56246", + "095eed084713c9b2a9a01520485e20fb", ), "pluggy-0.6.0-py3-none-any.whl": DistributionHash( - "8c646771f5eab7557d1f3924077c55408e86bdfb700f7d86a6d83abeabff4c66", - "f2fc2c3179edccaa7728650178c9133c", + "d34798b80853ab688de1a3ca5b99ba4de91c459c19c76a555dc939979ae67eb0", + "2b6dc266f54023dfb26726686ee6b227", ), "pluggy-0.6.0.tar.gz": DistributionHash( "a982e208d054867661d27c6d2a86b17ba05fbb6b1bdc01f42660732dd107f865", @@ -216,24 +216,24 @@ class DistributionHash: "3f9b36a7a94cd235bfd5f05794828445", ), "py-1.5.3-py2.py3-none-any.whl": DistributionHash( - "43ee6c7f95e0ec6a906de49906b79d138d89728fff17109d49f086abc2fdd985", - "98652ecee6fc3bb5393a17828f93e1fb", + "ef4a94f47156178e42ef8f2b131db420e0f4b6aa0b3936b6dbde6ad6487476a5", + "b316b380701661cb67732ecdaef30eeb", ), "py-1.5.3.tar.gz": DistributionHash( "2df2c513c3af11de15f58189ba5539ddc4768c6f33816dc5c03950c8bd6180fa", "623e80cfc06df930414a9ce4bf0fd6c9", ), "pytest-3.5.0-py2.py3-none-any.whl": DistributionHash( - "28e4d9c2ae3196d74805c2eba24f350ae4c791a5b9b397c79b41506a48dc64ca", - "d3b1e9aea9e5b9e7a226d8b08aa43662", + "427b4582bda18e92ad1967e8b1e071e2c53e6cb7e3e5f090cb3ca443455be23f", + "4a8651dec151e76f283bf59e333286f9", ), "pytest-3.5.0.tar.gz": DistributionHash( "677b1d6decd29c041fe64276f29f79fbe66e40c59e445eb251366b4a8ab8bf68", "ccd78dac54112045f561c4df86631f19", ), "pytest-3.5.1-py2.py3-none-any.whl": DistributionHash( - "6d3e83b1c1697d220137e436980e73b3ca674f643e666d7c24b0321cb57b76a4", - "f1de372a436700e3a785e85c11d15821", + "d327df3686046c5b374a9776d9e11606f7dba6fb3db5cf5d60ebc78a31e0768e", + "1e81fba94885bef80170545d045924eb", ), "pytest-3.5.1.tar.gz": DistributionHash( "b8fe151f3e181801dd38583a1c03818fbc662a8fce96c9063a0af624613e78f8", @@ -244,8 +244,8 @@ class DistributionHash: "677602ec38bc1c7b72de6128d90d846b", ), "requests-2.18.4-py2.py3-none-any.whl": DistributionHash( - "ce91d39dc2857eeb19fc8bf765df6c14874bcdc724d3ce9c6cd89915618e7023", - "f392c0ab49bf677c6240ef2b1890b079", + "098be851f30be5bcb2c7537798d44314f576e53818ba9def25141ae4dce8b25d", + "e770e65750c42f40b97b0ed738d0f859", ), "requests-2.18.4.tar.gz": DistributionHash( "ec62f7e0e9d4814656b0172dbd592fea06127c6556ff5651eb5d2c8768671fd4", @@ -260,24 +260,24 @@ class DistributionHash: "ee2562f783544d1f95022c906dd3cf98", ), "six-1.11.0-py2.py3-none-any.whl": DistributionHash( - "112f5b46e6aa106db3e4e2494a03694c938f41c4c4535edbdfc816c2e0cb50f2", - "35b1057b388e276352d0709138b1e194", + "534e9875e44a507adec601c29b3cbd2ca6dae7df92bf3dd20c7289b2f99f7466", + "9500094701f7201ddd065c60abcefef1", ), "six-1.11.0.tar.gz": DistributionHash( "268a4ccb159c1a2d2c79336b02e75058387b0cdbb4cea2f07846a758f48a356d", "25d3568604f921dd23532b88a0ce17e7", ), "tomlkit-0.5.2-py2.py3-none-any.whl": DistributionHash( - "a50f685abd033a7b50b13330833c15699885186517b713d9f7e8280ce7976e4c", - "7bcf6cf4a6034339bb6a481f27b9ba62", + "dea8ff39e9e2170f1b2f465520482eec71e7909cfff53dcb076b585d50f8ccc8", + "4045c5f6848fbc93c38df2296a441f07", ), "tomlkit-0.5.2.tar.gz": DistributionHash( "4a226ccf11ee5a2e76bfc185747b54ee7718706aeb3aabb981327249dbe2b1d4", "7c31987ef6fba2cd64715cae27fade64", ), "tomlkit-0.5.3-py2.py3-none-any.whl": DistributionHash( - "d4fe74be9b732d76886da6da2e96f76ae42551e53afce1ea29bc703629b70497", - "b868779f054c64bc6c2ae4ad2cdbf6b3", + "35f06da5835e85f149a4701d43e730adcc09f1b362e5fc2300d77bdd26280908", + "3a90c70a5067d5727110838094ab8674", ), "tomlkit-0.5.3.tar.gz": DistributionHash( "e2f785651609492c771d9887ccb2369d891d16595d2d97972e2cbe5e8fb3439f", @@ -292,8 +292,8 @@ class DistributionHash: "5f175a8d693f74878964d4fd29729ab7", ), "zipp-3.5.0-py3-none-any.whl": DistributionHash( - "82da6dcae3676123d6f493a876259614e7e6e970b14c59b1830a2c901ed91306", - "52aecc0484efd07d62575d152f6a98f6", + "ec508cd5a3ed3d126293cafb34611469f2aef7342f575c3b6e072b995dc9da1f", + "da62cbd850ba32ba93817aab0f03a855", ), "zipp-3.5.0.tar.gz": DistributionHash( "239d50954a15aa4b283023f18dc451ba811fb4d263f4dd6855642e4d1c80cc9f", diff --git a/tests/repositories/fixtures/legacy/black.html b/tests/repositories/fixtures/legacy/black.html index c8f1928bd33..092dea09c36 100644 --- a/tests/repositories/fixtures/legacy/black.html +++ b/tests/repositories/fixtures/legacy/black.html @@ -4,8 +4,8 @@ Links for black

Links for black

- black-19.10b0-py36-none-any.whl - black-21.11b0-py3-none-any.whl + black-19.10b0-py36-none-any.whl + black-21.11b0-py3-none-any.whl diff --git a/tests/repositories/fixtures/legacy/clikit.html b/tests/repositories/fixtures/legacy/clikit.html index 2abd1054795..b15ca2a6fc8 100644 --- a/tests/repositories/fixtures/legacy/clikit.html +++ b/tests/repositories/fixtures/legacy/clikit.html @@ -7,7 +7,7 @@

Links for clikit

clikit-0.2.3-py2.py3-none-any.whl
clikit-0.2.3.tar.gz
- clikit-0.2.4-py2.py3-none-any.whl
+ clikit-0.2.4-py2.py3-none-any.whl
clikit-0.2.4.tar.gz
diff --git a/tests/repositories/fixtures/legacy/discord-py.html b/tests/repositories/fixtures/legacy/discord-py.html index e1e76eebf6e..4b71dd8fac4 100644 --- a/tests/repositories/fixtures/legacy/discord-py.html +++ b/tests/repositories/fixtures/legacy/discord-py.html @@ -4,7 +4,7 @@ Links for discord-py

Links for discord-py

- discord.py-2.0.0-py3-none-any.whl
+ discord.py-2.0.0-py3-none-any.whl
discord.py-2.0.0.tar.gz
diff --git a/tests/repositories/fixtures/legacy/futures-partial-yank.html b/tests/repositories/fixtures/legacy/futures-partial-yank.html index b9d344509cb..792b673512b 100644 --- a/tests/repositories/fixtures/legacy/futures-partial-yank.html +++ b/tests/repositories/fixtures/legacy/futures-partial-yank.html @@ -5,7 +5,7 @@

Links for futures

- futures-3.2.0-py2-none-any.whl
+ futures-3.2.0-py2-none-any.whl
futures-3.2.0.tar.gz
diff --git a/tests/repositories/fixtures/legacy/futures.html b/tests/repositories/fixtures/legacy/futures.html index 31cd8e6332c..5a77c3bdc61 100644 --- a/tests/repositories/fixtures/legacy/futures.html +++ b/tests/repositories/fixtures/legacy/futures.html @@ -5,7 +5,7 @@

Links for futures

- futures-3.2.0-py2-none-any.whl
+ futures-3.2.0-py2-none-any.whl
futures-3.2.0.tar.gz
diff --git a/tests/repositories/fixtures/legacy/ipython.html b/tests/repositories/fixtures/legacy/ipython.html index accaff48a76..555711f6ebb 100644 --- a/tests/repositories/fixtures/legacy/ipython.html +++ b/tests/repositories/fixtures/legacy/ipython.html @@ -5,10 +5,10 @@

Links for ipython

- ipython-5.7.0-py2-none-any.whl
- ipython-5.7.0-py3-none-any.whl
+ ipython-5.7.0-py2-none-any.whl
+ ipython-5.7.0-py3-none-any.whl
ipython-5.7.0.tar.gz
- ipython-7.5.0-py3-none-any.whl
+ ipython-7.5.0-py3-none-any.whl
ipython-7.5.0.tar.gz
diff --git a/tests/repositories/fixtures/legacy/isort.html b/tests/repositories/fixtures/legacy/isort.html index ce51ea452fb..3e709c28e5f 100644 --- a/tests/repositories/fixtures/legacy/isort.html +++ b/tests/repositories/fixtures/legacy/isort.html @@ -5,8 +5,8 @@

Links for isort

- isort-4.3.4-py2-none-any.whl
- isort-4.3.4-py3-none-any.whl
+ isort-4.3.4-py2-none-any.whl
+ isort-4.3.4-py3-none-any.whl
isort-4.3.4.tar.gz
diff --git a/tests/repositories/fixtures/legacy/pytest-with-extra-packages.html b/tests/repositories/fixtures/legacy/pytest-with-extra-packages.html index b2fde9ace28..90ce16a65c2 100644 --- a/tests/repositories/fixtures/legacy/pytest-with-extra-packages.html +++ b/tests/repositories/fixtures/legacy/pytest-with-extra-packages.html @@ -7,15 +7,15 @@

Links for pytest

- pytest-3.5.0-py2.py3-none-any.whl
pytest-3.5.0.tar.gz
- futures-3.2.0-py2-none-any.whl
- pytest-3.10.0-py2.py3-none-any.whl
- pytest-3.5.0-py2.py3-none-any.whl
diff --git a/tests/repositories/fixtures/legacy/pytest.html b/tests/repositories/fixtures/legacy/pytest.html index e891c1d31f0..2e2b21db462 100644 --- a/tests/repositories/fixtures/legacy/pytest.html +++ b/tests/repositories/fixtures/legacy/pytest.html @@ -4,7 +4,7 @@ Links for pytest -

Links for pytest

pytest-3.5.0-py2.py3-none-any.whl
+

Links for pytest

pytest-3.5.0-py2.py3-none-any.whl
pytest-3.5.0.tar.gz
diff --git a/tests/repositories/fixtures/pypi.org/generate.py b/tests/repositories/fixtures/pypi.org/generate.py index d247eb18233..6a8967cbbd0 100644 --- a/tests/repositories/fixtures/pypi.org/generate.py +++ b/tests/repositories/fixtures/pypi.org/generate.py @@ -196,38 +196,33 @@ def get_hash(name: str) -> DistributionHash: def cleanup_legacy_html_hashes(metadata: ReleaseFileMetadata) -> None: - path = FIXTURE_PATH_REPOSITORIES_LEGACY / f"{metadata.path.name}.html" - - for filepath in [path, *list(path.parent.glob(f"{path.stem}-*.html"))]: - if not filepath.exists(): - return None - - existing_content = filepath.read_text(encoding="utf-8") + for index in FIXTURE_PATH_REPOSITORIES_LEGACY.glob("*.html"): + existing_content = index.read_text(encoding="utf-8") content = re.sub( - f"{filepath.name}#sha256=[A-Fa-f0-9]{{64}}", - f"{filepath.name}#sha256={metadata.sha256}", + f"{metadata.path.name}#sha256=[A-Fa-f0-9]{{64}}", + f"{metadata.path.name}#sha256={metadata.sha256}", existing_content, ) content = re.sub( - f'data-dist-info-metadata="sha256=[A-Fa-f0-9]{{64}}">{filepath.name}<', - f'data-dist-info-metadata="sha256={metadata.sha256}">{filepath.name}<', + f'data-dist-info-metadata="sha256=[A-Fa-f0-9]{{64}}">{metadata.path.name}<', + f'data-dist-info-metadata="sha256={metadata.sha256}">{metadata.path.name}<', content, ) content = re.sub( - f"{filepath.name}#md5=[A-Fa-f0-9]{{32}}", - f"{filepath.name}#md5={metadata.md5}", + f"{metadata.path.name}#md5=[A-Fa-f0-9]{{32}}", + f"{metadata.path.name}#md5={metadata.md5}", content, ) content = re.sub( - f'data-dist-info-metadata="md5=[A-Fa-f0-9]{{32}}">{filepath.name}<', - f'data-dist-info-metadata="md5={metadata.md5}">{filepath.name}<', + f'data-dist-info-metadata="md5=[A-Fa-f0-9]{{32}}">{metadata.path.name}<', + f'data-dist-info-metadata="md5={metadata.md5}">{metadata.path.name}<', content, ) if existing_content != content: - logger.info("Rewriting hashes in %s", filepath) - filepath.write_text(content, encoding="utf-8") + logger.info("Rewriting hashes in %s", index) + index.write_text(content, encoding="utf-8") def cleanup_installation_fixtures(metadata: ReleaseFileMetadata) -> None: @@ -337,6 +332,26 @@ def process_zipfile(self, link: Link) -> ReleaseFileMetadata: if not is_protected(member.filename): logger.debug("Stubbing file %s(%s)", link.filename, member.filename) stubbed_sdist.writestr(member, io.BytesIO().getvalue()) + + elif Path(member.filename).name == "RECORD": + # Since unprotected files are stubbed to be zero size, the RECORD file must + # be updated to match. + stubbed_content = io.StringIO() + for line in zf.read(member.filename).decode("utf-8").splitlines(): + filename = line.split(",")[0] + if is_protected(filename): + stubbed_content.write(f"{line}\n") + continue + + stubbed_line = re.sub( + ",sha256=.*", + ",sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0", + line, + ) + stubbed_content.write(f"{stubbed_line}\n") + + stubbed_sdist.writestr(member, stubbed_content.getvalue()) + else: logger.debug( "Preserving file %s(%s)", link.filename, member.filename @@ -461,7 +476,7 @@ def _finalise(self, data: dict[str, Any]) -> None: for file in files: cleanup_installation_fixtures(file) - cleanup_installation_fixtures(file) + cleanup_legacy_html_hashes(file) def populate(self, pypi: PyPiRepository) -> None: logger.info("Fetching remote json via https://pypi.org/simple/%s", self.name) diff --git a/tests/repositories/fixtures/pypi.org/json/attrs.json b/tests/repositories/fixtures/pypi.org/json/attrs.json index 3f20eb093fe..9558c2e9c2b 100644 --- a/tests/repositories/fixtures/pypi.org/json/attrs.json +++ b/tests/repositories/fixtures/pypi.org/json/attrs.json @@ -10,8 +10,8 @@ }, "filename": "attrs-17.4.0-py2.py3-none-any.whl", "hashes": { - "md5": "9d32f2b5a93343e01f54d87740f2da60", - "sha256": "d38e57f381e891928357c68e300d28d3d4dcddc50486d5f8dfaf743d40477619" + "md5": "7fe37931797b16c7fa158017457a9ea9", + "sha256": "1fbfc10ebc8c876dcbab17f016b80ae1a4f0c1413461a695871427960795beb4" }, "provenance": null, "requires-python": null, diff --git a/tests/repositories/fixtures/pypi.org/json/attrs/17.4.0.json b/tests/repositories/fixtures/pypi.org/json/attrs/17.4.0.json index 2c14a6199a1..87021c5c1b4 100644 --- a/tests/repositories/fixtures/pypi.org/json/attrs/17.4.0.json +++ b/tests/repositories/fixtures/pypi.org/json/attrs/17.4.0.json @@ -73,13 +73,13 @@ { "comment_text": "", "digests": { - "md5": "9d32f2b5a93343e01f54d87740f2da60", - "sha256": "d38e57f381e891928357c68e300d28d3d4dcddc50486d5f8dfaf743d40477619" + "md5": "7fe37931797b16c7fa158017457a9ea9", + "sha256": "1fbfc10ebc8c876dcbab17f016b80ae1a4f0c1413461a695871427960795beb4" }, "downloads": -1, "filename": "attrs-17.4.0-py2.py3-none-any.whl", "has_sig": false, - "md5_digest": "9d32f2b5a93343e01f54d87740f2da60", + "md5_digest": "7fe37931797b16c7fa158017457a9ea9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, diff --git a/tests/repositories/fixtures/pypi.org/json/black.json b/tests/repositories/fixtures/pypi.org/json/black.json index 7abf83d450c..3b537aa62ee 100644 --- a/tests/repositories/fixtures/pypi.org/json/black.json +++ b/tests/repositories/fixtures/pypi.org/json/black.json @@ -10,8 +10,8 @@ }, "filename": "black-19.10b0-py36-none-any.whl", "hashes": { - "md5": "4a420234749e1ea350581160ef51cd02", - "sha256": "3471ff321348d851b6f3047f4ed42c88622ac038caf7c2d160bd653334c88e88" + "md5": "acc537b0f3f7ebf575616490d7cc14f4", + "sha256": "13001c5b7dbc81137164b43137320a1785e95ce84e4db849279786877ac6d7f6" }, "provenance": null, "requires-python": ">=3.6", @@ -44,8 +44,8 @@ }, "filename": "black-21.11b0-py3-none-any.whl", "hashes": { - "md5": "294e105f34e2e21286a49bfcfb8fb6ae", - "sha256": "e16b6879ed61f9268994b879174fad1cb2319a651afd20f8cf036428ac65f846" + "md5": "92942a9efabf8e321a11360667ad2494", + "sha256": "38f6ad54069912caf2fa2d4f25d0c5dedef4b2338a0cb545dbe2fdf54a6a8891" }, "provenance": null, "requires-python": ">=3.6.2", diff --git a/tests/repositories/fixtures/pypi.org/json/black/19.10b0.json b/tests/repositories/fixtures/pypi.org/json/black/19.10b0.json index 8e541951614..45e56b06834 100644 --- a/tests/repositories/fixtures/pypi.org/json/black/19.10b0.json +++ b/tests/repositories/fixtures/pypi.org/json/black/19.10b0.json @@ -63,13 +63,13 @@ { "comment_text": "", "digests": { - "md5": "4a420234749e1ea350581160ef51cd02", - "sha256": "3471ff321348d851b6f3047f4ed42c88622ac038caf7c2d160bd653334c88e88" + "md5": "acc537b0f3f7ebf575616490d7cc14f4", + "sha256": "13001c5b7dbc81137164b43137320a1785e95ce84e4db849279786877ac6d7f6" }, "downloads": -1, "filename": "black-19.10b0-py36-none-any.whl", "has_sig": false, - "md5_digest": "4a420234749e1ea350581160ef51cd02", + "md5_digest": "acc537b0f3f7ebf575616490d7cc14f4", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": ">=3.6", diff --git a/tests/repositories/fixtures/pypi.org/json/black/21.11b0.json b/tests/repositories/fixtures/pypi.org/json/black/21.11b0.json index d840c510821..48dc2502abe 100644 --- a/tests/repositories/fixtures/pypi.org/json/black/21.11b0.json +++ b/tests/repositories/fixtures/pypi.org/json/black/21.11b0.json @@ -73,13 +73,13 @@ { "comment_text": "", "digests": { - "md5": "294e105f34e2e21286a49bfcfb8fb6ae", - "sha256": "e16b6879ed61f9268994b879174fad1cb2319a651afd20f8cf036428ac65f846" + "md5": "92942a9efabf8e321a11360667ad2494", + "sha256": "38f6ad54069912caf2fa2d4f25d0c5dedef4b2338a0cb545dbe2fdf54a6a8891" }, "downloads": -1, "filename": "black-21.11b0-py3-none-any.whl", "has_sig": false, - "md5_digest": "294e105f34e2e21286a49bfcfb8fb6ae", + "md5_digest": "92942a9efabf8e321a11360667ad2494", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.2", diff --git a/tests/repositories/fixtures/pypi.org/json/cleo.json b/tests/repositories/fixtures/pypi.org/json/cleo.json index c9fbae16f55..bcb32189c49 100644 --- a/tests/repositories/fixtures/pypi.org/json/cleo.json +++ b/tests/repositories/fixtures/pypi.org/json/cleo.json @@ -10,8 +10,8 @@ }, "filename": "cleo-1.0.0a5-py3-none-any.whl", "hashes": { - "md5": "eaf14b3f99b2b88c0846ecc9a5a18af4", - "sha256": "20dbd69ed5c27e2889a2d428b9b01771f6073e4a1483a731e3c14c07a666aa9f" + "md5": "19ed7de77063e8f16bc459276ccbe197", + "sha256": "d0cfea878b77be28be027033e6af419b705abe47278067a7c3a298f39cf825c5" }, "provenance": null, "requires-python": ">=3.7,<4.0", diff --git a/tests/repositories/fixtures/pypi.org/json/cleo/1.0.0a5.json b/tests/repositories/fixtures/pypi.org/json/cleo/1.0.0a5.json index 77f8f32e7e4..4cdc07a3145 100644 --- a/tests/repositories/fixtures/pypi.org/json/cleo/1.0.0a5.json +++ b/tests/repositories/fixtures/pypi.org/json/cleo/1.0.0a5.json @@ -50,13 +50,13 @@ { "comment_text": "", "digests": { - "md5": "eaf14b3f99b2b88c0846ecc9a5a18af4", - "sha256": "20dbd69ed5c27e2889a2d428b9b01771f6073e4a1483a731e3c14c07a666aa9f" + "md5": "19ed7de77063e8f16bc459276ccbe197", + "sha256": "d0cfea878b77be28be027033e6af419b705abe47278067a7c3a298f39cf825c5" }, "downloads": -1, "filename": "cleo-1.0.0a5-py3-none-any.whl", "has_sig": false, - "md5_digest": "eaf14b3f99b2b88c0846ecc9a5a18af4", + "md5_digest": "19ed7de77063e8f16bc459276ccbe197", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", diff --git a/tests/repositories/fixtures/pypi.org/json/clikit.json b/tests/repositories/fixtures/pypi.org/json/clikit.json index 924e5cc67eb..fcd8be01fb4 100644 --- a/tests/repositories/fixtures/pypi.org/json/clikit.json +++ b/tests/repositories/fixtures/pypi.org/json/clikit.json @@ -10,8 +10,8 @@ }, "filename": "clikit-0.2.4-py2.py3-none-any.whl", "hashes": { - "md5": "c3558fef2a1148bb1df96376def5c8fe", - "sha256": "60900adbac91d6d2cefc88efe2639ce3090f4520106596ac855bee3763f276c0" + "md5": "93a51e8bf259c29692e51a7cbca6d664", + "sha256": "27316bf6382b04be8fb2f60c85d538fd2b2b03f0f1eba5c88f7d7eddbefc2778" }, "provenance": null, "requires-python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", diff --git a/tests/repositories/fixtures/pypi.org/json/clikit/0.2.4.json b/tests/repositories/fixtures/pypi.org/json/clikit/0.2.4.json index 5f93b13a530..8ad86e32200 100644 --- a/tests/repositories/fixtures/pypi.org/json/clikit/0.2.4.json +++ b/tests/repositories/fixtures/pypi.org/json/clikit/0.2.4.json @@ -55,13 +55,13 @@ { "comment_text": "", "digests": { - "md5": "c3558fef2a1148bb1df96376def5c8fe", - "sha256": "60900adbac91d6d2cefc88efe2639ce3090f4520106596ac855bee3763f276c0" + "md5": "93a51e8bf259c29692e51a7cbca6d664", + "sha256": "27316bf6382b04be8fb2f60c85d538fd2b2b03f0f1eba5c88f7d7eddbefc2778" }, "downloads": -1, "filename": "clikit-0.2.4-py2.py3-none-any.whl", "has_sig": false, - "md5_digest": "c3558fef2a1148bb1df96376def5c8fe", + "md5_digest": "93a51e8bf259c29692e51a7cbca6d664", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", diff --git a/tests/repositories/fixtures/pypi.org/json/colorama.json b/tests/repositories/fixtures/pypi.org/json/colorama.json index 8898e75c560..33bf795726d 100644 --- a/tests/repositories/fixtures/pypi.org/json/colorama.json +++ b/tests/repositories/fixtures/pypi.org/json/colorama.json @@ -10,8 +10,8 @@ }, "filename": "colorama-0.3.9-py2.py3-none-any.whl", "hashes": { - "md5": "faef2bbd3c2ecc43e0969877d67b4c92", - "sha256": "5b632359f1ed2b7676a869812ba0edaacb99be04679b29eb56c07a5e137ab5a2" + "md5": "8021c861015b5f590be41190bc3f8eed", + "sha256": "78a441d2e984c790526cdef1cfd8415a366979ef5b3186771a055b35886953bf" }, "provenance": null, "requires-python": null, diff --git a/tests/repositories/fixtures/pypi.org/json/colorama/0.3.9.json b/tests/repositories/fixtures/pypi.org/json/colorama/0.3.9.json index 3f383c67c5a..4d2f4be4aff 100644 --- a/tests/repositories/fixtures/pypi.org/json/colorama/0.3.9.json +++ b/tests/repositories/fixtures/pypi.org/json/colorama/0.3.9.json @@ -58,13 +58,13 @@ { "comment_text": "", "digests": { - "md5": "faef2bbd3c2ecc43e0969877d67b4c92", - "sha256": "5b632359f1ed2b7676a869812ba0edaacb99be04679b29eb56c07a5e137ab5a2" + "md5": "8021c861015b5f590be41190bc3f8eed", + "sha256": "78a441d2e984c790526cdef1cfd8415a366979ef5b3186771a055b35886953bf" }, "downloads": -1, "filename": "colorama-0.3.9-py2.py3-none-any.whl", "has_sig": false, - "md5_digest": "faef2bbd3c2ecc43e0969877d67b4c92", + "md5_digest": "8021c861015b5f590be41190bc3f8eed", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, diff --git a/tests/repositories/fixtures/pypi.org/json/discord-py.json b/tests/repositories/fixtures/pypi.org/json/discord-py.json index ee6ec8c17e1..3a5ade40585 100644 --- a/tests/repositories/fixtures/pypi.org/json/discord-py.json +++ b/tests/repositories/fixtures/pypi.org/json/discord-py.json @@ -10,8 +10,8 @@ }, "filename": "discord.py-2.0.0-py3-none-any.whl", "hashes": { - "md5": "8ffc907807f8351401dbe4408dcaff79", - "sha256": "054c3d8cf89a8e37a691e0268232dad23e07f4e9a06f33454c3bafeaba34a9b7" + "md5": "65394fc868632423cedb6be7259db970", + "sha256": "25b9739ba456622655203a0925b354c0ba96ac6c740562e7c37791c2f6b594fb" }, "provenance": null, "requires-python": ">=3.8.0", diff --git a/tests/repositories/fixtures/pypi.org/json/discord-py/2.0.0.json b/tests/repositories/fixtures/pypi.org/json/discord-py/2.0.0.json index 47a453f7fbc..76b0755963f 100644 --- a/tests/repositories/fixtures/pypi.org/json/discord-py/2.0.0.json +++ b/tests/repositories/fixtures/pypi.org/json/discord-py/2.0.0.json @@ -73,13 +73,13 @@ { "comment_text": "", "digests": { - "md5": "8ffc907807f8351401dbe4408dcaff79", - "sha256": "054c3d8cf89a8e37a691e0268232dad23e07f4e9a06f33454c3bafeaba34a9b7" + "md5": "65394fc868632423cedb6be7259db970", + "sha256": "25b9739ba456622655203a0925b354c0ba96ac6c740562e7c37791c2f6b594fb" }, "downloads": -1, "filename": "discord.py-2.0.0-py3-none-any.whl", "has_sig": false, - "md5_digest": "8ffc907807f8351401dbe4408dcaff79", + "md5_digest": "65394fc868632423cedb6be7259db970", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.8.0", diff --git a/tests/repositories/fixtures/pypi.org/json/futures.json b/tests/repositories/fixtures/pypi.org/json/futures.json index ef293bcd96e..adf4ecf4399 100644 --- a/tests/repositories/fixtures/pypi.org/json/futures.json +++ b/tests/repositories/fixtures/pypi.org/json/futures.json @@ -10,8 +10,8 @@ }, "filename": "futures-3.2.0-py2-none-any.whl", "hashes": { - "md5": "33e76564a87766c3e186d986ddc55bd8", - "sha256": "d89e1540e8b553fbda912230db359954365a1f5d0d0fa7fab96ad3969d9d5a93" + "md5": "f81c5c27f3ba2efc008cc96363a81c5e", + "sha256": "41353b36198757a766cfc82dc9b60e88ecb28e543dd92473b2cc74fc7bf205af" }, "provenance": null, "requires-python": ">=2.6, <3", diff --git a/tests/repositories/fixtures/pypi.org/json/futures/3.2.0.json b/tests/repositories/fixtures/pypi.org/json/futures/3.2.0.json index 804b3e8cafb..e6b0f0b7d1d 100644 --- a/tests/repositories/fixtures/pypi.org/json/futures/3.2.0.json +++ b/tests/repositories/fixtures/pypi.org/json/futures/3.2.0.json @@ -47,13 +47,13 @@ { "comment_text": "", "digests": { - "md5": "33e76564a87766c3e186d986ddc55bd8", - "sha256": "d89e1540e8b553fbda912230db359954365a1f5d0d0fa7fab96ad3969d9d5a93" + "md5": "f81c5c27f3ba2efc008cc96363a81c5e", + "sha256": "41353b36198757a766cfc82dc9b60e88ecb28e543dd92473b2cc74fc7bf205af" }, "downloads": -1, "filename": "futures-3.2.0-py2-none-any.whl", "has_sig": false, - "md5_digest": "33e76564a87766c3e186d986ddc55bd8", + "md5_digest": "f81c5c27f3ba2efc008cc96363a81c5e", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.6, <3", diff --git a/tests/repositories/fixtures/pypi.org/json/ipython.json b/tests/repositories/fixtures/pypi.org/json/ipython.json index 3c5c2058f76..65c8382cf32 100644 --- a/tests/repositories/fixtures/pypi.org/json/ipython.json +++ b/tests/repositories/fixtures/pypi.org/json/ipython.json @@ -56,8 +56,8 @@ }, "filename": "ipython-5.7.0-py2-none-any.whl", "hashes": { - "md5": "cf35939995e0fd8c44fca7509308abde", - "sha256": "3d93d3995e2e52a98dc4f44361cd5bf68dbde62925d1f820b97d8f0e1d941f73" + "md5": "20da5e0b1f79dccb37f033a885d798d7", + "sha256": "4608e3e0500fe8142659d149891400fc0b9fa250051814b569457ae4688943dc" }, "provenance": null, "requires-python": null, @@ -75,8 +75,8 @@ }, "filename": "ipython-5.7.0-py3-none-any.whl", "hashes": { - "md5": "8805d83c415de06f5eadd55aeb2fa738", - "sha256": "b94c7a3971290024ffaa916d51ee377ee85f8860a62b5f30c58f5376f0956a06" + "md5": "2844fa01618fe27ab99ad455d605b47d", + "sha256": "4292c026552a77b2edc0543941516eddd6fe1a4b681a76ac40b3f585d2fca76f" }, "provenance": null, "requires-python": null, @@ -109,8 +109,8 @@ }, "filename": "ipython-7.5.0-py3-none-any.whl", "hashes": { - "md5": "99a386eca39b536033c71aacf9f98e2b", - "sha256": "634f505893bbbdb79d1a04d89f4633d8cfc41115337847fbf9d5a23610fc3e3d" + "md5": "f40ea889fb7adf989760c5e7a38bd112", + "sha256": "1b4c76bf1e8dd9067a4f5ab4695d4c5ad81c30d7d06f7592f4c069c389e37f37" }, "provenance": null, "requires-python": ">=3.5", diff --git a/tests/repositories/fixtures/pypi.org/json/ipython/5.7.0.json b/tests/repositories/fixtures/pypi.org/json/ipython/5.7.0.json index 71c5a405aa3..a6b548482c3 100644 --- a/tests/repositories/fixtures/pypi.org/json/ipython/5.7.0.json +++ b/tests/repositories/fixtures/pypi.org/json/ipython/5.7.0.json @@ -92,13 +92,13 @@ { "comment_text": "", "digests": { - "md5": "cf35939995e0fd8c44fca7509308abde", - "sha256": "3d93d3995e2e52a98dc4f44361cd5bf68dbde62925d1f820b97d8f0e1d941f73" + "md5": "20da5e0b1f79dccb37f033a885d798d7", + "sha256": "4608e3e0500fe8142659d149891400fc0b9fa250051814b569457ae4688943dc" }, "downloads": -1, "filename": "ipython-5.7.0-py2-none-any.whl", "has_sig": false, - "md5_digest": "cf35939995e0fd8c44fca7509308abde", + "md5_digest": "20da5e0b1f79dccb37f033a885d798d7", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, @@ -112,13 +112,13 @@ { "comment_text": "", "digests": { - "md5": "8805d83c415de06f5eadd55aeb2fa738", - "sha256": "b94c7a3971290024ffaa916d51ee377ee85f8860a62b5f30c58f5376f0956a06" + "md5": "2844fa01618fe27ab99ad455d605b47d", + "sha256": "4292c026552a77b2edc0543941516eddd6fe1a4b681a76ac40b3f585d2fca76f" }, "downloads": -1, "filename": "ipython-5.7.0-py3-none-any.whl", "has_sig": false, - "md5_digest": "8805d83c415de06f5eadd55aeb2fa738", + "md5_digest": "2844fa01618fe27ab99ad455d605b47d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, diff --git a/tests/repositories/fixtures/pypi.org/json/ipython/7.5.0.json b/tests/repositories/fixtures/pypi.org/json/ipython/7.5.0.json index c4b455cb1ba..f81f834527a 100644 --- a/tests/repositories/fixtures/pypi.org/json/ipython/7.5.0.json +++ b/tests/repositories/fixtures/pypi.org/json/ipython/7.5.0.json @@ -95,13 +95,13 @@ { "comment_text": "", "digests": { - "md5": "99a386eca39b536033c71aacf9f98e2b", - "sha256": "634f505893bbbdb79d1a04d89f4633d8cfc41115337847fbf9d5a23610fc3e3d" + "md5": "f40ea889fb7adf989760c5e7a38bd112", + "sha256": "1b4c76bf1e8dd9067a4f5ab4695d4c5ad81c30d7d06f7592f4c069c389e37f37" }, "downloads": -1, "filename": "ipython-7.5.0-py3-none-any.whl", "has_sig": false, - "md5_digest": "99a386eca39b536033c71aacf9f98e2b", + "md5_digest": "f40ea889fb7adf989760c5e7a38bd112", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", diff --git a/tests/repositories/fixtures/pypi.org/json/isort.json b/tests/repositories/fixtures/pypi.org/json/isort.json index 0a7d238a1df..f41a6582a28 100644 --- a/tests/repositories/fixtures/pypi.org/json/isort.json +++ b/tests/repositories/fixtures/pypi.org/json/isort.json @@ -10,8 +10,8 @@ }, "filename": "isort-4.3.4-py2-none-any.whl", "hashes": { - "md5": "e84fb6f2278ee4d0bd719a4d44863d9f", - "sha256": "3bbfc8f6119a46a48064487afb0b3ca9daa4b09fbfd94336a24c7616b71db2ca" + "md5": "42bccda292eca3c91eadf3eb781a224f", + "sha256": "383c39c10b5db83e8d150ac5b84d74bda96e3a1b06a30257f022dcbcd21f54b9" }, "provenance": null, "requires-python": null, @@ -29,8 +29,8 @@ }, "filename": "isort-4.3.4-py3-none-any.whl", "hashes": { - "md5": "baa2e5dc4e89511b6bc54e969d040a08", - "sha256": "e7aa083302c758b358e10a3a1c707adcc9f8ab57795e99246ac72eeffe7f2b20" + "md5": "6c3b582d7782633ec23917b00a97a2fe", + "sha256": "5668dce9fb48544c57ed626982e190c8ea99e3a612850453e9c3b193b9fa2edc" }, "provenance": null, "requires-python": null, diff --git a/tests/repositories/fixtures/pypi.org/json/isort/4.3.4.json b/tests/repositories/fixtures/pypi.org/json/isort/4.3.4.json index 44ec4ecf9fb..79b31d5e79b 100644 --- a/tests/repositories/fixtures/pypi.org/json/isort/4.3.4.json +++ b/tests/repositories/fixtures/pypi.org/json/isort/4.3.4.json @@ -57,13 +57,13 @@ { "comment_text": "", "digests": { - "md5": "e84fb6f2278ee4d0bd719a4d44863d9f", - "sha256": "3bbfc8f6119a46a48064487afb0b3ca9daa4b09fbfd94336a24c7616b71db2ca" + "md5": "42bccda292eca3c91eadf3eb781a224f", + "sha256": "383c39c10b5db83e8d150ac5b84d74bda96e3a1b06a30257f022dcbcd21f54b9" }, "downloads": -1, "filename": "isort-4.3.4-py2-none-any.whl", "has_sig": false, - "md5_digest": "e84fb6f2278ee4d0bd719a4d44863d9f", + "md5_digest": "42bccda292eca3c91eadf3eb781a224f", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, @@ -77,13 +77,13 @@ { "comment_text": "", "digests": { - "md5": "baa2e5dc4e89511b6bc54e969d040a08", - "sha256": "e7aa083302c758b358e10a3a1c707adcc9f8ab57795e99246ac72eeffe7f2b20" + "md5": "6c3b582d7782633ec23917b00a97a2fe", + "sha256": "5668dce9fb48544c57ed626982e190c8ea99e3a612850453e9c3b193b9fa2edc" }, "downloads": -1, "filename": "isort-4.3.4-py3-none-any.whl", "has_sig": false, - "md5_digest": "baa2e5dc4e89511b6bc54e969d040a08", + "md5_digest": "6c3b582d7782633ec23917b00a97a2fe", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, diff --git a/tests/repositories/fixtures/pypi.org/json/jupyter.json b/tests/repositories/fixtures/pypi.org/json/jupyter.json index 7f970556596..529a60a30f6 100644 --- a/tests/repositories/fixtures/pypi.org/json/jupyter.json +++ b/tests/repositories/fixtures/pypi.org/json/jupyter.json @@ -10,8 +10,8 @@ }, "filename": "jupyter-1.0.0-py2.py3-none-any.whl", "hashes": { - "md5": "b2f5e2daab779c7bda0be38925ab1b92", - "sha256": "83c4591b9c7392ea5f91e0d9f8e98d894f76e8e669260788f0fcb281ec0b3b1f" + "md5": "27f411f164e0878104d76d868127f76f", + "sha256": "1de1f2be45629dd6f7f9558e2385ddf6901849699ef1044c52d171a9b520a420" }, "provenance": null, "requires-python": null, diff --git a/tests/repositories/fixtures/pypi.org/json/jupyter/1.0.0.json b/tests/repositories/fixtures/pypi.org/json/jupyter/1.0.0.json index bc047c3eee7..f2cffb81efb 100644 --- a/tests/repositories/fixtures/pypi.org/json/jupyter/1.0.0.json +++ b/tests/repositories/fixtures/pypi.org/json/jupyter/1.0.0.json @@ -52,13 +52,13 @@ { "comment_text": "", "digests": { - "md5": "b2f5e2daab779c7bda0be38925ab1b92", - "sha256": "83c4591b9c7392ea5f91e0d9f8e98d894f76e8e669260788f0fcb281ec0b3b1f" + "md5": "27f411f164e0878104d76d868127f76f", + "sha256": "1de1f2be45629dd6f7f9558e2385ddf6901849699ef1044c52d171a9b520a420" }, "downloads": -1, "filename": "jupyter-1.0.0-py2.py3-none-any.whl", "has_sig": false, - "md5_digest": "b2f5e2daab779c7bda0be38925ab1b92", + "md5_digest": "27f411f164e0878104d76d868127f76f", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, diff --git a/tests/repositories/fixtures/pypi.org/json/more-itertools.json b/tests/repositories/fixtures/pypi.org/json/more-itertools.json index cd74c832739..4120707e812 100644 --- a/tests/repositories/fixtures/pypi.org/json/more-itertools.json +++ b/tests/repositories/fixtures/pypi.org/json/more-itertools.json @@ -25,8 +25,8 @@ }, "filename": "more_itertools-4.1.0-py2-none-any.whl", "hashes": { - "md5": "c70269eabc5fae5e0d93c2eca638720e", - "sha256": "5dd7dfd88d2fdaea446da478ffef8d7151fdf26ee92ac7ed7b14e8d71efe4b62" + "md5": "703e1e0922de1f11823da60af1488b7a", + "sha256": "0f461c2cd4ec16611396f9ee57f40433de3d59e95475d84c0c829cde02f746cd" }, "provenance": null, "requires-python": null, @@ -44,8 +44,8 @@ }, "filename": "more_itertools-4.1.0-py3-none-any.whl", "hashes": { - "md5": "26d7c309ef806b4e563d2a7e4ceafb14", - "sha256": "29b1e1661aaa56875ce090fa219fa84dfc13daecb52cd4fae321f6f57b419ec4" + "md5": "ae17a45d13e9dc319794c40fa739c38f", + "sha256": "580b6002d1f28feb5bcb8303278d59cf17dfbd19a63a5c2375112dae72c9bf98" }, "provenance": null, "requires-python": null, diff --git a/tests/repositories/fixtures/pypi.org/json/more-itertools/4.1.0.json b/tests/repositories/fixtures/pypi.org/json/more-itertools/4.1.0.json index d7ae1841f01..6b5e30bc133 100644 --- a/tests/repositories/fixtures/pypi.org/json/more-itertools/4.1.0.json +++ b/tests/repositories/fixtures/pypi.org/json/more-itertools/4.1.0.json @@ -55,13 +55,13 @@ { "comment_text": "", "digests": { - "md5": "c70269eabc5fae5e0d93c2eca638720e", - "sha256": "5dd7dfd88d2fdaea446da478ffef8d7151fdf26ee92ac7ed7b14e8d71efe4b62" + "md5": "703e1e0922de1f11823da60af1488b7a", + "sha256": "0f461c2cd4ec16611396f9ee57f40433de3d59e95475d84c0c829cde02f746cd" }, "downloads": -1, "filename": "more_itertools-4.1.0-py2-none-any.whl", "has_sig": false, - "md5_digest": "c70269eabc5fae5e0d93c2eca638720e", + "md5_digest": "703e1e0922de1f11823da60af1488b7a", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, @@ -75,13 +75,13 @@ { "comment_text": "", "digests": { - "md5": "26d7c309ef806b4e563d2a7e4ceafb14", - "sha256": "29b1e1661aaa56875ce090fa219fa84dfc13daecb52cd4fae321f6f57b419ec4" + "md5": "ae17a45d13e9dc319794c40fa739c38f", + "sha256": "580b6002d1f28feb5bcb8303278d59cf17dfbd19a63a5c2375112dae72c9bf98" }, "downloads": -1, "filename": "more_itertools-4.1.0-py3-none-any.whl", "has_sig": false, - "md5_digest": "26d7c309ef806b4e563d2a7e4ceafb14", + "md5_digest": "ae17a45d13e9dc319794c40fa739c38f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, diff --git a/tests/repositories/fixtures/pypi.org/json/pastel.json b/tests/repositories/fixtures/pypi.org/json/pastel.json index 465cb4d549a..3715dca0ddf 100644 --- a/tests/repositories/fixtures/pypi.org/json/pastel.json +++ b/tests/repositories/fixtures/pypi.org/json/pastel.json @@ -10,8 +10,8 @@ }, "filename": "pastel-0.1.0-py3-none-any.whl", "hashes": { - "md5": "632fcf45cc28aed4a4dce1324d1bd1d1", - "sha256": "d88b34efa115392ee42c55d6f82cdf5e5e08221ef2e18a16ae696a80008c3499" + "md5": "cf7c53ab0a5d7e7c721425b24b486124", + "sha256": "754d192c088e256d52a3f825c3b9e14252d5adc70f53656453f6431e50a70b99" }, "provenance": null, "requires-python": null, diff --git a/tests/repositories/fixtures/pypi.org/json/pastel/0.1.0.json b/tests/repositories/fixtures/pypi.org/json/pastel/0.1.0.json index 0c9f7a832b5..417f7b29cd7 100644 --- a/tests/repositories/fixtures/pypi.org/json/pastel/0.1.0.json +++ b/tests/repositories/fixtures/pypi.org/json/pastel/0.1.0.json @@ -51,13 +51,13 @@ { "comment_text": "", "digests": { - "md5": "632fcf45cc28aed4a4dce1324d1bd1d1", - "sha256": "d88b34efa115392ee42c55d6f82cdf5e5e08221ef2e18a16ae696a80008c3499" + "md5": "cf7c53ab0a5d7e7c721425b24b486124", + "sha256": "754d192c088e256d52a3f825c3b9e14252d5adc70f53656453f6431e50a70b99" }, "downloads": -1, "filename": "pastel-0.1.0-py3-none-any.whl", "has_sig": false, - "md5_digest": "632fcf45cc28aed4a4dce1324d1bd1d1", + "md5_digest": "cf7c53ab0a5d7e7c721425b24b486124", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, diff --git a/tests/repositories/fixtures/pypi.org/json/pluggy.json b/tests/repositories/fixtures/pypi.org/json/pluggy.json index d4961965097..27d2a738963 100644 --- a/tests/repositories/fixtures/pypi.org/json/pluggy.json +++ b/tests/repositories/fixtures/pypi.org/json/pluggy.json @@ -10,8 +10,8 @@ }, "filename": "pluggy-0.6.0-py2-none-any.whl", "hashes": { - "md5": "de6f342e8044d0071eefc3c9cda33055", - "sha256": "9b835f86bfe5498c87ace7f4899cb1b0c40e71c9277377f6851c74a307879285" + "md5": "095eed084713c9b2a9a01520485e20fb", + "sha256": "f5f767d398f18aa177976bf9c4d0c05d96487a7d8f07062251585803aaf56246" }, "provenance": null, "requires-python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", @@ -29,8 +29,8 @@ }, "filename": "pluggy-0.6.0-py3-none-any.whl", "hashes": { - "md5": "f2fc2c3179edccaa7728650178c9133c", - "sha256": "8c646771f5eab7557d1f3924077c55408e86bdfb700f7d86a6d83abeabff4c66" + "md5": "2b6dc266f54023dfb26726686ee6b227", + "sha256": "d34798b80853ab688de1a3ca5b99ba4de91c459c19c76a555dc939979ae67eb0" }, "provenance": null, "requires-python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", diff --git a/tests/repositories/fixtures/pypi.org/json/pluggy/0.6.0.json b/tests/repositories/fixtures/pypi.org/json/pluggy/0.6.0.json index 370a77fbcff..f8a62c7c36b 100644 --- a/tests/repositories/fixtures/pypi.org/json/pluggy/0.6.0.json +++ b/tests/repositories/fixtures/pypi.org/json/pluggy/0.6.0.json @@ -58,13 +58,13 @@ { "comment_text": "", "digests": { - "md5": "de6f342e8044d0071eefc3c9cda33055", - "sha256": "9b835f86bfe5498c87ace7f4899cb1b0c40e71c9277377f6851c74a307879285" + "md5": "095eed084713c9b2a9a01520485e20fb", + "sha256": "f5f767d398f18aa177976bf9c4d0c05d96487a7d8f07062251585803aaf56246" }, "downloads": -1, "filename": "pluggy-0.6.0-py2-none-any.whl", "has_sig": false, - "md5_digest": "de6f342e8044d0071eefc3c9cda33055", + "md5_digest": "095eed084713c9b2a9a01520485e20fb", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", @@ -78,13 +78,13 @@ { "comment_text": "", "digests": { - "md5": "f2fc2c3179edccaa7728650178c9133c", - "sha256": "8c646771f5eab7557d1f3924077c55408e86bdfb700f7d86a6d83abeabff4c66" + "md5": "2b6dc266f54023dfb26726686ee6b227", + "sha256": "d34798b80853ab688de1a3ca5b99ba4de91c459c19c76a555dc939979ae67eb0" }, "downloads": -1, "filename": "pluggy-0.6.0-py3-none-any.whl", "has_sig": false, - "md5_digest": "f2fc2c3179edccaa7728650178c9133c", + "md5_digest": "2b6dc266f54023dfb26726686ee6b227", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", diff --git a/tests/repositories/fixtures/pypi.org/json/py.json b/tests/repositories/fixtures/pypi.org/json/py.json index fbadd76deac..a7fa6bb4629 100644 --- a/tests/repositories/fixtures/pypi.org/json/py.json +++ b/tests/repositories/fixtures/pypi.org/json/py.json @@ -10,8 +10,8 @@ }, "filename": "py-1.5.3-py2.py3-none-any.whl", "hashes": { - "md5": "98652ecee6fc3bb5393a17828f93e1fb", - "sha256": "43ee6c7f95e0ec6a906de49906b79d138d89728fff17109d49f086abc2fdd985" + "md5": "b316b380701661cb67732ecdaef30eeb", + "sha256": "ef4a94f47156178e42ef8f2b131db420e0f4b6aa0b3936b6dbde6ad6487476a5" }, "provenance": null, "requires-python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", diff --git a/tests/repositories/fixtures/pypi.org/json/py/1.5.3.json b/tests/repositories/fixtures/pypi.org/json/py/1.5.3.json index 003cb228076..2a96c168f57 100644 --- a/tests/repositories/fixtures/pypi.org/json/py/1.5.3.json +++ b/tests/repositories/fixtures/pypi.org/json/py/1.5.3.json @@ -59,13 +59,13 @@ { "comment_text": "", "digests": { - "md5": "98652ecee6fc3bb5393a17828f93e1fb", - "sha256": "43ee6c7f95e0ec6a906de49906b79d138d89728fff17109d49f086abc2fdd985" + "md5": "b316b380701661cb67732ecdaef30eeb", + "sha256": "ef4a94f47156178e42ef8f2b131db420e0f4b6aa0b3936b6dbde6ad6487476a5" }, "downloads": -1, "filename": "py-1.5.3-py2.py3-none-any.whl", "has_sig": false, - "md5_digest": "98652ecee6fc3bb5393a17828f93e1fb", + "md5_digest": "b316b380701661cb67732ecdaef30eeb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", diff --git a/tests/repositories/fixtures/pypi.org/json/pytest.json b/tests/repositories/fixtures/pypi.org/json/pytest.json index f317d796dac..3fa4d25c440 100644 --- a/tests/repositories/fixtures/pypi.org/json/pytest.json +++ b/tests/repositories/fixtures/pypi.org/json/pytest.json @@ -10,8 +10,8 @@ }, "filename": "pytest-3.5.0-py2.py3-none-any.whl", "hashes": { - "md5": "d3b1e9aea9e5b9e7a226d8b08aa43662", - "sha256": "28e4d9c2ae3196d74805c2eba24f350ae4c791a5b9b397c79b41506a48dc64ca" + "md5": "4a8651dec151e76f283bf59e333286f9", + "sha256": "427b4582bda18e92ad1967e8b1e071e2c53e6cb7e3e5f090cb3ca443455be23f" }, "provenance": null, "requires-python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", @@ -44,8 +44,8 @@ }, "filename": "pytest-3.5.1-py2.py3-none-any.whl", "hashes": { - "md5": "f1de372a436700e3a785e85c11d15821", - "sha256": "6d3e83b1c1697d220137e436980e73b3ca674f643e666d7c24b0321cb57b76a4" + "md5": "1e81fba94885bef80170545d045924eb", + "sha256": "d327df3686046c5b374a9776d9e11606f7dba6fb3db5cf5d60ebc78a31e0768e" }, "provenance": null, "requires-python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", diff --git a/tests/repositories/fixtures/pypi.org/json/pytest/3.5.0.json b/tests/repositories/fixtures/pypi.org/json/pytest/3.5.0.json index 5bd873edb87..5bd53595555 100644 --- a/tests/repositories/fixtures/pypi.org/json/pytest/3.5.0.json +++ b/tests/repositories/fixtures/pypi.org/json/pytest/3.5.0.json @@ -66,13 +66,13 @@ { "comment_text": "", "digests": { - "md5": "d3b1e9aea9e5b9e7a226d8b08aa43662", - "sha256": "28e4d9c2ae3196d74805c2eba24f350ae4c791a5b9b397c79b41506a48dc64ca" + "md5": "4a8651dec151e76f283bf59e333286f9", + "sha256": "427b4582bda18e92ad1967e8b1e071e2c53e6cb7e3e5f090cb3ca443455be23f" }, "downloads": -1, "filename": "pytest-3.5.0-py2.py3-none-any.whl", "has_sig": false, - "md5_digest": "d3b1e9aea9e5b9e7a226d8b08aa43662", + "md5_digest": "4a8651dec151e76f283bf59e333286f9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", diff --git a/tests/repositories/fixtures/pypi.org/json/pytest/3.5.1.json b/tests/repositories/fixtures/pypi.org/json/pytest/3.5.1.json index b5c27a3f94b..6e472048cf0 100644 --- a/tests/repositories/fixtures/pypi.org/json/pytest/3.5.1.json +++ b/tests/repositories/fixtures/pypi.org/json/pytest/3.5.1.json @@ -68,13 +68,13 @@ { "comment_text": "", "digests": { - "md5": "f1de372a436700e3a785e85c11d15821", - "sha256": "6d3e83b1c1697d220137e436980e73b3ca674f643e666d7c24b0321cb57b76a4" + "md5": "1e81fba94885bef80170545d045924eb", + "sha256": "d327df3686046c5b374a9776d9e11606f7dba6fb3db5cf5d60ebc78a31e0768e" }, "downloads": -1, "filename": "pytest-3.5.1-py2.py3-none-any.whl", "has_sig": false, - "md5_digest": "f1de372a436700e3a785e85c11d15821", + "md5_digest": "1e81fba94885bef80170545d045924eb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", diff --git a/tests/repositories/fixtures/pypi.org/json/requests.json b/tests/repositories/fixtures/pypi.org/json/requests.json index 0003ceafedb..34f4f6551dd 100644 --- a/tests/repositories/fixtures/pypi.org/json/requests.json +++ b/tests/repositories/fixtures/pypi.org/json/requests.json @@ -138,8 +138,8 @@ }, "filename": "requests-2.18.4-py2.py3-none-any.whl", "hashes": { - "md5": "f392c0ab49bf677c6240ef2b1890b079", - "sha256": "ce91d39dc2857eeb19fc8bf765df6c14874bcdc724d3ce9c6cd89915618e7023" + "md5": "e770e65750c42f40b97b0ed738d0f859", + "sha256": "098be851f30be5bcb2c7537798d44314f576e53818ba9def25141ae4dce8b25d" }, "provenance": null, "requires-python": null, diff --git a/tests/repositories/fixtures/pypi.org/json/requests/2.18.4.json b/tests/repositories/fixtures/pypi.org/json/requests/2.18.4.json index d97b7b62bc8..e45d0ee9481 100644 --- a/tests/repositories/fixtures/pypi.org/json/requests/2.18.4.json +++ b/tests/repositories/fixtures/pypi.org/json/requests/2.18.4.json @@ -64,13 +64,13 @@ { "comment_text": "", "digests": { - "md5": "f392c0ab49bf677c6240ef2b1890b079", - "sha256": "ce91d39dc2857eeb19fc8bf765df6c14874bcdc724d3ce9c6cd89915618e7023" + "md5": "e770e65750c42f40b97b0ed738d0f859", + "sha256": "098be851f30be5bcb2c7537798d44314f576e53818ba9def25141ae4dce8b25d" }, "downloads": -1, "filename": "requests-2.18.4-py2.py3-none-any.whl", "has_sig": false, - "md5_digest": "f392c0ab49bf677c6240ef2b1890b079", + "md5_digest": "e770e65750c42f40b97b0ed738d0f859", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, diff --git a/tests/repositories/fixtures/pypi.org/json/six.json b/tests/repositories/fixtures/pypi.org/json/six.json index 2221a7317a7..e9fed52b956 100644 --- a/tests/repositories/fixtures/pypi.org/json/six.json +++ b/tests/repositories/fixtures/pypi.org/json/six.json @@ -10,8 +10,8 @@ }, "filename": "six-1.11.0-py2.py3-none-any.whl", "hashes": { - "md5": "35b1057b388e276352d0709138b1e194", - "sha256": "112f5b46e6aa106db3e4e2494a03694c938f41c4c4535edbdfc816c2e0cb50f2" + "md5": "9500094701f7201ddd065c60abcefef1", + "sha256": "534e9875e44a507adec601c29b3cbd2ca6dae7df92bf3dd20c7289b2f99f7466" }, "provenance": null, "requires-python": null, diff --git a/tests/repositories/fixtures/pypi.org/json/six/1.11.0.json b/tests/repositories/fixtures/pypi.org/json/six/1.11.0.json index 85a59e11c2c..674d0ffb926 100644 --- a/tests/repositories/fixtures/pypi.org/json/six/1.11.0.json +++ b/tests/repositories/fixtures/pypi.org/json/six/1.11.0.json @@ -47,13 +47,13 @@ { "comment_text": "", "digests": { - "md5": "35b1057b388e276352d0709138b1e194", - "sha256": "112f5b46e6aa106db3e4e2494a03694c938f41c4c4535edbdfc816c2e0cb50f2" + "md5": "9500094701f7201ddd065c60abcefef1", + "sha256": "534e9875e44a507adec601c29b3cbd2ca6dae7df92bf3dd20c7289b2f99f7466" }, "downloads": -1, "filename": "six-1.11.0-py2.py3-none-any.whl", "has_sig": false, - "md5_digest": "35b1057b388e276352d0709138b1e194", + "md5_digest": "9500094701f7201ddd065c60abcefef1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, diff --git a/tests/repositories/fixtures/pypi.org/json/tomlkit.json b/tests/repositories/fixtures/pypi.org/json/tomlkit.json index fdcef6bc91e..0c76b7f37a6 100644 --- a/tests/repositories/fixtures/pypi.org/json/tomlkit.json +++ b/tests/repositories/fixtures/pypi.org/json/tomlkit.json @@ -10,8 +10,8 @@ }, "filename": "tomlkit-0.5.2-py2.py3-none-any.whl", "hashes": { - "md5": "7bcf6cf4a6034339bb6a481f27b9ba62", - "sha256": "a50f685abd033a7b50b13330833c15699885186517b713d9f7e8280ce7976e4c" + "md5": "4045c5f6848fbc93c38df2296a441f07", + "sha256": "dea8ff39e9e2170f1b2f465520482eec71e7909cfff53dcb076b585d50f8ccc8" }, "provenance": null, "requires-python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", @@ -44,8 +44,8 @@ }, "filename": "tomlkit-0.5.3-py2.py3-none-any.whl", "hashes": { - "md5": "b868779f054c64bc6c2ae4ad2cdbf6b3", - "sha256": "d4fe74be9b732d76886da6da2e96f76ae42551e53afce1ea29bc703629b70497" + "md5": "3a90c70a5067d5727110838094ab8674", + "sha256": "35f06da5835e85f149a4701d43e730adcc09f1b362e5fc2300d77bdd26280908" }, "provenance": null, "requires-python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", diff --git a/tests/repositories/fixtures/pypi.org/json/tomlkit/0.5.2.json b/tests/repositories/fixtures/pypi.org/json/tomlkit/0.5.2.json index 4353af698df..caf365ccd54 100644 --- a/tests/repositories/fixtures/pypi.org/json/tomlkit/0.5.2.json +++ b/tests/repositories/fixtures/pypi.org/json/tomlkit/0.5.2.json @@ -54,13 +54,13 @@ { "comment_text": "", "digests": { - "md5": "7bcf6cf4a6034339bb6a481f27b9ba62", - "sha256": "a50f685abd033a7b50b13330833c15699885186517b713d9f7e8280ce7976e4c" + "md5": "4045c5f6848fbc93c38df2296a441f07", + "sha256": "dea8ff39e9e2170f1b2f465520482eec71e7909cfff53dcb076b585d50f8ccc8" }, "downloads": -1, "filename": "tomlkit-0.5.2-py2.py3-none-any.whl", "has_sig": false, - "md5_digest": "7bcf6cf4a6034339bb6a481f27b9ba62", + "md5_digest": "4045c5f6848fbc93c38df2296a441f07", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", diff --git a/tests/repositories/fixtures/pypi.org/json/tomlkit/0.5.3.json b/tests/repositories/fixtures/pypi.org/json/tomlkit/0.5.3.json index 6ea48d948b9..75ac2d11c9b 100644 --- a/tests/repositories/fixtures/pypi.org/json/tomlkit/0.5.3.json +++ b/tests/repositories/fixtures/pypi.org/json/tomlkit/0.5.3.json @@ -54,13 +54,13 @@ { "comment_text": "", "digests": { - "md5": "b868779f054c64bc6c2ae4ad2cdbf6b3", - "sha256": "d4fe74be9b732d76886da6da2e96f76ae42551e53afce1ea29bc703629b70497" + "md5": "3a90c70a5067d5727110838094ab8674", + "sha256": "35f06da5835e85f149a4701d43e730adcc09f1b362e5fc2300d77bdd26280908" }, "downloads": -1, "filename": "tomlkit-0.5.3-py2.py3-none-any.whl", "has_sig": false, - "md5_digest": "b868779f054c64bc6c2ae4ad2cdbf6b3", + "md5_digest": "3a90c70a5067d5727110838094ab8674", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", diff --git a/tests/repositories/fixtures/pypi.org/json/zipp.json b/tests/repositories/fixtures/pypi.org/json/zipp.json index 273215fd620..4603d3f9240 100644 --- a/tests/repositories/fixtures/pypi.org/json/zipp.json +++ b/tests/repositories/fixtures/pypi.org/json/zipp.json @@ -10,8 +10,8 @@ }, "filename": "zipp-3.5.0-py3-none-any.whl", "hashes": { - "md5": "52aecc0484efd07d62575d152f6a98f6", - "sha256": "82da6dcae3676123d6f493a876259614e7e6e970b14c59b1830a2c901ed91306" + "md5": "da62cbd850ba32ba93817aab0f03a855", + "sha256": "ec508cd5a3ed3d126293cafb34611469f2aef7342f575c3b6e072b995dc9da1f" }, "provenance": null, "requires-python": ">=3.6", diff --git a/tests/repositories/fixtures/pypi.org/json/zipp/3.5.0.json b/tests/repositories/fixtures/pypi.org/json/zipp/3.5.0.json index 0e3bc2323ab..5ac7a06c50e 100644 --- a/tests/repositories/fixtures/pypi.org/json/zipp/3.5.0.json +++ b/tests/repositories/fixtures/pypi.org/json/zipp/3.5.0.json @@ -59,13 +59,13 @@ { "comment_text": "", "digests": { - "md5": "52aecc0484efd07d62575d152f6a98f6", - "sha256": "82da6dcae3676123d6f493a876259614e7e6e970b14c59b1830a2c901ed91306" + "md5": "da62cbd850ba32ba93817aab0f03a855", + "sha256": "ec508cd5a3ed3d126293cafb34611469f2aef7342f575c3b6e072b995dc9da1f" }, "downloads": -1, "filename": "zipp-3.5.0-py3-none-any.whl", "has_sig": false, - "md5_digest": "52aecc0484efd07d62575d152f6a98f6", + "md5_digest": "da62cbd850ba32ba93817aab0f03a855", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", diff --git a/tests/repositories/fixtures/pypi.org/stubbed/attrs-17.4.0-py2.py3-none-any.whl b/tests/repositories/fixtures/pypi.org/stubbed/attrs-17.4.0-py2.py3-none-any.whl index 52264858d3c..3d6428a26e8 100644 Binary files a/tests/repositories/fixtures/pypi.org/stubbed/attrs-17.4.0-py2.py3-none-any.whl and b/tests/repositories/fixtures/pypi.org/stubbed/attrs-17.4.0-py2.py3-none-any.whl differ diff --git a/tests/repositories/fixtures/pypi.org/stubbed/black-19.10b0-py36-none-any.whl b/tests/repositories/fixtures/pypi.org/stubbed/black-19.10b0-py36-none-any.whl index 85f1a5aaf9d..e06398a91f0 100644 Binary files a/tests/repositories/fixtures/pypi.org/stubbed/black-19.10b0-py36-none-any.whl and b/tests/repositories/fixtures/pypi.org/stubbed/black-19.10b0-py36-none-any.whl differ diff --git a/tests/repositories/fixtures/pypi.org/stubbed/black-21.11b0-py3-none-any.whl b/tests/repositories/fixtures/pypi.org/stubbed/black-21.11b0-py3-none-any.whl index 2d889839128..ac416c48a67 100644 Binary files a/tests/repositories/fixtures/pypi.org/stubbed/black-21.11b0-py3-none-any.whl and b/tests/repositories/fixtures/pypi.org/stubbed/black-21.11b0-py3-none-any.whl differ diff --git a/tests/repositories/fixtures/pypi.org/stubbed/cleo-1.0.0a5-py3-none-any.whl b/tests/repositories/fixtures/pypi.org/stubbed/cleo-1.0.0a5-py3-none-any.whl index 89a45de35c4..2698860f40f 100644 Binary files a/tests/repositories/fixtures/pypi.org/stubbed/cleo-1.0.0a5-py3-none-any.whl and b/tests/repositories/fixtures/pypi.org/stubbed/cleo-1.0.0a5-py3-none-any.whl differ diff --git a/tests/repositories/fixtures/pypi.org/stubbed/clikit-0.2.4-py2.py3-none-any.whl b/tests/repositories/fixtures/pypi.org/stubbed/clikit-0.2.4-py2.py3-none-any.whl index 2389affd8ab..35bb6c5c05b 100644 Binary files a/tests/repositories/fixtures/pypi.org/stubbed/clikit-0.2.4-py2.py3-none-any.whl and b/tests/repositories/fixtures/pypi.org/stubbed/clikit-0.2.4-py2.py3-none-any.whl differ diff --git a/tests/repositories/fixtures/pypi.org/stubbed/colorama-0.3.9-py2.py3-none-any.whl b/tests/repositories/fixtures/pypi.org/stubbed/colorama-0.3.9-py2.py3-none-any.whl index 45aa098254c..8141564e230 100644 Binary files a/tests/repositories/fixtures/pypi.org/stubbed/colorama-0.3.9-py2.py3-none-any.whl and b/tests/repositories/fixtures/pypi.org/stubbed/colorama-0.3.9-py2.py3-none-any.whl differ diff --git a/tests/repositories/fixtures/pypi.org/stubbed/discord.py-2.0.0-py3-none-any.whl b/tests/repositories/fixtures/pypi.org/stubbed/discord.py-2.0.0-py3-none-any.whl index 1c993274b82..13e6d77c444 100644 Binary files a/tests/repositories/fixtures/pypi.org/stubbed/discord.py-2.0.0-py3-none-any.whl and b/tests/repositories/fixtures/pypi.org/stubbed/discord.py-2.0.0-py3-none-any.whl differ diff --git a/tests/repositories/fixtures/pypi.org/stubbed/futures-3.2.0-py2-none-any.whl b/tests/repositories/fixtures/pypi.org/stubbed/futures-3.2.0-py2-none-any.whl index 5593aeee3e6..9369d51bb1c 100644 Binary files a/tests/repositories/fixtures/pypi.org/stubbed/futures-3.2.0-py2-none-any.whl and b/tests/repositories/fixtures/pypi.org/stubbed/futures-3.2.0-py2-none-any.whl differ diff --git a/tests/repositories/fixtures/pypi.org/stubbed/ipython-5.7.0-py2-none-any.whl b/tests/repositories/fixtures/pypi.org/stubbed/ipython-5.7.0-py2-none-any.whl index 314e5d11a68..c9a0dae6e48 100644 Binary files a/tests/repositories/fixtures/pypi.org/stubbed/ipython-5.7.0-py2-none-any.whl and b/tests/repositories/fixtures/pypi.org/stubbed/ipython-5.7.0-py2-none-any.whl differ diff --git a/tests/repositories/fixtures/pypi.org/stubbed/ipython-5.7.0-py3-none-any.whl b/tests/repositories/fixtures/pypi.org/stubbed/ipython-5.7.0-py3-none-any.whl index f27a1788a29..442857c112a 100644 Binary files a/tests/repositories/fixtures/pypi.org/stubbed/ipython-5.7.0-py3-none-any.whl and b/tests/repositories/fixtures/pypi.org/stubbed/ipython-5.7.0-py3-none-any.whl differ diff --git a/tests/repositories/fixtures/pypi.org/stubbed/ipython-7.5.0-py3-none-any.whl b/tests/repositories/fixtures/pypi.org/stubbed/ipython-7.5.0-py3-none-any.whl index 00e0e598166..03fb6ee077c 100644 Binary files a/tests/repositories/fixtures/pypi.org/stubbed/ipython-7.5.0-py3-none-any.whl and b/tests/repositories/fixtures/pypi.org/stubbed/ipython-7.5.0-py3-none-any.whl differ diff --git a/tests/repositories/fixtures/pypi.org/stubbed/isort-4.3.4-py2-none-any.whl b/tests/repositories/fixtures/pypi.org/stubbed/isort-4.3.4-py2-none-any.whl index 4a4f24909f5..5fc465a461e 100644 Binary files a/tests/repositories/fixtures/pypi.org/stubbed/isort-4.3.4-py2-none-any.whl and b/tests/repositories/fixtures/pypi.org/stubbed/isort-4.3.4-py2-none-any.whl differ diff --git a/tests/repositories/fixtures/pypi.org/stubbed/isort-4.3.4-py3-none-any.whl b/tests/repositories/fixtures/pypi.org/stubbed/isort-4.3.4-py3-none-any.whl index 35c983216ac..f014878206a 100644 Binary files a/tests/repositories/fixtures/pypi.org/stubbed/isort-4.3.4-py3-none-any.whl and b/tests/repositories/fixtures/pypi.org/stubbed/isort-4.3.4-py3-none-any.whl differ diff --git a/tests/repositories/fixtures/pypi.org/stubbed/jupyter-1.0.0-py2.py3-none-any.whl b/tests/repositories/fixtures/pypi.org/stubbed/jupyter-1.0.0-py2.py3-none-any.whl index 4a78abe277e..0782ba0ee73 100644 Binary files a/tests/repositories/fixtures/pypi.org/stubbed/jupyter-1.0.0-py2.py3-none-any.whl and b/tests/repositories/fixtures/pypi.org/stubbed/jupyter-1.0.0-py2.py3-none-any.whl differ diff --git a/tests/repositories/fixtures/pypi.org/stubbed/more_itertools-4.1.0-py2-none-any.whl b/tests/repositories/fixtures/pypi.org/stubbed/more_itertools-4.1.0-py2-none-any.whl index 436a62bfde7..e9f2a2e168e 100644 Binary files a/tests/repositories/fixtures/pypi.org/stubbed/more_itertools-4.1.0-py2-none-any.whl and b/tests/repositories/fixtures/pypi.org/stubbed/more_itertools-4.1.0-py2-none-any.whl differ diff --git a/tests/repositories/fixtures/pypi.org/stubbed/more_itertools-4.1.0-py3-none-any.whl b/tests/repositories/fixtures/pypi.org/stubbed/more_itertools-4.1.0-py3-none-any.whl index 07c288e372a..bdaaa65e2bb 100644 Binary files a/tests/repositories/fixtures/pypi.org/stubbed/more_itertools-4.1.0-py3-none-any.whl and b/tests/repositories/fixtures/pypi.org/stubbed/more_itertools-4.1.0-py3-none-any.whl differ diff --git a/tests/repositories/fixtures/pypi.org/stubbed/pastel-0.1.0-py3-none-any.whl b/tests/repositories/fixtures/pypi.org/stubbed/pastel-0.1.0-py3-none-any.whl index 3cbecb7150e..f6291197e7a 100644 Binary files a/tests/repositories/fixtures/pypi.org/stubbed/pastel-0.1.0-py3-none-any.whl and b/tests/repositories/fixtures/pypi.org/stubbed/pastel-0.1.0-py3-none-any.whl differ diff --git a/tests/repositories/fixtures/pypi.org/stubbed/pluggy-0.6.0-py2-none-any.whl b/tests/repositories/fixtures/pypi.org/stubbed/pluggy-0.6.0-py2-none-any.whl index 7dd96ebd5ce..4774f141175 100644 Binary files a/tests/repositories/fixtures/pypi.org/stubbed/pluggy-0.6.0-py2-none-any.whl and b/tests/repositories/fixtures/pypi.org/stubbed/pluggy-0.6.0-py2-none-any.whl differ diff --git a/tests/repositories/fixtures/pypi.org/stubbed/pluggy-0.6.0-py3-none-any.whl b/tests/repositories/fixtures/pypi.org/stubbed/pluggy-0.6.0-py3-none-any.whl index 68b635e679d..43c0716994b 100644 Binary files a/tests/repositories/fixtures/pypi.org/stubbed/pluggy-0.6.0-py3-none-any.whl and b/tests/repositories/fixtures/pypi.org/stubbed/pluggy-0.6.0-py3-none-any.whl differ diff --git a/tests/repositories/fixtures/pypi.org/stubbed/py-1.5.3-py2.py3-none-any.whl b/tests/repositories/fixtures/pypi.org/stubbed/py-1.5.3-py2.py3-none-any.whl index 1231a39708e..8558ff3a650 100644 Binary files a/tests/repositories/fixtures/pypi.org/stubbed/py-1.5.3-py2.py3-none-any.whl and b/tests/repositories/fixtures/pypi.org/stubbed/py-1.5.3-py2.py3-none-any.whl differ diff --git a/tests/repositories/fixtures/pypi.org/stubbed/pytest-3.5.0-py2.py3-none-any.whl b/tests/repositories/fixtures/pypi.org/stubbed/pytest-3.5.0-py2.py3-none-any.whl index 2b43c100100..dcc99d60bd9 100644 Binary files a/tests/repositories/fixtures/pypi.org/stubbed/pytest-3.5.0-py2.py3-none-any.whl and b/tests/repositories/fixtures/pypi.org/stubbed/pytest-3.5.0-py2.py3-none-any.whl differ diff --git a/tests/repositories/fixtures/pypi.org/stubbed/pytest-3.5.1-py2.py3-none-any.whl b/tests/repositories/fixtures/pypi.org/stubbed/pytest-3.5.1-py2.py3-none-any.whl index 4e2a1b6e1bd..c03ddca70c3 100644 Binary files a/tests/repositories/fixtures/pypi.org/stubbed/pytest-3.5.1-py2.py3-none-any.whl and b/tests/repositories/fixtures/pypi.org/stubbed/pytest-3.5.1-py2.py3-none-any.whl differ diff --git a/tests/repositories/fixtures/pypi.org/stubbed/requests-2.18.4-py2.py3-none-any.whl b/tests/repositories/fixtures/pypi.org/stubbed/requests-2.18.4-py2.py3-none-any.whl index 3b504ecacdb..8198490fbb7 100644 Binary files a/tests/repositories/fixtures/pypi.org/stubbed/requests-2.18.4-py2.py3-none-any.whl and b/tests/repositories/fixtures/pypi.org/stubbed/requests-2.18.4-py2.py3-none-any.whl differ diff --git a/tests/repositories/fixtures/pypi.org/stubbed/six-1.11.0-py2.py3-none-any.whl b/tests/repositories/fixtures/pypi.org/stubbed/six-1.11.0-py2.py3-none-any.whl index 204a31d0a46..5bf1f37c867 100644 Binary files a/tests/repositories/fixtures/pypi.org/stubbed/six-1.11.0-py2.py3-none-any.whl and b/tests/repositories/fixtures/pypi.org/stubbed/six-1.11.0-py2.py3-none-any.whl differ diff --git a/tests/repositories/fixtures/pypi.org/stubbed/tomlkit-0.5.2-py2.py3-none-any.whl b/tests/repositories/fixtures/pypi.org/stubbed/tomlkit-0.5.2-py2.py3-none-any.whl index 5fc6a4e6165..1ed137f404f 100644 Binary files a/tests/repositories/fixtures/pypi.org/stubbed/tomlkit-0.5.2-py2.py3-none-any.whl and b/tests/repositories/fixtures/pypi.org/stubbed/tomlkit-0.5.2-py2.py3-none-any.whl differ diff --git a/tests/repositories/fixtures/pypi.org/stubbed/tomlkit-0.5.3-py2.py3-none-any.whl b/tests/repositories/fixtures/pypi.org/stubbed/tomlkit-0.5.3-py2.py3-none-any.whl index 0069680397f..e94ab75abf0 100644 Binary files a/tests/repositories/fixtures/pypi.org/stubbed/tomlkit-0.5.3-py2.py3-none-any.whl and b/tests/repositories/fixtures/pypi.org/stubbed/tomlkit-0.5.3-py2.py3-none-any.whl differ diff --git a/tests/repositories/fixtures/pypi.org/stubbed/zipp-3.5.0-py3-none-any.whl b/tests/repositories/fixtures/pypi.org/stubbed/zipp-3.5.0-py3-none-any.whl index 6f2d54ded33..69bc86f48c8 100644 Binary files a/tests/repositories/fixtures/pypi.org/stubbed/zipp-3.5.0-py3-none-any.whl and b/tests/repositories/fixtures/pypi.org/stubbed/zipp-3.5.0-py3-none-any.whl differ diff --git a/tests/utils/fixtures/setups/ansible/requirements.txt b/tests/utils/fixtures/setups/ansible/requirements.txt deleted file mode 100644 index 09ba9fc6f06..00000000000 --- a/tests/utils/fixtures/setups/ansible/requirements.txt +++ /dev/null @@ -1,10 +0,0 @@ -# Note: this requirements.txt file is used to specify what dependencies are -# needed to make the package run rather than for deployment of a tested set of -# packages. Thus, this should be the loosest set possible (only required -# packages, not optional ones, and with the widest range of versions that could -# be suitable) -jinja2 -PyYAML -paramiko -cryptography -setuptools diff --git a/tests/utils/fixtures/setups/ansible/setup.py b/tests/utils/fixtures/setups/ansible/setup.py deleted file mode 100644 index 3bebf1c3b9a..00000000000 --- a/tests/utils/fixtures/setups/ansible/setup.py +++ /dev/null @@ -1,326 +0,0 @@ -from __future__ import annotations - -import json -import os -import os.path -import re -import sys -import warnings - -from collections import defaultdict -from distutils.command.build_scripts import build_scripts as BuildScripts -from distutils.command.sdist import sdist as SDist - - -try: - from setuptools import find_packages - from setuptools import setup - from setuptools.command.build_py import build_py as BuildPy - from setuptools.command.install_lib import install_lib as InstallLib - from setuptools.command.install_scripts import install_scripts as InstallScripts -except ImportError: - print( - "Ansible now needs setuptools in order to build. Install it using" - " your package manager (usually python-setuptools) or via pip (pip" - " install setuptools).", - file=sys.stderr, - ) - sys.exit(1) - -sys.path.insert(0, os.path.abspath("lib")) -from ansible.release import __author__ -from ansible.release import __version__ - - -SYMLINK_CACHE = "SYMLINK_CACHE.json" - - -def _find_symlinks(topdir, extension=""): - """Find symlinks that should be maintained - - Maintained symlinks exist in the bin dir or are modules which have - aliases. Our heuristic is that they are a link in a certain path which - point to a file in the same directory. - """ - symlinks = defaultdict(list) - for base_path, dirs, files in os.walk(topdir): - for filename in files: - filepath = os.path.join(base_path, filename) - if os.path.islink(filepath) and filename.endswith(extension): - target = os.readlink(filepath) - if os.path.dirname(target) == "": - link = filepath[len(topdir) :] - if link.startswith("/"): - link = link[1:] - symlinks[os.path.basename(target)].append(link) - return symlinks - - -def _cache_symlinks(symlink_data): - with open(SYMLINK_CACHE, "w") as f: - json.dump(symlink_data, f) - - -def _maintain_symlinks(symlink_type, base_path): - """Switch a real file into a symlink""" - try: - # Try the cache first because going from git checkout to sdist is the - # only time we know that we're going to cache correctly - with open(SYMLINK_CACHE) as f: - symlink_data = json.load(f) - except OSError as e: - # IOError on py2, OSError on py3. Both have errno - if e.errno == 2: - # SYMLINKS_CACHE doesn't exist. Fallback to trying to create the - # cache now. Will work if we're running directly from a git - # checkout or from an sdist created earlier. - symlink_data = { - "script": _find_symlinks("bin"), - "library": _find_symlinks("lib", ".py"), - } - - # Sanity check that something we know should be a symlink was - # found. We'll take that to mean that the current directory - # structure properly reflects symlinks in the git repo - if "ansible-playbook" in symlink_data["script"]["ansible"]: - _cache_symlinks(symlink_data) - else: - raise - else: - raise - symlinks = symlink_data[symlink_type] - - for source in symlinks: - for dest in symlinks[source]: - dest_path = os.path.join(base_path, dest) - if not os.path.islink(dest_path): - try: - os.unlink(dest_path) - except OSError as e: - if e.errno == 2: - # File does not exist which is all we wanted - pass - os.symlink(source, dest_path) - - -class BuildPyCommand(BuildPy): - def run(self): - BuildPy.run(self) - _maintain_symlinks("library", self.build_lib) - - -class BuildScriptsCommand(BuildScripts): - def run(self): - BuildScripts.run(self) - _maintain_symlinks("script", self.build_dir) - - -class InstallLibCommand(InstallLib): - def run(self): - InstallLib.run(self) - _maintain_symlinks("library", self.install_dir) - - -class InstallScriptsCommand(InstallScripts): - def run(self): - InstallScripts.run(self) - _maintain_symlinks("script", self.install_dir) - - -class SDistCommand(SDist): - def run(self): - # have to generate the cache of symlinks for release as sdist is the - # only command that has access to symlinks from the git repo - symlinks = { - "script": _find_symlinks("bin"), - "library": _find_symlinks("lib", ".py"), - } - _cache_symlinks(symlinks) - - SDist.run(self) - - -def read_file(file_name): - """Read file and return its contents.""" - with open(file_name) as f: - return f.read() - - -def read_requirements(file_name): - """Read requirements file as a list.""" - reqs = read_file(file_name).splitlines() - if not reqs: - raise RuntimeError( - "Unable to read requirements from the %s file" - "That indicates this copy of the source code is incomplete." % file_name - ) - return reqs - - -PYCRYPTO_DIST = "pycrypto" - - -def get_crypto_req(): - """Detect custom crypto from ANSIBLE_CRYPTO_BACKEND env var. - - pycrypto or cryptography. We choose a default but allow the user to - override it. This translates into pip install of the sdist deciding what - package to install and also the runtime dependencies that pkg_resources - knows about. - """ - crypto_backend = os.environ.get("ANSIBLE_CRYPTO_BACKEND", "").strip() - - if crypto_backend == PYCRYPTO_DIST: - # Attempt to set version requirements - return "%s >= 2.6" % PYCRYPTO_DIST - - return crypto_backend or None - - -def substitute_crypto_to_req(req): - """Replace crypto requirements if customized.""" - crypto_backend = get_crypto_req() - - if crypto_backend is None: - return req - - def is_not_crypto(r): - CRYPTO_LIBS = PYCRYPTO_DIST, "cryptography" - return not any(r.lower().startswith(c) for c in CRYPTO_LIBS) - - return [r for r in req if is_not_crypto(r)] + [crypto_backend] - - -def read_extras(): - """Specify any extra requirements for installation.""" - extras = dict() - extra_requirements_dir = "packaging/requirements" - for extra_requirements_filename in os.listdir(extra_requirements_dir): - filename_match = re.search( - r"^requirements-(\w*).txt$", extra_requirements_filename - ) - if not filename_match: - continue - extra_req_file_path = os.path.join( - extra_requirements_dir, extra_requirements_filename - ) - try: - extras[filename_match.group(1)] = read_file( - extra_req_file_path - ).splitlines() - except RuntimeError: - pass - return extras - - -def get_dynamic_setup_params(): - """Add dynamically calculated setup params to static ones.""" - return { - # Retrieve the long description from the README - "long_description": read_file("README.rst"), - "install_requires": substitute_crypto_to_req( - read_requirements("requirements.txt") - ), - "extras_require": read_extras(), - } - - -static_setup_params = dict( - # Use the distutils SDist so that symlinks are not expanded - # Use a custom Build for the same reason - cmdclass={ - "build_py": BuildPyCommand, - "build_scripts": BuildScriptsCommand, - "install_lib": InstallLibCommand, - "install_scripts": InstallScriptsCommand, - "sdist": SDistCommand, - }, - name="ansible", - version=__version__, - description="Radically simple IT automation", - author=__author__, - author_email="info@ansible.com", - url="https://ansible.com/", - project_urls={ - "Bug Tracker": "https://github.com/ansible/ansible/issues", - "CI: Shippable": "https://app.shippable.com/github/ansible/ansible", - "Code of Conduct": "https://docs.ansible.com/ansible/latest/community/code_of_conduct.html", - "Documentation": "https://docs.ansible.com/ansible/", - "Mailing lists": "https://docs.ansible.com/ansible/latest/community/communication.html#mailing-list-information", - "Source Code": "https://github.com/ansible/ansible", - }, - license="GPLv3+", - # Ansible will also make use of a system copy of python-six and - # python-selectors2 if installed but use a Bundled copy if it's not. - python_requires=">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*", - package_dir={"": "lib"}, - packages=find_packages("lib"), - package_data={ - "": [ - "module_utils/powershell/*.psm1", - "module_utils/powershell/*/*.psm1", - "modules/windows/*.ps1", - "modules/windows/*/*.ps1", - "galaxy/data/*/*.*", - "galaxy/data/*/*/.*", - "galaxy/data/*/*/*.*", - "galaxy/data/*/tests/inventory", - "config/base.yml", - "config/module_defaults.yml", - ] - }, - classifiers=[ - "Development Status :: 5 - Production/Stable", - "Environment :: Console", - "Intended Audience :: Developers", - "Intended Audience :: Information Technology", - "Intended Audience :: System Administrators", - "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", - "Natural Language :: English", - "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", - "Topic :: System :: Installation/Setup", - "Topic :: System :: Systems Administration", - "Topic :: Utilities", - ], - scripts=[ - "bin/ansible", - "bin/ansible-playbook", - "bin/ansible-pull", - "bin/ansible-doc", - "bin/ansible-galaxy", - "bin/ansible-console", - "bin/ansible-connection", - "bin/ansible-vault", - "bin/ansible-config", - "bin/ansible-inventory", - ], - data_files=[], - # Installing as zip files would break due to references to __file__ - zip_safe=False, -) - - -def main(): - """Invoke installation process using setuptools.""" - setup_params = dict(static_setup_params, **get_dynamic_setup_params()) - ignore_warning_regex = ( - r"Unknown distribution option: '(project_urls|python_requires)'" - ) - warnings.filterwarnings( - "ignore", - message=ignore_warning_regex, - category=UserWarning, - module="distutils.dist", - ) - setup(**setup_params) - warnings.resetwarnings() - - -if __name__ == "__main__": - main() diff --git a/tests/utils/fixtures/setups/extras_require_with_vars/setup.py b/tests/utils/fixtures/setups/extras_require_with_vars/setup.py deleted file mode 100644 index e40db81d327..00000000000 --- a/tests/utils/fixtures/setups/extras_require_with_vars/setup.py +++ /dev/null @@ -1,14 +0,0 @@ -from __future__ import annotations - -from setuptools import setup - - -tests_require = ["pytest"] - -setup( - name="extras_require_with_vars", - version="0.0.1", - description="test setup_reader.py", - install_requires=[], - extras_require={"test": tests_require}, -) diff --git a/tests/utils/fixtures/setups/flask/setup.py b/tests/utils/fixtures/setups/flask/setup.py deleted file mode 100644 index 74a059deed6..00000000000 --- a/tests/utils/fixtures/setups/flask/setup.py +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/env python -from __future__ import annotations - -import re - -from collections import OrderedDict - -from setuptools import setup - - -with open("README.rst", encoding="utf8") as f: - readme = f.read() - -with open("flask/__init__.py", encoding="utf8") as f: - version = re.search(r"__version__ = \'(.*?)\'", f.read()).group(1) - -setup( - name="Flask", - version=version, - url="https://www.palletsprojects.com/p/flask/", - project_urls=OrderedDict( - ( - ("Documentation", "http://flask.pocoo.org/docs/"), - ("Code", "https://github.com/pallets/flask"), - ("Issue tracker", "https://github.com/pallets/flask/issues"), - ) - ), - license="BSD", - author="Armin Ronacher", - author_email="armin.ronacher@active-4.com", - maintainer="Pallets team", - maintainer_email="contact@palletsprojects.com", - description="A simple framework for building complex web applications.", - long_description=readme, - packages=["flask", "flask.json"], - include_package_data=True, - zip_safe=False, - platforms="any", - python_requires=">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", - install_requires=[ - "Werkzeug>=0.14", - "Jinja2>=2.10", - "itsdangerous>=0.24", - "click>=5.1", - ], - extras_require={ - "dotenv": ["python-dotenv"], - "dev": [ - "pytest>=3", - "coverage", - "tox", - "sphinx", - "pallets-sphinx-themes", - "sphinxcontrib-log-cabinet", - ], - "docs": ["sphinx", "pallets-sphinx-themes", "sphinxcontrib-log-cabinet"], - }, - 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", - "Programming Language :: Python :: 2", - "Programming Language :: Python :: 2.7", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.4", - "Programming Language :: Python :: 3.5", - "Programming Language :: Python :: 3.6", - "Topic :: Internet :: WWW/HTTP :: Dynamic Content", - "Topic :: Internet :: WWW/HTTP :: WSGI :: Application", - "Topic :: Software Development :: Libraries :: Application Frameworks", - "Topic :: Software Development :: Libraries :: Python Modules", - ], - entry_points={"console_scripts": ["flask = flask.cli:main"]}, -) diff --git a/tests/utils/fixtures/setups/minimal/setup.py b/tests/utils/fixtures/setups/minimal/setup.py deleted file mode 100644 index 536cf1785ef..00000000000 --- a/tests/utils/fixtures/setups/minimal/setup.py +++ /dev/null @@ -1,6 +0,0 @@ -from __future__ import annotations - -from setuptools import setup - - -setup() diff --git a/tests/utils/fixtures/setups/pendulum/setup.py b/tests/utils/fixtures/setups/pendulum/setup.py deleted file mode 100644 index 705bd404289..00000000000 --- a/tests/utils/fixtures/setups/pendulum/setup.py +++ /dev/null @@ -1,55 +0,0 @@ -from __future__ import annotations - -from distutils.core import setup - -from build import * # nopycln: import - - -packages = [ - "pendulum", - "pendulum._extensions", - "pendulum.formatting", - "pendulum.locales", - "pendulum.locales.da", - "pendulum.locales.de", - "pendulum.locales.en", - "pendulum.locales.es", - "pendulum.locales.fa", - "pendulum.locales.fo", - "pendulum.locales.fr", - "pendulum.locales.ko", - "pendulum.locales.lt", - "pendulum.locales.pt_br", - "pendulum.locales.zh", - "pendulum.mixins", - "pendulum.parsing", - "pendulum.parsing.exceptions", - "pendulum.tz", - "pendulum.tz.data", - "pendulum.tz.zoneinfo", - "pendulum.utils", -] - -package_data = {"": ["*"]} - -install_requires = ["python-dateutil>=2.6,<3.0", "pytzdata>=2018.3"] - -extras_require = {':python_version < "3.5"': ["typing>=3.6,<4.0"]} - -setup_kwargs = { - "name": "pendulum", - "version": "2.0.4", - "description": "Python datetimes made easy", - "author": "Sébastien Eustace", - "author_email": "sebastien@eustace.io", - "url": "https://pendulum.eustace.io", - "packages": packages, - "package_data": package_data, - "install_requires": install_requires, - "extras_require": extras_require, - "python_requires": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", -} - -build(setup_kwargs) - -setup(**setup_kwargs) diff --git a/tests/utils/fixtures/setups/pyyaml/setup.py b/tests/utils/fixtures/setups/pyyaml/setup.py deleted file mode 100644 index ce865368d2a..00000000000 --- a/tests/utils/fixtures/setups/pyyaml/setup.py +++ /dev/null @@ -1,356 +0,0 @@ -from __future__ import annotations - - -NAME = "PyYAML" -VERSION = "3.13" -DESCRIPTION = "YAML parser and emitter for Python" -LONG_DESCRIPTION = """\ -YAML is a data serialization format designed for human readability -and interaction with scripting languages. PyYAML is a YAML parser -and emitter for Python. - -PyYAML features a complete YAML 1.1 parser, Unicode support, pickle -support, capable extension API, and sensible error messages. PyYAML -supports standard YAML tags and provides Python-specific tags that -allow to represent an arbitrary Python object. - -PyYAML is applicable for a broad range of tasks from complex -configuration files to object serialization and persistence.""" -AUTHOR = "Kirill Simonov" -AUTHOR_EMAIL = "xi@resolvent.net" -LICENSE = "MIT" -PLATFORMS = "Any" -URL = "http://pyyaml.org/wiki/PyYAML" -DOWNLOAD_URL = f"http://pyyaml.org/download/pyyaml/{NAME}-{VERSION}.tar.gz" -CLASSIFIERS = [ - "Development Status :: 5 - Production/Stable", - "Intended Audience :: Developers", - "License :: OSI Approved :: MIT License", - "Operating System :: OS Independent", - "Programming Language :: Python", - "Programming Language :: Python :: 2", - "Programming Language :: Python :: 2.7", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.4", - "Programming Language :: Python :: 3.5", - "Topic :: Software Development :: Libraries :: Python Modules", - "Topic :: Text Processing :: Markup", -] - - -LIBYAML_CHECK = """ -#include - -int main(void) { - yaml_parser_t parser; - yaml_emitter_t emitter; - - yaml_parser_initialize(&parser); - yaml_parser_delete(&parser); - - yaml_emitter_initialize(&emitter); - yaml_emitter_delete(&emitter); - - return 0; -} -""" - - -import os.path -import platform -import sys - -from distutils import log -from distutils.command.bdist_rpm import bdist_rpm as _bdist_rpm -from distutils.command.build_ext import build_ext as _build_ext -from distutils.core import Command -from distutils.core import Distribution as _Distribution -from distutils.core import Extension as _Extension -from distutils.core import setup -from distutils.dir_util import mkpath -from distutils.errors import CompileError -from distutils.errors import DistutilsError -from distutils.errors import DistutilsPlatformError -from distutils.errors import LinkError - - -if "setuptools.extension" in sys.modules: - _Extension = sys.modules["setuptools.extension"]._Extension - sys.modules["distutils.core"].Extension = _Extension - sys.modules["distutils.extension"].Extension = _Extension - sys.modules["distutils.command.build_ext"].Extension = _Extension - -with_cython = False -try: - from Cython.Distutils import build_ext as _build_ext - from Cython.Distutils.extension import Extension as _Extension - - with_cython = True -except ImportError: - pass - -try: - from wheel.bdist_wheel import bdist_wheel -except ImportError: - bdist_wheel = None - - -class Distribution(_Distribution): - def __init__(self, attrs=None): - _Distribution.__init__(self, attrs) - if not self.ext_modules: - return - for idx in range(len(self.ext_modules) - 1, -1, -1): - ext = self.ext_modules[idx] - if not isinstance(ext, Extension): - continue - setattr(self, ext.attr_name, None) - self.global_options = [ - ( - ext.option_name, - None, - "include %s (default if %s is available)" - % (ext.feature_description, ext.feature_name), - ), - (ext.neg_option_name, None, "exclude %s" % ext.feature_description), - ] + self.global_options - self.negative_opt = self.negative_opt.copy() - self.negative_opt[ext.neg_option_name] = ext.option_name - - def has_ext_modules(self): - if not self.ext_modules: - return False - for ext in self.ext_modules: - with_ext = self.ext_status(ext) - if with_ext is None or with_ext: - return True - return False - - def ext_status(self, ext): - implementation = platform.python_implementation() - if implementation != "CPython": - return False - if isinstance(ext, Extension): - with_ext = getattr(self, ext.attr_name) - return with_ext - else: - return True - - -class Extension(_Extension): - def __init__( - self, name, sources, feature_name, feature_description, feature_check, **kwds - ): - if not with_cython: - for filename in sources[:]: - base, ext = os.path.splitext(filename) - if ext == ".pyx": - sources.remove(filename) - sources.append("%s.c" % base) - _Extension.__init__(self, name, sources, **kwds) - self.feature_name = feature_name - self.feature_description = feature_description - self.feature_check = feature_check - self.attr_name = "with_" + feature_name.replace("-", "_") - self.option_name = "with-" + feature_name - self.neg_option_name = "without-" + feature_name - - -class build_ext(_build_ext): - def run(self): - optional = True - disabled = True - for ext in self.extensions: - with_ext = self.distribution.ext_status(ext) - if with_ext is None: - disabled = False - elif with_ext: - optional = False - disabled = False - break - if disabled: - return - try: - _build_ext.run(self) - except DistutilsPlatformError: - exc = sys.exc_info()[1] - if optional: - log.warn(str(exc)) - log.warn("skipping build_ext") - else: - raise - - def get_source_files(self): - self.check_extensions_list(self.extensions) - filenames = [] - for ext in self.extensions: - if with_cython: - self.cython_sources(ext.sources, ext) - for filename in ext.sources: - filenames.append(filename) - base = os.path.splitext(filename)[0] - for ext in ["c", "h", "pyx", "pxd"]: - filename = f"{base}.{ext}" - if filename not in filenames and os.path.isfile(filename): - filenames.append(filename) - return filenames - - def get_outputs(self): - self.check_extensions_list(self.extensions) - outputs = [] - for ext in self.extensions: - fullname = self.get_ext_fullname(ext.name) - filename = os.path.join(self.build_lib, self.get_ext_filename(fullname)) - if os.path.isfile(filename): - outputs.append(filename) - return outputs - - def build_extensions(self): - self.check_extensions_list(self.extensions) - for ext in self.extensions: - with_ext = self.distribution.ext_status(ext) - if with_ext is None: - with_ext = self.check_extension_availability(ext) - if not with_ext: - continue - if with_cython: - ext.sources = self.cython_sources(ext.sources, ext) - self.build_extension(ext) - - def check_extension_availability(self, ext): - cache = os.path.join(self.build_temp, "check_%s.out" % ext.feature_name) - if not self.force and os.path.isfile(cache): - data = open(cache).read().strip() - if data == "1": - return True - elif data == "0": - return False - mkpath(self.build_temp) - src = os.path.join(self.build_temp, "check_%s.c" % ext.feature_name) - open(src, "w").write(ext.feature_check) - log.info("checking if %s is compilable" % ext.feature_name) - try: - [obj] = self.compiler.compile( - [src], - macros=ext.define_macros + [(undef,) for undef in ext.undef_macros], - include_dirs=ext.include_dirs, - extra_postargs=(ext.extra_compile_args or []), - depends=ext.depends, - ) - except CompileError: - log.warn("") - log.warn( - "%s is not found or a compiler error: forcing --%s" - % (ext.feature_name, ext.neg_option_name) - ) - log.warn( - "(if %s is installed correctly, you may need to" % ext.feature_name - ) - log.warn(" specify the option --include-dirs or uncomment and") - log.warn(" modify the parameter include_dirs in setup.cfg)") - open(cache, "w").write("0\n") - return False - prog = "check_%s" % ext.feature_name - log.info("checking if %s is linkable" % ext.feature_name) - try: - self.compiler.link_executable( - [obj], - prog, - output_dir=self.build_temp, - libraries=ext.libraries, - library_dirs=ext.library_dirs, - runtime_library_dirs=ext.runtime_library_dirs, - extra_postargs=(ext.extra_link_args or []), - ) - except LinkError: - log.warn("") - log.warn( - "%s is not found or a linker error: forcing --%s" - % (ext.feature_name, ext.neg_option_name) - ) - log.warn( - "(if %s is installed correctly, you may need to" % ext.feature_name - ) - log.warn(" specify the option --library-dirs or uncomment and") - log.warn(" modify the parameter library_dirs in setup.cfg)") - open(cache, "w").write("0\n") - return False - open(cache, "w").write("1\n") - return True - - -class bdist_rpm(_bdist_rpm): - def _make_spec_file(self): - argv0 = sys.argv[0] - features = [] - for ext in self.distribution.ext_modules: - if not isinstance(ext, Extension): - continue - with_ext = getattr(self.distribution, ext.attr_name) - if with_ext is None: - continue - if with_ext: - features.append("--" + ext.option_name) - else: - features.append("--" + ext.neg_option_name) - sys.argv[0] = " ".join([argv0] + features) - spec_file = _bdist_rpm._make_spec_file(self) - sys.argv[0] = argv0 - return spec_file - - -class test(Command): - - user_options = [] - - def initialize_options(self): - pass - - def finalize_options(self): - pass - - def run(self): - build_cmd = self.get_finalized_command("build") - build_cmd.run() - sys.path.insert(0, build_cmd.build_lib) - sys.path.insert(0, "tests/lib3") - import test_all - - if not test_all.main([]): - raise DistutilsError("Tests failed") - - -cmdclass = {"build_ext": build_ext, "bdist_rpm": bdist_rpm, "test": test} -if bdist_wheel: - cmdclass["bdist_wheel"] = bdist_wheel - - -if __name__ == "__main__": - - setup( - name=NAME, - version=VERSION, - description=DESCRIPTION, - long_description=LONG_DESCRIPTION, - author=AUTHOR, - author_email=AUTHOR_EMAIL, - license=LICENSE, - platforms=PLATFORMS, - url=URL, - download_url=DOWNLOAD_URL, - classifiers=CLASSIFIERS, - package_dir={"": "lib3"}, - packages=["yaml"], - ext_modules=[ - Extension( - "_yaml", - ["ext/_yaml.pyx"], - "libyaml", - "LibYAML bindings", - LIBYAML_CHECK, - libraries=["yaml"], - ) - ], - distclass=Distribution, - cmdclass=cmdclass, - ) diff --git a/tests/utils/fixtures/setups/requests/setup.py b/tests/utils/fixtures/setups/requests/setup.py deleted file mode 100644 index e8c2df313b1..00000000000 --- a/tests/utils/fixtures/setups/requests/setup.py +++ /dev/null @@ -1,113 +0,0 @@ -#!/usr/bin/env python -# Learn more: https://github.com/kennethreitz/setup.py -from __future__ import annotations - -import os -import sys - -from codecs import open - -from setuptools import setup -from setuptools.command.test import test as TestCommand - - -here = os.path.abspath(os.path.dirname(__file__)) - - -class PyTest(TestCommand): - user_options = [("pytest-args=", "a", "Arguments to pass into py.test")] - - def initialize_options(self): - TestCommand.initialize_options(self) - try: - from multiprocessing import cpu_count - - self.pytest_args = ["-n", str(cpu_count()), "--boxed"] - except (ImportError, NotImplementedError): - self.pytest_args = ["-n", "1", "--boxed"] - - def finalize_options(self): - TestCommand.finalize_options(self) - self.test_args = [] - self.test_suite = True - - def run_tests(self): - import pytest - - errno = pytest.main(self.pytest_args) - sys.exit(errno) - - -# 'setup.py publish' shortcut. -if sys.argv[-1] == "publish": - os.system("python setup.py sdist bdist_wheel") - os.system("twine upload dist/*") - sys.exit() - -packages = ["requests"] - -requires = [ - "chardet>=3.0.2,<3.1.0", - "idna>=2.5,<2.8", - "urllib3>=1.21.1,<1.25", - "certifi>=2017.4.17", -] -test_requirements = [ - "pytest-httpbin==0.0.7", - "pytest-cov", - "pytest-mock", - "pytest-xdist", - "PySocks>=1.5.6, !=1.5.7", - "pytest>=2.8.0", -] - -about = {} -with open(os.path.join(here, "requests", "__version__.py"), "r", "utf-8") as f: - exec(f.read(), about) - -with open("README.md", "r", "utf-8") as f: - readme = f.read() -with open("HISTORY.md", "r", "utf-8") as f: - history = f.read() - -setup( - name=about["__title__"], - version=about["__version__"], - description=about["__description__"], - long_description=readme, - long_description_content_type="text/markdown", - author=about["__author__"], - author_email=about["__author_email__"], - url=about["__url__"], - packages=packages, - package_data={"": ["LICENSE", "NOTICE"], "requests": ["*.pem"]}, - package_dir={"requests": "requests"}, - include_package_data=True, - python_requires=">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", - install_requires=requires, - license=about["__license__"], - zip_safe=False, - classifiers=[ - "Development Status :: 5 - Production/Stable", - "Intended Audience :: Developers", - "Natural Language :: English", - "License :: OSI Approved :: Apache Software License", - "Programming Language :: Python", - "Programming Language :: Python :: 2", - "Programming Language :: Python :: 2.7", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.4", - "Programming Language :: Python :: 3.5", - "Programming Language :: Python :: 3.6", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: Implementation :: CPython", - "Programming Language :: Python :: Implementation :: PyPy", - ], - cmdclass={"test": PyTest}, - tests_require=test_requirements, - extras_require={ - "security": ["pyOpenSSL >= 0.14", "cryptography>=1.3.4", "idna>=2.0.0"], - "socks": ["PySocks>=1.5.6, !=1.5.7"], - 'socks:sys_platform == "win32" and python_version == "2.7"': ["win_inet_pton"], - }, -) diff --git a/tests/utils/fixtures/setups/setuptools_setup/setup.py b/tests/utils/fixtures/setups/setuptools_setup/setup.py deleted file mode 100644 index c8e0dafe38c..00000000000 --- a/tests/utils/fixtures/setups/setuptools_setup/setup.py +++ /dev/null @@ -1,14 +0,0 @@ -from __future__ import annotations - -import setuptools - - -setuptools.setup( - name="my_package", - version="0.1.2", - author="John Doe", - author_email="john@example.orh", - description="Just a description", - url="https://example.org", - packages=setuptools.find_packages(), -) diff --git a/tests/utils/fixtures/setups/sqlalchemy/setup.py b/tests/utils/fixtures/setups/sqlalchemy/setup.py deleted file mode 100644 index b44d21509e4..00000000000 --- a/tests/utils/fixtures/setups/sqlalchemy/setup.py +++ /dev/null @@ -1,206 +0,0 @@ -from __future__ import annotations - -import os -import platform -import re -import sys - -from distutils.command.build_ext import build_ext -from distutils.errors import CCompilerError -from distutils.errors import DistutilsExecError -from distutils.errors import DistutilsPlatformError - -from setuptools import Distribution as _Distribution -from setuptools import Extension -from setuptools import find_packages -from setuptools import setup -from setuptools.command.test import test as TestCommand - - -cmdclass = {} - -cpython = platform.python_implementation() == "CPython" - -ext_modules = [ - Extension( - "sqlalchemy.cprocessors", sources=["lib/sqlalchemy/cextension/processors.c"] - ), - Extension( - "sqlalchemy.cresultproxy", sources=["lib/sqlalchemy/cextension/resultproxy.c"] - ), - Extension("sqlalchemy.cutils", sources=["lib/sqlalchemy/cextension/utils.c"]), -] - -ext_errors = (CCompilerError, DistutilsExecError, DistutilsPlatformError) -if sys.platform == "win32": - # 2.6's distutils.msvc9compiler can raise an IOError when failing to - # find the compiler - ext_errors += (IOError,) - - -class BuildFailed(Exception): - def __init__(self): - self.cause = sys.exc_info()[1] # work around py 2/3 different syntax - - -class ve_build_ext(build_ext): - # This class allows C extension building to fail. - - def run(self): - try: - build_ext.run(self) - except DistutilsPlatformError: - raise BuildFailed() - - def build_extension(self, ext): - try: - build_ext.build_extension(self, ext) - except ext_errors: - raise BuildFailed() - except ValueError: - # this can happen on Windows 64 bit, see Python issue 7511 - if "'path'" in str(sys.exc_info()[1]): # works with both py 2/3 - raise BuildFailed() - raise - - -cmdclass["build_ext"] = ve_build_ext - - -class Distribution(_Distribution): - def has_ext_modules(self): - # We want to always claim that we have ext_modules. This will be fine - # if we don't actually have them (such as on PyPy) because nothing - # will get built, however we don't want to provide an overally broad - # Wheel package when building a wheel without C support. This will - # ensure that Wheel knows to treat us as if the build output is - # platform specific. - return True - - -class PyTest(TestCommand): - # from http://pytest.org/latest/goodpractices.html\ - # #integrating-with-setuptools-python-setup-py-test-pytest-runner - # TODO: prefer pytest-runner package at some point, however it was - # not working at the time of this comment. - user_options = [("pytest-args=", "a", "Arguments to pass to py.test")] - - default_options = ["-n", "4", "-q", "--nomemory"] - - def initialize_options(self): - TestCommand.initialize_options(self) - self.pytest_args = "" - - def finalize_options(self): - TestCommand.finalize_options(self) - self.test_args = [] - self.test_suite = True - - def run_tests(self): - import shlex - - # import here, cause outside the eggs aren't loaded - import pytest - - errno = pytest.main(self.default_options + shlex.split(self.pytest_args)) - sys.exit(errno) - - -cmdclass["test"] = PyTest - - -def status_msgs(*msgs): - print("*" * 75) - for msg in msgs: - print(msg) - print("*" * 75) - - -with open( - os.path.join(os.path.dirname(__file__), "lib", "sqlalchemy", "__init__.py") -) as v_file: - VERSION = re.compile(r".*__version__ = '(.*?)'", re.S).match(v_file.read()).group(1) - -with open(os.path.join(os.path.dirname(__file__), "README.rst")) as r_file: - readme = r_file.read() - - -def run_setup(with_cext): - kwargs = {} - if with_cext: - kwargs["ext_modules"] = ext_modules - else: - kwargs["ext_modules"] = [] - - setup( - name="SQLAlchemy", - version=VERSION, - description="Database Abstraction Library", - author="Mike Bayer", - author_email="mike_mp@zzzcomputing.com", - url="http://www.sqlalchemy.org", - packages=find_packages("lib"), - package_dir={"": "lib"}, - license="MIT License", - cmdclass=cmdclass, - tests_require=["pytest >= 2.5.2", "mock", "pytest-xdist"], - long_description=readme, - classifiers=[ - "Development Status :: 5 - Production/Stable", - "Intended Audience :: Developers", - "License :: OSI Approved :: MIT License", - "Programming Language :: Python", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: Implementation :: CPython", - "Programming Language :: Python :: Implementation :: PyPy", - "Topic :: Database :: Front-Ends", - "Operating System :: OS Independent", - ], - distclass=Distribution, - extras_require={ - "mysql": ["mysqlclient"], - "pymysql": ["pymysql"], - "postgresql": ["psycopg2"], - "postgresql_pg8000": ["pg8000"], - "postgresql_psycopg2cffi": ["psycopg2cffi"], - "oracle": ["cx_oracle"], - "mssql_pyodbc": ["pyodbc"], - "mssql_pymssql": ["pymssql"], - }, - **kwargs - ) - - -if not cpython: - run_setup(False) - status_msgs( - "WARNING: C extensions are not supported on " - + "this Python platform, speedups are not enabled.", - "Plain-Python build succeeded.", - ) -elif os.environ.get("DISABLE_SQLALCHEMY_CEXT"): - run_setup(False) - status_msgs( - "DISABLE_SQLALCHEMY_CEXT is set; " + "not attempting to build C extensions.", - "Plain-Python build succeeded.", - ) - -else: - try: - run_setup(True) - except BuildFailed as exc: - status_msgs( - exc.cause, - "WARNING: The C extension could not be compiled, " - + "speedups are not enabled.", - "Failure information, if any, is above.", - "Retrying the build without the C extension now.", - ) - - run_setup(False) - - status_msgs( - "WARNING: The C extension could not be compiled, " - + "speedups are not enabled.", - "Plain-Python build succeeded.", - ) diff --git a/tests/utils/fixtures/setups/with-setup-cfg-attr/setup.cfg b/tests/utils/fixtures/setups/with-setup-cfg-attr/setup.cfg deleted file mode 100644 index c45d1e62869..00000000000 --- a/tests/utils/fixtures/setups/with-setup-cfg-attr/setup.cfg +++ /dev/null @@ -1,19 +0,0 @@ -[metadata] -name = with-setup-cfg-attr -version = attr: with_setup_cfg_attr.__version__ - -[options] -zip_safe = true -python_requires = >=2.6,!=3.0,!=3.1,!=3.2,!=3.3 -setup_requires = setuptools>=36.2.2 -install_requires = - six - tomlkit - -[options.extras_require] -validation = - cerberus -tests = - pytest - pytest-xdist - pytest-cov diff --git a/tests/utils/fixtures/setups/with-setup-cfg-attr/setup.py b/tests/utils/fixtures/setups/with-setup-cfg-attr/setup.py deleted file mode 100644 index 536cf1785ef..00000000000 --- a/tests/utils/fixtures/setups/with-setup-cfg-attr/setup.py +++ /dev/null @@ -1,6 +0,0 @@ -from __future__ import annotations - -from setuptools import setup - - -setup() diff --git a/tests/utils/fixtures/setups/with-setup-cfg-minimal/setup.cfg b/tests/utils/fixtures/setups/with-setup-cfg-minimal/setup.cfg deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/tests/utils/fixtures/setups/with-setup-cfg-minimal/setup.py b/tests/utils/fixtures/setups/with-setup-cfg-minimal/setup.py deleted file mode 100644 index 536cf1785ef..00000000000 --- a/tests/utils/fixtures/setups/with-setup-cfg-minimal/setup.py +++ /dev/null @@ -1,6 +0,0 @@ -from __future__ import annotations - -from setuptools import setup - - -setup() diff --git a/tests/utils/fixtures/setups/with-setup-cfg/setup.cfg b/tests/utils/fixtures/setups/with-setup-cfg/setup.cfg deleted file mode 100644 index edae13166af..00000000000 --- a/tests/utils/fixtures/setups/with-setup-cfg/setup.cfg +++ /dev/null @@ -1,20 +0,0 @@ -[metadata] -name = with-setup-cfg -version = 1.2.3 -description = Package with setup.cfg - -[options] -zip_safe = true -python_requires = >=2.6,!=3.0,!=3.1,!=3.2,!=3.3 -setup_requires = setuptools>=36.2.2 -install_requires = - six - tomlkit - -[options.extras_require] -validation = - cerberus -tests = - pytest - pytest-xdist - pytest-cov diff --git a/tests/utils/fixtures/setups/with-setup-cfg/setup.py b/tests/utils/fixtures/setups/with-setup-cfg/setup.py deleted file mode 100644 index 536cf1785ef..00000000000 --- a/tests/utils/fixtures/setups/with-setup-cfg/setup.py +++ /dev/null @@ -1,6 +0,0 @@ -from __future__ import annotations - -from setuptools import setup - - -setup() diff --git a/tests/utils/test_python_manager.py b/tests/utils/test_python_manager.py index 48bcb917638..9113bd1bf4d 100644 --- a/tests/utils/test_python_manager.py +++ b/tests/utils/test_python_manager.py @@ -74,11 +74,11 @@ def test_get_preferred_python_use_poetry_python_disabled_fallback( config: Config, mocker: MockerFixture ) -> None: config.config["virtualenvs"]["use-poetry-python"] = False - with mocker.patch( + mocker.patch( "subprocess.check_output", side_effect=subprocess.CalledProcessError(1, "some command"), - ): - python = Python.get_preferred_python(config) + ) + python = Python.get_preferred_python(config) assert python.executable == Path(sys.executable)