From d8a60db6b45c998c57788496031e99d8356b3072 Mon Sep 17 00:00:00 2001 From: John Sirois Date: Thu, 12 Sep 2024 11:00:54 -0700 Subject: [PATCH] Add `--scie-only` & `--scie-name-style`. (#2523) These options allow the files output when using `--scie {eager,lazy}` scies to be better controlled. The `--scie-only` option provides a way to ensure no PEX file is output, just the resulting scie. The `--scie-name-style` option allows control over how the scie's target platform is incorporated in the scie file name. --- .github/workflows/ci.yml | 4 +- .github/workflows/release.yml | 12 +- CHANGES.md | 36 + .../pex_build/hatchling/build_hook.py | 2 +- package/__init__.py | 2 + package/complete-platforms/linux-aarch64.json | 496 ++++ package/complete-platforms/linux-x86_64.json | 874 ++++++ package/complete-platforms/macos-aarch64.json | 604 ++++ package/complete-platforms/macos-x86_64.json | 2629 +++++++++++++++++ package/package.toml | 6 +- package/pex-scie.lock | 138 + package/scie_config.py | 31 + pex/bin/pex.py | 2 + pex/scie/__init__.py | 89 +- pex/scie/model.py | 12 + pex/scie/science.py | 31 +- pex/version.py | 2 +- ...ld_cache_image.py => build-cache-image.py} | 0 scripts/{build_docs.py => build-docs.py} | 0 scripts/{package.py => create-packages.py} | 136 + ...mbed_virtualenv.py => embed-virtualenv.py} | 0 scripts/format.py | 13 +- ..._scie_platform.py => gen-scie-platform.py} | 23 +- scripts/lint.py | 1 + scripts/typecheck.py | 4 +- tests/integration/scie/test_pex_scie.py | 43 + tests/integration/test_issue_1872.py | 24 +- tests/integration/test_issue_1995.py | 10 +- tox.ini | 13 +- 29 files changed, 5167 insertions(+), 70 deletions(-) create mode 100644 package/__init__.py create mode 100644 package/complete-platforms/linux-aarch64.json create mode 100644 package/complete-platforms/linux-x86_64.json create mode 100644 package/complete-platforms/macos-aarch64.json create mode 100644 package/complete-platforms/macos-x86_64.json create mode 100644 package/pex-scie.lock create mode 100644 package/scie_config.py rename scripts/{build_cache_image.py => build-cache-image.py} (100%) rename scripts/{build_docs.py => build-docs.py} (100%) rename scripts/{package.py => create-packages.py} (58%) rename scripts/{embed_virtualenv.py => embed-virtualenv.py} (100%) rename scripts/{gen_scie_platform.py => gen-scie-platform.py} (94%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index eea98d86d..eedcfa89d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -53,7 +53,9 @@ jobs: - name: Check Packaging uses: pantsbuild/actions/run-tox@b16b9cf47cd566acfe217b1dafc5b452e27e6fd7 with: - tox-env: package -- --additional-format sdist --additional-format wheel --embed-docs --clean-docs + tox-env: >- + package -- --additional-format sdist --additional-format wheel --embed-docs --clean-docs + --scies --gen-md-table-of-hash-and-size dist/hashes.md - name: Check Docs uses: pantsbuild/actions/run-tox@b16b9cf47cd566acfe217b1dafc5b452e27e6fd7 with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c99e12646..6c25099a5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -88,7 +88,7 @@ jobs: - name: Package Pex ${{ needs.determine-tag.outputs.release-tag }} PEX uses: pantsbuild/actions/run-tox@b16b9cf47cd566acfe217b1dafc5b452e27e6fd7 with: - tox-env: package -- --embed-docs + tox-env: package -- --embed-docs --scies --gen-md-table-of-hash-and-size dist/hashes.md - name: Generate Pex ${{ needs.determine-tag.outputs.release-tag }} PDF uses: pantsbuild/actions/run-tox@b16b9cf47cd566acfe217b1dafc5b452e27e6fd7 with: @@ -97,7 +97,7 @@ jobs: uses: actions/attest-build-provenance@v1 with: subject-path: | - dist/pex + dist/pex* dist/docs/pdf/pex.pdf - name: Prepare Changelog id: prepare-changelog @@ -105,6 +105,12 @@ jobs: with: changelog-file: ${{ github.workspace }}/CHANGES.md version: ${{ needs.determine-tag.outputs.release-version }} + - name: Append Hashes to Changelog + run: | + changelog_tmp="$(mktemp)" + cat "${{ steps.prepare-changelog.outputs.changelog-file }}" <(echo '***') dist/hashes.md \ + > "${changelog_tmp}" + mv "${changelog_tmp}" "${{ steps.prepare-changelog.outputs.changelog-file }}" - name: Create ${{ needs.determine-tag.outputs.release-tag }} Release uses: softprops/action-gh-release@v2 with: @@ -114,7 +120,7 @@ jobs: draft: false prerelease: false files: | - dist/pex + dist/pex* dist/docs/pdf/pex.pdf fail_on_unmatched_files: true discussion_category_name: Announcements diff --git a/CHANGES.md b/CHANGES.md index 90290589d..06a682e66 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,41 @@ # Release Notes +## 2.18.0 + +This release adds support for `pex3 cache {dir,info,purge}` for +inspecting and managing the Pex cache. Notably, the `pex3 cache purge` +command is safe in the face of concurrent PEX runs, waiting for in +flight PEX runs to complete and blocking new runs from starting once the +purge is in progress. N.B.: when using `pex3 cache purge` it is best to +install Pex with the 'management' extra; e.g.: +`pip install pex[management]`. Alternatively, one of the new Pex scie +binary releases can be used. + +In order to release a Pex binary that can support the new `pex3` cache +management commands first class, a set of enhancements to project +locking and scie generation were added. When using `--project` you can +now specify extras; e.g.: `--project ./the/project-dir[extra1,extra2]`. +When creating a Pex scie, you can now better control the output files +using `--scie-only` to ensure no PEX file is emitted and +`--scie-name-style` to control how the scie target platform name is +mixed into the scie output file name. Additionally, you can request one +or more shasum-compatible checksum files be emitted for each scie with +`--scie-hash-alg`. + +On the locking front, an obscure bug locking project releases that +contain artifacts that mis-report their version number via their file +name has been fixed. + +Finally, the vendored Pip has had its own vendored CA cert bundle +upgraded from that in certifi 2024.7.4 to that in certifi 2024.8.30. + +* Fix locking of sdists rejected by Pip. (#2524) +* Add `--scie-only` & `--scie-name-style`. (#2523) +* Support `--project` extras. (#2522) +* Support shasum file gen via `--scie-hash-alg`. (#2520) +* Update vendored Pip's CA cert bundle. (#2517) +* Introduce `pex3 cache {dir,info,purge}`. (#2513) + ## 2.17.0 This release brings support for overriding the versions of setuptools diff --git a/build-backend/pex_build/hatchling/build_hook.py b/build-backend/pex_build/hatchling/build_hook.py index 1b89faeda..f0beb03c2 100644 --- a/build-backend/pex_build/hatchling/build_hook.py +++ b/build-backend/pex_build/hatchling/build_hook.py @@ -30,7 +30,7 @@ def initialize( subprocess.check_call( args=[ sys.executable, - os.path.join(self.root, "scripts", "build_docs.py"), + os.path.join(self.root, "scripts", "build-docs.py"), "--clean-html", out_dir, ] diff --git a/package/__init__.py b/package/__init__.py new file mode 100644 index 000000000..87fb2ed9a --- /dev/null +++ b/package/__init__.py @@ -0,0 +1,2 @@ +# Copyright 2024 Pex project contributors. +# Licensed under the Apache License, Version 2.0 (see LICENSE). diff --git a/package/complete-platforms/linux-aarch64.json b/package/complete-platforms/linux-aarch64.json new file mode 100644 index 000000000..b133437e4 --- /dev/null +++ b/package/complete-platforms/linux-aarch64.json @@ -0,0 +1,496 @@ +{ + "__meta_data__": { + "comment": "DO NOT EDIT - Generated via: `tox -e gen-scie-platform -- --pbs-release 20240909 --python-version 3.12.6`.", + "pbs-release": "20240909", + "python-version": "3.12.6" + }, + "compatible_tags": [ + "cp312-cp312-manylinux_2_31_aarch64", + "cp312-cp312-manylinux_2_30_aarch64", + "cp312-cp312-manylinux_2_29_aarch64", + "cp312-cp312-manylinux_2_28_aarch64", + "cp312-cp312-manylinux_2_27_aarch64", + "cp312-cp312-manylinux_2_26_aarch64", + "cp312-cp312-manylinux_2_25_aarch64", + "cp312-cp312-manylinux_2_24_aarch64", + "cp312-cp312-manylinux_2_23_aarch64", + "cp312-cp312-manylinux_2_22_aarch64", + "cp312-cp312-manylinux_2_21_aarch64", + "cp312-cp312-manylinux_2_20_aarch64", + "cp312-cp312-manylinux_2_19_aarch64", + "cp312-cp312-manylinux_2_18_aarch64", + "cp312-cp312-manylinux_2_17_aarch64", + "cp312-cp312-manylinux2014_aarch64", + "cp312-cp312-linux_aarch64", + "cp312-abi3-manylinux_2_31_aarch64", + "cp312-abi3-manylinux_2_30_aarch64", + "cp312-abi3-manylinux_2_29_aarch64", + "cp312-abi3-manylinux_2_28_aarch64", + "cp312-abi3-manylinux_2_27_aarch64", + "cp312-abi3-manylinux_2_26_aarch64", + "cp312-abi3-manylinux_2_25_aarch64", + "cp312-abi3-manylinux_2_24_aarch64", + "cp312-abi3-manylinux_2_23_aarch64", + "cp312-abi3-manylinux_2_22_aarch64", + "cp312-abi3-manylinux_2_21_aarch64", + "cp312-abi3-manylinux_2_20_aarch64", + "cp312-abi3-manylinux_2_19_aarch64", + "cp312-abi3-manylinux_2_18_aarch64", + "cp312-abi3-manylinux_2_17_aarch64", + "cp312-abi3-manylinux2014_aarch64", + "cp312-abi3-linux_aarch64", + "cp312-none-manylinux_2_31_aarch64", + "cp312-none-manylinux_2_30_aarch64", + "cp312-none-manylinux_2_29_aarch64", + "cp312-none-manylinux_2_28_aarch64", + "cp312-none-manylinux_2_27_aarch64", + "cp312-none-manylinux_2_26_aarch64", + "cp312-none-manylinux_2_25_aarch64", + "cp312-none-manylinux_2_24_aarch64", + "cp312-none-manylinux_2_23_aarch64", + "cp312-none-manylinux_2_22_aarch64", + "cp312-none-manylinux_2_21_aarch64", + "cp312-none-manylinux_2_20_aarch64", + "cp312-none-manylinux_2_19_aarch64", + "cp312-none-manylinux_2_18_aarch64", + "cp312-none-manylinux_2_17_aarch64", + "cp312-none-manylinux2014_aarch64", + "cp312-none-linux_aarch64", + "cp311-abi3-manylinux_2_31_aarch64", + "cp311-abi3-manylinux_2_30_aarch64", + "cp311-abi3-manylinux_2_29_aarch64", + "cp311-abi3-manylinux_2_28_aarch64", + "cp311-abi3-manylinux_2_27_aarch64", + "cp311-abi3-manylinux_2_26_aarch64", + "cp311-abi3-manylinux_2_25_aarch64", + "cp311-abi3-manylinux_2_24_aarch64", + "cp311-abi3-manylinux_2_23_aarch64", + "cp311-abi3-manylinux_2_22_aarch64", + "cp311-abi3-manylinux_2_21_aarch64", + "cp311-abi3-manylinux_2_20_aarch64", + "cp311-abi3-manylinux_2_19_aarch64", + "cp311-abi3-manylinux_2_18_aarch64", + "cp311-abi3-manylinux_2_17_aarch64", + "cp311-abi3-manylinux2014_aarch64", + "cp311-abi3-linux_aarch64", + "cp310-abi3-manylinux_2_31_aarch64", + "cp310-abi3-manylinux_2_30_aarch64", + "cp310-abi3-manylinux_2_29_aarch64", + "cp310-abi3-manylinux_2_28_aarch64", + "cp310-abi3-manylinux_2_27_aarch64", + "cp310-abi3-manylinux_2_26_aarch64", + "cp310-abi3-manylinux_2_25_aarch64", + "cp310-abi3-manylinux_2_24_aarch64", + "cp310-abi3-manylinux_2_23_aarch64", + "cp310-abi3-manylinux_2_22_aarch64", + "cp310-abi3-manylinux_2_21_aarch64", + "cp310-abi3-manylinux_2_20_aarch64", + "cp310-abi3-manylinux_2_19_aarch64", + "cp310-abi3-manylinux_2_18_aarch64", + "cp310-abi3-manylinux_2_17_aarch64", + "cp310-abi3-manylinux2014_aarch64", + "cp310-abi3-linux_aarch64", + "cp39-abi3-manylinux_2_31_aarch64", + "cp39-abi3-manylinux_2_30_aarch64", + "cp39-abi3-manylinux_2_29_aarch64", + "cp39-abi3-manylinux_2_28_aarch64", + "cp39-abi3-manylinux_2_27_aarch64", + "cp39-abi3-manylinux_2_26_aarch64", + "cp39-abi3-manylinux_2_25_aarch64", + "cp39-abi3-manylinux_2_24_aarch64", + "cp39-abi3-manylinux_2_23_aarch64", + "cp39-abi3-manylinux_2_22_aarch64", + "cp39-abi3-manylinux_2_21_aarch64", + "cp39-abi3-manylinux_2_20_aarch64", + "cp39-abi3-manylinux_2_19_aarch64", + "cp39-abi3-manylinux_2_18_aarch64", + "cp39-abi3-manylinux_2_17_aarch64", + "cp39-abi3-manylinux2014_aarch64", + "cp39-abi3-linux_aarch64", + "cp38-abi3-manylinux_2_31_aarch64", + "cp38-abi3-manylinux_2_30_aarch64", + "cp38-abi3-manylinux_2_29_aarch64", + "cp38-abi3-manylinux_2_28_aarch64", + "cp38-abi3-manylinux_2_27_aarch64", + "cp38-abi3-manylinux_2_26_aarch64", + "cp38-abi3-manylinux_2_25_aarch64", + "cp38-abi3-manylinux_2_24_aarch64", + "cp38-abi3-manylinux_2_23_aarch64", + "cp38-abi3-manylinux_2_22_aarch64", + "cp38-abi3-manylinux_2_21_aarch64", + "cp38-abi3-manylinux_2_20_aarch64", + "cp38-abi3-manylinux_2_19_aarch64", + "cp38-abi3-manylinux_2_18_aarch64", + "cp38-abi3-manylinux_2_17_aarch64", + "cp38-abi3-manylinux2014_aarch64", + "cp38-abi3-linux_aarch64", + "cp37-abi3-manylinux_2_31_aarch64", + "cp37-abi3-manylinux_2_30_aarch64", + "cp37-abi3-manylinux_2_29_aarch64", + "cp37-abi3-manylinux_2_28_aarch64", + "cp37-abi3-manylinux_2_27_aarch64", + "cp37-abi3-manylinux_2_26_aarch64", + "cp37-abi3-manylinux_2_25_aarch64", + "cp37-abi3-manylinux_2_24_aarch64", + "cp37-abi3-manylinux_2_23_aarch64", + "cp37-abi3-manylinux_2_22_aarch64", + "cp37-abi3-manylinux_2_21_aarch64", + "cp37-abi3-manylinux_2_20_aarch64", + "cp37-abi3-manylinux_2_19_aarch64", + "cp37-abi3-manylinux_2_18_aarch64", + "cp37-abi3-manylinux_2_17_aarch64", + "cp37-abi3-manylinux2014_aarch64", + "cp37-abi3-linux_aarch64", + "cp36-abi3-manylinux_2_31_aarch64", + "cp36-abi3-manylinux_2_30_aarch64", + "cp36-abi3-manylinux_2_29_aarch64", + "cp36-abi3-manylinux_2_28_aarch64", + "cp36-abi3-manylinux_2_27_aarch64", + "cp36-abi3-manylinux_2_26_aarch64", + "cp36-abi3-manylinux_2_25_aarch64", + "cp36-abi3-manylinux_2_24_aarch64", + "cp36-abi3-manylinux_2_23_aarch64", + "cp36-abi3-manylinux_2_22_aarch64", + "cp36-abi3-manylinux_2_21_aarch64", + "cp36-abi3-manylinux_2_20_aarch64", + "cp36-abi3-manylinux_2_19_aarch64", + "cp36-abi3-manylinux_2_18_aarch64", + "cp36-abi3-manylinux_2_17_aarch64", + "cp36-abi3-manylinux2014_aarch64", + "cp36-abi3-linux_aarch64", + "cp35-abi3-manylinux_2_31_aarch64", + "cp35-abi3-manylinux_2_30_aarch64", + "cp35-abi3-manylinux_2_29_aarch64", + "cp35-abi3-manylinux_2_28_aarch64", + "cp35-abi3-manylinux_2_27_aarch64", + "cp35-abi3-manylinux_2_26_aarch64", + "cp35-abi3-manylinux_2_25_aarch64", + "cp35-abi3-manylinux_2_24_aarch64", + "cp35-abi3-manylinux_2_23_aarch64", + "cp35-abi3-manylinux_2_22_aarch64", + "cp35-abi3-manylinux_2_21_aarch64", + "cp35-abi3-manylinux_2_20_aarch64", + "cp35-abi3-manylinux_2_19_aarch64", + "cp35-abi3-manylinux_2_18_aarch64", + "cp35-abi3-manylinux_2_17_aarch64", + "cp35-abi3-manylinux2014_aarch64", + "cp35-abi3-linux_aarch64", + "cp34-abi3-manylinux_2_31_aarch64", + "cp34-abi3-manylinux_2_30_aarch64", + "cp34-abi3-manylinux_2_29_aarch64", + "cp34-abi3-manylinux_2_28_aarch64", + "cp34-abi3-manylinux_2_27_aarch64", + "cp34-abi3-manylinux_2_26_aarch64", + "cp34-abi3-manylinux_2_25_aarch64", + "cp34-abi3-manylinux_2_24_aarch64", + "cp34-abi3-manylinux_2_23_aarch64", + "cp34-abi3-manylinux_2_22_aarch64", + "cp34-abi3-manylinux_2_21_aarch64", + "cp34-abi3-manylinux_2_20_aarch64", + "cp34-abi3-manylinux_2_19_aarch64", + "cp34-abi3-manylinux_2_18_aarch64", + "cp34-abi3-manylinux_2_17_aarch64", + "cp34-abi3-manylinux2014_aarch64", + "cp34-abi3-linux_aarch64", + "cp33-abi3-manylinux_2_31_aarch64", + "cp33-abi3-manylinux_2_30_aarch64", + "cp33-abi3-manylinux_2_29_aarch64", + "cp33-abi3-manylinux_2_28_aarch64", + "cp33-abi3-manylinux_2_27_aarch64", + "cp33-abi3-manylinux_2_26_aarch64", + "cp33-abi3-manylinux_2_25_aarch64", + "cp33-abi3-manylinux_2_24_aarch64", + "cp33-abi3-manylinux_2_23_aarch64", + "cp33-abi3-manylinux_2_22_aarch64", + "cp33-abi3-manylinux_2_21_aarch64", + "cp33-abi3-manylinux_2_20_aarch64", + "cp33-abi3-manylinux_2_19_aarch64", + "cp33-abi3-manylinux_2_18_aarch64", + "cp33-abi3-manylinux_2_17_aarch64", + "cp33-abi3-manylinux2014_aarch64", + "cp33-abi3-linux_aarch64", + "cp32-abi3-manylinux_2_31_aarch64", + "cp32-abi3-manylinux_2_30_aarch64", + "cp32-abi3-manylinux_2_29_aarch64", + "cp32-abi3-manylinux_2_28_aarch64", + "cp32-abi3-manylinux_2_27_aarch64", + "cp32-abi3-manylinux_2_26_aarch64", + "cp32-abi3-manylinux_2_25_aarch64", + "cp32-abi3-manylinux_2_24_aarch64", + "cp32-abi3-manylinux_2_23_aarch64", + "cp32-abi3-manylinux_2_22_aarch64", + "cp32-abi3-manylinux_2_21_aarch64", + "cp32-abi3-manylinux_2_20_aarch64", + "cp32-abi3-manylinux_2_19_aarch64", + "cp32-abi3-manylinux_2_18_aarch64", + "cp32-abi3-manylinux_2_17_aarch64", + "cp32-abi3-manylinux2014_aarch64", + "cp32-abi3-linux_aarch64", + "py312-none-manylinux_2_31_aarch64", + "py312-none-manylinux_2_30_aarch64", + "py312-none-manylinux_2_29_aarch64", + "py312-none-manylinux_2_28_aarch64", + "py312-none-manylinux_2_27_aarch64", + "py312-none-manylinux_2_26_aarch64", + "py312-none-manylinux_2_25_aarch64", + "py312-none-manylinux_2_24_aarch64", + "py312-none-manylinux_2_23_aarch64", + "py312-none-manylinux_2_22_aarch64", + "py312-none-manylinux_2_21_aarch64", + "py312-none-manylinux_2_20_aarch64", + "py312-none-manylinux_2_19_aarch64", + "py312-none-manylinux_2_18_aarch64", + "py312-none-manylinux_2_17_aarch64", + "py312-none-manylinux2014_aarch64", + "py312-none-linux_aarch64", + "py3-none-manylinux_2_31_aarch64", + "py3-none-manylinux_2_30_aarch64", + "py3-none-manylinux_2_29_aarch64", + "py3-none-manylinux_2_28_aarch64", + "py3-none-manylinux_2_27_aarch64", + "py3-none-manylinux_2_26_aarch64", + "py3-none-manylinux_2_25_aarch64", + "py3-none-manylinux_2_24_aarch64", + "py3-none-manylinux_2_23_aarch64", + "py3-none-manylinux_2_22_aarch64", + "py3-none-manylinux_2_21_aarch64", + "py3-none-manylinux_2_20_aarch64", + "py3-none-manylinux_2_19_aarch64", + "py3-none-manylinux_2_18_aarch64", + "py3-none-manylinux_2_17_aarch64", + "py3-none-manylinux2014_aarch64", + "py3-none-linux_aarch64", + "py311-none-manylinux_2_31_aarch64", + "py311-none-manylinux_2_30_aarch64", + "py311-none-manylinux_2_29_aarch64", + "py311-none-manylinux_2_28_aarch64", + "py311-none-manylinux_2_27_aarch64", + "py311-none-manylinux_2_26_aarch64", + "py311-none-manylinux_2_25_aarch64", + "py311-none-manylinux_2_24_aarch64", + "py311-none-manylinux_2_23_aarch64", + "py311-none-manylinux_2_22_aarch64", + "py311-none-manylinux_2_21_aarch64", + "py311-none-manylinux_2_20_aarch64", + "py311-none-manylinux_2_19_aarch64", + "py311-none-manylinux_2_18_aarch64", + "py311-none-manylinux_2_17_aarch64", + "py311-none-manylinux2014_aarch64", + "py311-none-linux_aarch64", + "py310-none-manylinux_2_31_aarch64", + "py310-none-manylinux_2_30_aarch64", + "py310-none-manylinux_2_29_aarch64", + "py310-none-manylinux_2_28_aarch64", + "py310-none-manylinux_2_27_aarch64", + "py310-none-manylinux_2_26_aarch64", + "py310-none-manylinux_2_25_aarch64", + "py310-none-manylinux_2_24_aarch64", + "py310-none-manylinux_2_23_aarch64", + "py310-none-manylinux_2_22_aarch64", + "py310-none-manylinux_2_21_aarch64", + "py310-none-manylinux_2_20_aarch64", + "py310-none-manylinux_2_19_aarch64", + "py310-none-manylinux_2_18_aarch64", + "py310-none-manylinux_2_17_aarch64", + "py310-none-manylinux2014_aarch64", + "py310-none-linux_aarch64", + "py39-none-manylinux_2_31_aarch64", + "py39-none-manylinux_2_30_aarch64", + "py39-none-manylinux_2_29_aarch64", + "py39-none-manylinux_2_28_aarch64", + "py39-none-manylinux_2_27_aarch64", + "py39-none-manylinux_2_26_aarch64", + "py39-none-manylinux_2_25_aarch64", + "py39-none-manylinux_2_24_aarch64", + "py39-none-manylinux_2_23_aarch64", + "py39-none-manylinux_2_22_aarch64", + "py39-none-manylinux_2_21_aarch64", + "py39-none-manylinux_2_20_aarch64", + "py39-none-manylinux_2_19_aarch64", + "py39-none-manylinux_2_18_aarch64", + "py39-none-manylinux_2_17_aarch64", + "py39-none-manylinux2014_aarch64", + "py39-none-linux_aarch64", + "py38-none-manylinux_2_31_aarch64", + "py38-none-manylinux_2_30_aarch64", + "py38-none-manylinux_2_29_aarch64", + "py38-none-manylinux_2_28_aarch64", + "py38-none-manylinux_2_27_aarch64", + "py38-none-manylinux_2_26_aarch64", + "py38-none-manylinux_2_25_aarch64", + "py38-none-manylinux_2_24_aarch64", + "py38-none-manylinux_2_23_aarch64", + "py38-none-manylinux_2_22_aarch64", + "py38-none-manylinux_2_21_aarch64", + "py38-none-manylinux_2_20_aarch64", + "py38-none-manylinux_2_19_aarch64", + "py38-none-manylinux_2_18_aarch64", + "py38-none-manylinux_2_17_aarch64", + "py38-none-manylinux2014_aarch64", + "py38-none-linux_aarch64", + "py37-none-manylinux_2_31_aarch64", + "py37-none-manylinux_2_30_aarch64", + "py37-none-manylinux_2_29_aarch64", + "py37-none-manylinux_2_28_aarch64", + "py37-none-manylinux_2_27_aarch64", + "py37-none-manylinux_2_26_aarch64", + "py37-none-manylinux_2_25_aarch64", + "py37-none-manylinux_2_24_aarch64", + "py37-none-manylinux_2_23_aarch64", + "py37-none-manylinux_2_22_aarch64", + "py37-none-manylinux_2_21_aarch64", + "py37-none-manylinux_2_20_aarch64", + "py37-none-manylinux_2_19_aarch64", + "py37-none-manylinux_2_18_aarch64", + "py37-none-manylinux_2_17_aarch64", + "py37-none-manylinux2014_aarch64", + "py37-none-linux_aarch64", + "py36-none-manylinux_2_31_aarch64", + "py36-none-manylinux_2_30_aarch64", + "py36-none-manylinux_2_29_aarch64", + "py36-none-manylinux_2_28_aarch64", + "py36-none-manylinux_2_27_aarch64", + "py36-none-manylinux_2_26_aarch64", + "py36-none-manylinux_2_25_aarch64", + "py36-none-manylinux_2_24_aarch64", + "py36-none-manylinux_2_23_aarch64", + "py36-none-manylinux_2_22_aarch64", + "py36-none-manylinux_2_21_aarch64", + "py36-none-manylinux_2_20_aarch64", + "py36-none-manylinux_2_19_aarch64", + "py36-none-manylinux_2_18_aarch64", + "py36-none-manylinux_2_17_aarch64", + "py36-none-manylinux2014_aarch64", + "py36-none-linux_aarch64", + "py35-none-manylinux_2_31_aarch64", + "py35-none-manylinux_2_30_aarch64", + "py35-none-manylinux_2_29_aarch64", + "py35-none-manylinux_2_28_aarch64", + "py35-none-manylinux_2_27_aarch64", + "py35-none-manylinux_2_26_aarch64", + "py35-none-manylinux_2_25_aarch64", + "py35-none-manylinux_2_24_aarch64", + "py35-none-manylinux_2_23_aarch64", + "py35-none-manylinux_2_22_aarch64", + "py35-none-manylinux_2_21_aarch64", + "py35-none-manylinux_2_20_aarch64", + "py35-none-manylinux_2_19_aarch64", + "py35-none-manylinux_2_18_aarch64", + "py35-none-manylinux_2_17_aarch64", + "py35-none-manylinux2014_aarch64", + "py35-none-linux_aarch64", + "py34-none-manylinux_2_31_aarch64", + "py34-none-manylinux_2_30_aarch64", + "py34-none-manylinux_2_29_aarch64", + "py34-none-manylinux_2_28_aarch64", + "py34-none-manylinux_2_27_aarch64", + "py34-none-manylinux_2_26_aarch64", + "py34-none-manylinux_2_25_aarch64", + "py34-none-manylinux_2_24_aarch64", + "py34-none-manylinux_2_23_aarch64", + "py34-none-manylinux_2_22_aarch64", + "py34-none-manylinux_2_21_aarch64", + "py34-none-manylinux_2_20_aarch64", + "py34-none-manylinux_2_19_aarch64", + "py34-none-manylinux_2_18_aarch64", + "py34-none-manylinux_2_17_aarch64", + "py34-none-manylinux2014_aarch64", + "py34-none-linux_aarch64", + "py33-none-manylinux_2_31_aarch64", + "py33-none-manylinux_2_30_aarch64", + "py33-none-manylinux_2_29_aarch64", + "py33-none-manylinux_2_28_aarch64", + "py33-none-manylinux_2_27_aarch64", + "py33-none-manylinux_2_26_aarch64", + "py33-none-manylinux_2_25_aarch64", + "py33-none-manylinux_2_24_aarch64", + "py33-none-manylinux_2_23_aarch64", + "py33-none-manylinux_2_22_aarch64", + "py33-none-manylinux_2_21_aarch64", + "py33-none-manylinux_2_20_aarch64", + "py33-none-manylinux_2_19_aarch64", + "py33-none-manylinux_2_18_aarch64", + "py33-none-manylinux_2_17_aarch64", + "py33-none-manylinux2014_aarch64", + "py33-none-linux_aarch64", + "py32-none-manylinux_2_31_aarch64", + "py32-none-manylinux_2_30_aarch64", + "py32-none-manylinux_2_29_aarch64", + "py32-none-manylinux_2_28_aarch64", + "py32-none-manylinux_2_27_aarch64", + "py32-none-manylinux_2_26_aarch64", + "py32-none-manylinux_2_25_aarch64", + "py32-none-manylinux_2_24_aarch64", + "py32-none-manylinux_2_23_aarch64", + "py32-none-manylinux_2_22_aarch64", + "py32-none-manylinux_2_21_aarch64", + "py32-none-manylinux_2_20_aarch64", + "py32-none-manylinux_2_19_aarch64", + "py32-none-manylinux_2_18_aarch64", + "py32-none-manylinux_2_17_aarch64", + "py32-none-manylinux2014_aarch64", + "py32-none-linux_aarch64", + "py31-none-manylinux_2_31_aarch64", + "py31-none-manylinux_2_30_aarch64", + "py31-none-manylinux_2_29_aarch64", + "py31-none-manylinux_2_28_aarch64", + "py31-none-manylinux_2_27_aarch64", + "py31-none-manylinux_2_26_aarch64", + "py31-none-manylinux_2_25_aarch64", + "py31-none-manylinux_2_24_aarch64", + "py31-none-manylinux_2_23_aarch64", + "py31-none-manylinux_2_22_aarch64", + "py31-none-manylinux_2_21_aarch64", + "py31-none-manylinux_2_20_aarch64", + "py31-none-manylinux_2_19_aarch64", + "py31-none-manylinux_2_18_aarch64", + "py31-none-manylinux_2_17_aarch64", + "py31-none-manylinux2014_aarch64", + "py31-none-linux_aarch64", + "py30-none-manylinux_2_31_aarch64", + "py30-none-manylinux_2_30_aarch64", + "py30-none-manylinux_2_29_aarch64", + "py30-none-manylinux_2_28_aarch64", + "py30-none-manylinux_2_27_aarch64", + "py30-none-manylinux_2_26_aarch64", + "py30-none-manylinux_2_25_aarch64", + "py30-none-manylinux_2_24_aarch64", + "py30-none-manylinux_2_23_aarch64", + "py30-none-manylinux_2_22_aarch64", + "py30-none-manylinux_2_21_aarch64", + "py30-none-manylinux_2_20_aarch64", + "py30-none-manylinux_2_19_aarch64", + "py30-none-manylinux_2_18_aarch64", + "py30-none-manylinux_2_17_aarch64", + "py30-none-manylinux2014_aarch64", + "py30-none-linux_aarch64", + "cp312-none-any", + "py312-none-any", + "py3-none-any", + "py311-none-any", + "py310-none-any", + "py39-none-any", + "py38-none-any", + "py37-none-any", + "py36-none-any", + "py35-none-any", + "py34-none-any", + "py33-none-any", + "py32-none-any", + "py31-none-any", + "py30-none-any" + ], + "marker_environment": { + "implementation_name": "cpython", + "implementation_version": "3.12.6", + "os_name": "posix", + "platform_machine": "aarch64", + "platform_python_implementation": "CPython", + "platform_release": "6.5.0-1025-azure", + "platform_system": "Linux", + "platform_version": "#26~22.04.1-Ubuntu SMP Thu Jul 11 22:33:04 UTC 2024", + "python_full_version": "3.12.6", + "python_version": "3.12", + "sys_platform": "linux" + } +} \ No newline at end of file diff --git a/package/complete-platforms/linux-x86_64.json b/package/complete-platforms/linux-x86_64.json new file mode 100644 index 000000000..f254e2b36 --- /dev/null +++ b/package/complete-platforms/linux-x86_64.json @@ -0,0 +1,874 @@ +{ + "__meta_data__": { + "comment": "DO NOT EDIT - Generated via: `tox -e gen-scie-platform -- --pbs-release 20240909 --python-version 3.12.6`.", + "pbs-release": "20240909", + "python-version": "3.12.6" + }, + "compatible_tags": [ + "cp312-cp312-manylinux_2_31_x86_64", + "cp312-cp312-manylinux_2_30_x86_64", + "cp312-cp312-manylinux_2_29_x86_64", + "cp312-cp312-manylinux_2_28_x86_64", + "cp312-cp312-manylinux_2_27_x86_64", + "cp312-cp312-manylinux_2_26_x86_64", + "cp312-cp312-manylinux_2_25_x86_64", + "cp312-cp312-manylinux_2_24_x86_64", + "cp312-cp312-manylinux_2_23_x86_64", + "cp312-cp312-manylinux_2_22_x86_64", + "cp312-cp312-manylinux_2_21_x86_64", + "cp312-cp312-manylinux_2_20_x86_64", + "cp312-cp312-manylinux_2_19_x86_64", + "cp312-cp312-manylinux_2_18_x86_64", + "cp312-cp312-manylinux_2_17_x86_64", + "cp312-cp312-manylinux2014_x86_64", + "cp312-cp312-manylinux_2_16_x86_64", + "cp312-cp312-manylinux_2_15_x86_64", + "cp312-cp312-manylinux_2_14_x86_64", + "cp312-cp312-manylinux_2_13_x86_64", + "cp312-cp312-manylinux_2_12_x86_64", + "cp312-cp312-manylinux2010_x86_64", + "cp312-cp312-manylinux_2_11_x86_64", + "cp312-cp312-manylinux_2_10_x86_64", + "cp312-cp312-manylinux_2_9_x86_64", + "cp312-cp312-manylinux_2_8_x86_64", + "cp312-cp312-manylinux_2_7_x86_64", + "cp312-cp312-manylinux_2_6_x86_64", + "cp312-cp312-manylinux_2_5_x86_64", + "cp312-cp312-manylinux1_x86_64", + "cp312-cp312-linux_x86_64", + "cp312-abi3-manylinux_2_31_x86_64", + "cp312-abi3-manylinux_2_30_x86_64", + "cp312-abi3-manylinux_2_29_x86_64", + "cp312-abi3-manylinux_2_28_x86_64", + "cp312-abi3-manylinux_2_27_x86_64", + "cp312-abi3-manylinux_2_26_x86_64", + "cp312-abi3-manylinux_2_25_x86_64", + "cp312-abi3-manylinux_2_24_x86_64", + "cp312-abi3-manylinux_2_23_x86_64", + "cp312-abi3-manylinux_2_22_x86_64", + "cp312-abi3-manylinux_2_21_x86_64", + "cp312-abi3-manylinux_2_20_x86_64", + "cp312-abi3-manylinux_2_19_x86_64", + "cp312-abi3-manylinux_2_18_x86_64", + "cp312-abi3-manylinux_2_17_x86_64", + "cp312-abi3-manylinux2014_x86_64", + "cp312-abi3-manylinux_2_16_x86_64", + "cp312-abi3-manylinux_2_15_x86_64", + "cp312-abi3-manylinux_2_14_x86_64", + "cp312-abi3-manylinux_2_13_x86_64", + "cp312-abi3-manylinux_2_12_x86_64", + "cp312-abi3-manylinux2010_x86_64", + "cp312-abi3-manylinux_2_11_x86_64", + "cp312-abi3-manylinux_2_10_x86_64", + "cp312-abi3-manylinux_2_9_x86_64", + "cp312-abi3-manylinux_2_8_x86_64", + "cp312-abi3-manylinux_2_7_x86_64", + "cp312-abi3-manylinux_2_6_x86_64", + "cp312-abi3-manylinux_2_5_x86_64", + "cp312-abi3-manylinux1_x86_64", + "cp312-abi3-linux_x86_64", + "cp312-none-manylinux_2_31_x86_64", + "cp312-none-manylinux_2_30_x86_64", + "cp312-none-manylinux_2_29_x86_64", + "cp312-none-manylinux_2_28_x86_64", + "cp312-none-manylinux_2_27_x86_64", + "cp312-none-manylinux_2_26_x86_64", + "cp312-none-manylinux_2_25_x86_64", + "cp312-none-manylinux_2_24_x86_64", + "cp312-none-manylinux_2_23_x86_64", + "cp312-none-manylinux_2_22_x86_64", + "cp312-none-manylinux_2_21_x86_64", + "cp312-none-manylinux_2_20_x86_64", + "cp312-none-manylinux_2_19_x86_64", + "cp312-none-manylinux_2_18_x86_64", + "cp312-none-manylinux_2_17_x86_64", + "cp312-none-manylinux2014_x86_64", + "cp312-none-manylinux_2_16_x86_64", + "cp312-none-manylinux_2_15_x86_64", + "cp312-none-manylinux_2_14_x86_64", + "cp312-none-manylinux_2_13_x86_64", + "cp312-none-manylinux_2_12_x86_64", + "cp312-none-manylinux2010_x86_64", + "cp312-none-manylinux_2_11_x86_64", + "cp312-none-manylinux_2_10_x86_64", + "cp312-none-manylinux_2_9_x86_64", + "cp312-none-manylinux_2_8_x86_64", + "cp312-none-manylinux_2_7_x86_64", + "cp312-none-manylinux_2_6_x86_64", + "cp312-none-manylinux_2_5_x86_64", + "cp312-none-manylinux1_x86_64", + "cp312-none-linux_x86_64", + "cp311-abi3-manylinux_2_31_x86_64", + "cp311-abi3-manylinux_2_30_x86_64", + "cp311-abi3-manylinux_2_29_x86_64", + "cp311-abi3-manylinux_2_28_x86_64", + "cp311-abi3-manylinux_2_27_x86_64", + "cp311-abi3-manylinux_2_26_x86_64", + "cp311-abi3-manylinux_2_25_x86_64", + "cp311-abi3-manylinux_2_24_x86_64", + "cp311-abi3-manylinux_2_23_x86_64", + "cp311-abi3-manylinux_2_22_x86_64", + "cp311-abi3-manylinux_2_21_x86_64", + "cp311-abi3-manylinux_2_20_x86_64", + "cp311-abi3-manylinux_2_19_x86_64", + "cp311-abi3-manylinux_2_18_x86_64", + "cp311-abi3-manylinux_2_17_x86_64", + "cp311-abi3-manylinux2014_x86_64", + "cp311-abi3-manylinux_2_16_x86_64", + "cp311-abi3-manylinux_2_15_x86_64", + "cp311-abi3-manylinux_2_14_x86_64", + "cp311-abi3-manylinux_2_13_x86_64", + "cp311-abi3-manylinux_2_12_x86_64", + "cp311-abi3-manylinux2010_x86_64", + "cp311-abi3-manylinux_2_11_x86_64", + "cp311-abi3-manylinux_2_10_x86_64", + "cp311-abi3-manylinux_2_9_x86_64", + "cp311-abi3-manylinux_2_8_x86_64", + "cp311-abi3-manylinux_2_7_x86_64", + "cp311-abi3-manylinux_2_6_x86_64", + "cp311-abi3-manylinux_2_5_x86_64", + "cp311-abi3-manylinux1_x86_64", + "cp311-abi3-linux_x86_64", + "cp310-abi3-manylinux_2_31_x86_64", + "cp310-abi3-manylinux_2_30_x86_64", + "cp310-abi3-manylinux_2_29_x86_64", + "cp310-abi3-manylinux_2_28_x86_64", + "cp310-abi3-manylinux_2_27_x86_64", + "cp310-abi3-manylinux_2_26_x86_64", + "cp310-abi3-manylinux_2_25_x86_64", + "cp310-abi3-manylinux_2_24_x86_64", + "cp310-abi3-manylinux_2_23_x86_64", + "cp310-abi3-manylinux_2_22_x86_64", + "cp310-abi3-manylinux_2_21_x86_64", + "cp310-abi3-manylinux_2_20_x86_64", + "cp310-abi3-manylinux_2_19_x86_64", + "cp310-abi3-manylinux_2_18_x86_64", + "cp310-abi3-manylinux_2_17_x86_64", + "cp310-abi3-manylinux2014_x86_64", + "cp310-abi3-manylinux_2_16_x86_64", + "cp310-abi3-manylinux_2_15_x86_64", + "cp310-abi3-manylinux_2_14_x86_64", + "cp310-abi3-manylinux_2_13_x86_64", + "cp310-abi3-manylinux_2_12_x86_64", + "cp310-abi3-manylinux2010_x86_64", + "cp310-abi3-manylinux_2_11_x86_64", + "cp310-abi3-manylinux_2_10_x86_64", + "cp310-abi3-manylinux_2_9_x86_64", + "cp310-abi3-manylinux_2_8_x86_64", + "cp310-abi3-manylinux_2_7_x86_64", + "cp310-abi3-manylinux_2_6_x86_64", + "cp310-abi3-manylinux_2_5_x86_64", + "cp310-abi3-manylinux1_x86_64", + "cp310-abi3-linux_x86_64", + "cp39-abi3-manylinux_2_31_x86_64", + "cp39-abi3-manylinux_2_30_x86_64", + "cp39-abi3-manylinux_2_29_x86_64", + "cp39-abi3-manylinux_2_28_x86_64", + "cp39-abi3-manylinux_2_27_x86_64", + "cp39-abi3-manylinux_2_26_x86_64", + "cp39-abi3-manylinux_2_25_x86_64", + "cp39-abi3-manylinux_2_24_x86_64", + "cp39-abi3-manylinux_2_23_x86_64", + "cp39-abi3-manylinux_2_22_x86_64", + "cp39-abi3-manylinux_2_21_x86_64", + "cp39-abi3-manylinux_2_20_x86_64", + "cp39-abi3-manylinux_2_19_x86_64", + "cp39-abi3-manylinux_2_18_x86_64", + "cp39-abi3-manylinux_2_17_x86_64", + "cp39-abi3-manylinux2014_x86_64", + "cp39-abi3-manylinux_2_16_x86_64", + "cp39-abi3-manylinux_2_15_x86_64", + "cp39-abi3-manylinux_2_14_x86_64", + "cp39-abi3-manylinux_2_13_x86_64", + "cp39-abi3-manylinux_2_12_x86_64", + "cp39-abi3-manylinux2010_x86_64", + "cp39-abi3-manylinux_2_11_x86_64", + "cp39-abi3-manylinux_2_10_x86_64", + "cp39-abi3-manylinux_2_9_x86_64", + "cp39-abi3-manylinux_2_8_x86_64", + "cp39-abi3-manylinux_2_7_x86_64", + "cp39-abi3-manylinux_2_6_x86_64", + "cp39-abi3-manylinux_2_5_x86_64", + "cp39-abi3-manylinux1_x86_64", + "cp39-abi3-linux_x86_64", + "cp38-abi3-manylinux_2_31_x86_64", + "cp38-abi3-manylinux_2_30_x86_64", + "cp38-abi3-manylinux_2_29_x86_64", + "cp38-abi3-manylinux_2_28_x86_64", + "cp38-abi3-manylinux_2_27_x86_64", + "cp38-abi3-manylinux_2_26_x86_64", + "cp38-abi3-manylinux_2_25_x86_64", + "cp38-abi3-manylinux_2_24_x86_64", + "cp38-abi3-manylinux_2_23_x86_64", + "cp38-abi3-manylinux_2_22_x86_64", + "cp38-abi3-manylinux_2_21_x86_64", + "cp38-abi3-manylinux_2_20_x86_64", + "cp38-abi3-manylinux_2_19_x86_64", + "cp38-abi3-manylinux_2_18_x86_64", + "cp38-abi3-manylinux_2_17_x86_64", + "cp38-abi3-manylinux2014_x86_64", + "cp38-abi3-manylinux_2_16_x86_64", + "cp38-abi3-manylinux_2_15_x86_64", + "cp38-abi3-manylinux_2_14_x86_64", + "cp38-abi3-manylinux_2_13_x86_64", + "cp38-abi3-manylinux_2_12_x86_64", + "cp38-abi3-manylinux2010_x86_64", + "cp38-abi3-manylinux_2_11_x86_64", + "cp38-abi3-manylinux_2_10_x86_64", + "cp38-abi3-manylinux_2_9_x86_64", + "cp38-abi3-manylinux_2_8_x86_64", + "cp38-abi3-manylinux_2_7_x86_64", + "cp38-abi3-manylinux_2_6_x86_64", + "cp38-abi3-manylinux_2_5_x86_64", + "cp38-abi3-manylinux1_x86_64", + "cp38-abi3-linux_x86_64", + "cp37-abi3-manylinux_2_31_x86_64", + "cp37-abi3-manylinux_2_30_x86_64", + "cp37-abi3-manylinux_2_29_x86_64", + "cp37-abi3-manylinux_2_28_x86_64", + "cp37-abi3-manylinux_2_27_x86_64", + "cp37-abi3-manylinux_2_26_x86_64", + "cp37-abi3-manylinux_2_25_x86_64", + "cp37-abi3-manylinux_2_24_x86_64", + "cp37-abi3-manylinux_2_23_x86_64", + "cp37-abi3-manylinux_2_22_x86_64", + "cp37-abi3-manylinux_2_21_x86_64", + "cp37-abi3-manylinux_2_20_x86_64", + "cp37-abi3-manylinux_2_19_x86_64", + "cp37-abi3-manylinux_2_18_x86_64", + "cp37-abi3-manylinux_2_17_x86_64", + "cp37-abi3-manylinux2014_x86_64", + "cp37-abi3-manylinux_2_16_x86_64", + "cp37-abi3-manylinux_2_15_x86_64", + "cp37-abi3-manylinux_2_14_x86_64", + "cp37-abi3-manylinux_2_13_x86_64", + "cp37-abi3-manylinux_2_12_x86_64", + "cp37-abi3-manylinux2010_x86_64", + "cp37-abi3-manylinux_2_11_x86_64", + "cp37-abi3-manylinux_2_10_x86_64", + "cp37-abi3-manylinux_2_9_x86_64", + "cp37-abi3-manylinux_2_8_x86_64", + "cp37-abi3-manylinux_2_7_x86_64", + "cp37-abi3-manylinux_2_6_x86_64", + "cp37-abi3-manylinux_2_5_x86_64", + "cp37-abi3-manylinux1_x86_64", + "cp37-abi3-linux_x86_64", + "cp36-abi3-manylinux_2_31_x86_64", + "cp36-abi3-manylinux_2_30_x86_64", + "cp36-abi3-manylinux_2_29_x86_64", + "cp36-abi3-manylinux_2_28_x86_64", + "cp36-abi3-manylinux_2_27_x86_64", + "cp36-abi3-manylinux_2_26_x86_64", + "cp36-abi3-manylinux_2_25_x86_64", + "cp36-abi3-manylinux_2_24_x86_64", + "cp36-abi3-manylinux_2_23_x86_64", + "cp36-abi3-manylinux_2_22_x86_64", + "cp36-abi3-manylinux_2_21_x86_64", + "cp36-abi3-manylinux_2_20_x86_64", + "cp36-abi3-manylinux_2_19_x86_64", + "cp36-abi3-manylinux_2_18_x86_64", + "cp36-abi3-manylinux_2_17_x86_64", + "cp36-abi3-manylinux2014_x86_64", + "cp36-abi3-manylinux_2_16_x86_64", + "cp36-abi3-manylinux_2_15_x86_64", + "cp36-abi3-manylinux_2_14_x86_64", + "cp36-abi3-manylinux_2_13_x86_64", + "cp36-abi3-manylinux_2_12_x86_64", + "cp36-abi3-manylinux2010_x86_64", + "cp36-abi3-manylinux_2_11_x86_64", + "cp36-abi3-manylinux_2_10_x86_64", + "cp36-abi3-manylinux_2_9_x86_64", + "cp36-abi3-manylinux_2_8_x86_64", + "cp36-abi3-manylinux_2_7_x86_64", + "cp36-abi3-manylinux_2_6_x86_64", + "cp36-abi3-manylinux_2_5_x86_64", + "cp36-abi3-manylinux1_x86_64", + "cp36-abi3-linux_x86_64", + "cp35-abi3-manylinux_2_31_x86_64", + "cp35-abi3-manylinux_2_30_x86_64", + "cp35-abi3-manylinux_2_29_x86_64", + "cp35-abi3-manylinux_2_28_x86_64", + "cp35-abi3-manylinux_2_27_x86_64", + "cp35-abi3-manylinux_2_26_x86_64", + "cp35-abi3-manylinux_2_25_x86_64", + "cp35-abi3-manylinux_2_24_x86_64", + "cp35-abi3-manylinux_2_23_x86_64", + "cp35-abi3-manylinux_2_22_x86_64", + "cp35-abi3-manylinux_2_21_x86_64", + "cp35-abi3-manylinux_2_20_x86_64", + "cp35-abi3-manylinux_2_19_x86_64", + "cp35-abi3-manylinux_2_18_x86_64", + "cp35-abi3-manylinux_2_17_x86_64", + "cp35-abi3-manylinux2014_x86_64", + "cp35-abi3-manylinux_2_16_x86_64", + "cp35-abi3-manylinux_2_15_x86_64", + "cp35-abi3-manylinux_2_14_x86_64", + "cp35-abi3-manylinux_2_13_x86_64", + "cp35-abi3-manylinux_2_12_x86_64", + "cp35-abi3-manylinux2010_x86_64", + "cp35-abi3-manylinux_2_11_x86_64", + "cp35-abi3-manylinux_2_10_x86_64", + "cp35-abi3-manylinux_2_9_x86_64", + "cp35-abi3-manylinux_2_8_x86_64", + "cp35-abi3-manylinux_2_7_x86_64", + "cp35-abi3-manylinux_2_6_x86_64", + "cp35-abi3-manylinux_2_5_x86_64", + "cp35-abi3-manylinux1_x86_64", + "cp35-abi3-linux_x86_64", + "cp34-abi3-manylinux_2_31_x86_64", + "cp34-abi3-manylinux_2_30_x86_64", + "cp34-abi3-manylinux_2_29_x86_64", + "cp34-abi3-manylinux_2_28_x86_64", + "cp34-abi3-manylinux_2_27_x86_64", + "cp34-abi3-manylinux_2_26_x86_64", + "cp34-abi3-manylinux_2_25_x86_64", + "cp34-abi3-manylinux_2_24_x86_64", + "cp34-abi3-manylinux_2_23_x86_64", + "cp34-abi3-manylinux_2_22_x86_64", + "cp34-abi3-manylinux_2_21_x86_64", + "cp34-abi3-manylinux_2_20_x86_64", + "cp34-abi3-manylinux_2_19_x86_64", + "cp34-abi3-manylinux_2_18_x86_64", + "cp34-abi3-manylinux_2_17_x86_64", + "cp34-abi3-manylinux2014_x86_64", + "cp34-abi3-manylinux_2_16_x86_64", + "cp34-abi3-manylinux_2_15_x86_64", + "cp34-abi3-manylinux_2_14_x86_64", + "cp34-abi3-manylinux_2_13_x86_64", + "cp34-abi3-manylinux_2_12_x86_64", + "cp34-abi3-manylinux2010_x86_64", + "cp34-abi3-manylinux_2_11_x86_64", + "cp34-abi3-manylinux_2_10_x86_64", + "cp34-abi3-manylinux_2_9_x86_64", + "cp34-abi3-manylinux_2_8_x86_64", + "cp34-abi3-manylinux_2_7_x86_64", + "cp34-abi3-manylinux_2_6_x86_64", + "cp34-abi3-manylinux_2_5_x86_64", + "cp34-abi3-manylinux1_x86_64", + "cp34-abi3-linux_x86_64", + "cp33-abi3-manylinux_2_31_x86_64", + "cp33-abi3-manylinux_2_30_x86_64", + "cp33-abi3-manylinux_2_29_x86_64", + "cp33-abi3-manylinux_2_28_x86_64", + "cp33-abi3-manylinux_2_27_x86_64", + "cp33-abi3-manylinux_2_26_x86_64", + "cp33-abi3-manylinux_2_25_x86_64", + "cp33-abi3-manylinux_2_24_x86_64", + "cp33-abi3-manylinux_2_23_x86_64", + "cp33-abi3-manylinux_2_22_x86_64", + "cp33-abi3-manylinux_2_21_x86_64", + "cp33-abi3-manylinux_2_20_x86_64", + "cp33-abi3-manylinux_2_19_x86_64", + "cp33-abi3-manylinux_2_18_x86_64", + "cp33-abi3-manylinux_2_17_x86_64", + "cp33-abi3-manylinux2014_x86_64", + "cp33-abi3-manylinux_2_16_x86_64", + "cp33-abi3-manylinux_2_15_x86_64", + "cp33-abi3-manylinux_2_14_x86_64", + "cp33-abi3-manylinux_2_13_x86_64", + "cp33-abi3-manylinux_2_12_x86_64", + "cp33-abi3-manylinux2010_x86_64", + "cp33-abi3-manylinux_2_11_x86_64", + "cp33-abi3-manylinux_2_10_x86_64", + "cp33-abi3-manylinux_2_9_x86_64", + "cp33-abi3-manylinux_2_8_x86_64", + "cp33-abi3-manylinux_2_7_x86_64", + "cp33-abi3-manylinux_2_6_x86_64", + "cp33-abi3-manylinux_2_5_x86_64", + "cp33-abi3-manylinux1_x86_64", + "cp33-abi3-linux_x86_64", + "cp32-abi3-manylinux_2_31_x86_64", + "cp32-abi3-manylinux_2_30_x86_64", + "cp32-abi3-manylinux_2_29_x86_64", + "cp32-abi3-manylinux_2_28_x86_64", + "cp32-abi3-manylinux_2_27_x86_64", + "cp32-abi3-manylinux_2_26_x86_64", + "cp32-abi3-manylinux_2_25_x86_64", + "cp32-abi3-manylinux_2_24_x86_64", + "cp32-abi3-manylinux_2_23_x86_64", + "cp32-abi3-manylinux_2_22_x86_64", + "cp32-abi3-manylinux_2_21_x86_64", + "cp32-abi3-manylinux_2_20_x86_64", + "cp32-abi3-manylinux_2_19_x86_64", + "cp32-abi3-manylinux_2_18_x86_64", + "cp32-abi3-manylinux_2_17_x86_64", + "cp32-abi3-manylinux2014_x86_64", + "cp32-abi3-manylinux_2_16_x86_64", + "cp32-abi3-manylinux_2_15_x86_64", + "cp32-abi3-manylinux_2_14_x86_64", + "cp32-abi3-manylinux_2_13_x86_64", + "cp32-abi3-manylinux_2_12_x86_64", + "cp32-abi3-manylinux2010_x86_64", + "cp32-abi3-manylinux_2_11_x86_64", + "cp32-abi3-manylinux_2_10_x86_64", + "cp32-abi3-manylinux_2_9_x86_64", + "cp32-abi3-manylinux_2_8_x86_64", + "cp32-abi3-manylinux_2_7_x86_64", + "cp32-abi3-manylinux_2_6_x86_64", + "cp32-abi3-manylinux_2_5_x86_64", + "cp32-abi3-manylinux1_x86_64", + "cp32-abi3-linux_x86_64", + "py312-none-manylinux_2_31_x86_64", + "py312-none-manylinux_2_30_x86_64", + "py312-none-manylinux_2_29_x86_64", + "py312-none-manylinux_2_28_x86_64", + "py312-none-manylinux_2_27_x86_64", + "py312-none-manylinux_2_26_x86_64", + "py312-none-manylinux_2_25_x86_64", + "py312-none-manylinux_2_24_x86_64", + "py312-none-manylinux_2_23_x86_64", + "py312-none-manylinux_2_22_x86_64", + "py312-none-manylinux_2_21_x86_64", + "py312-none-manylinux_2_20_x86_64", + "py312-none-manylinux_2_19_x86_64", + "py312-none-manylinux_2_18_x86_64", + "py312-none-manylinux_2_17_x86_64", + "py312-none-manylinux2014_x86_64", + "py312-none-manylinux_2_16_x86_64", + "py312-none-manylinux_2_15_x86_64", + "py312-none-manylinux_2_14_x86_64", + "py312-none-manylinux_2_13_x86_64", + "py312-none-manylinux_2_12_x86_64", + "py312-none-manylinux2010_x86_64", + "py312-none-manylinux_2_11_x86_64", + "py312-none-manylinux_2_10_x86_64", + "py312-none-manylinux_2_9_x86_64", + "py312-none-manylinux_2_8_x86_64", + "py312-none-manylinux_2_7_x86_64", + "py312-none-manylinux_2_6_x86_64", + "py312-none-manylinux_2_5_x86_64", + "py312-none-manylinux1_x86_64", + "py312-none-linux_x86_64", + "py3-none-manylinux_2_31_x86_64", + "py3-none-manylinux_2_30_x86_64", + "py3-none-manylinux_2_29_x86_64", + "py3-none-manylinux_2_28_x86_64", + "py3-none-manylinux_2_27_x86_64", + "py3-none-manylinux_2_26_x86_64", + "py3-none-manylinux_2_25_x86_64", + "py3-none-manylinux_2_24_x86_64", + "py3-none-manylinux_2_23_x86_64", + "py3-none-manylinux_2_22_x86_64", + "py3-none-manylinux_2_21_x86_64", + "py3-none-manylinux_2_20_x86_64", + "py3-none-manylinux_2_19_x86_64", + "py3-none-manylinux_2_18_x86_64", + "py3-none-manylinux_2_17_x86_64", + "py3-none-manylinux2014_x86_64", + "py3-none-manylinux_2_16_x86_64", + "py3-none-manylinux_2_15_x86_64", + "py3-none-manylinux_2_14_x86_64", + "py3-none-manylinux_2_13_x86_64", + "py3-none-manylinux_2_12_x86_64", + "py3-none-manylinux2010_x86_64", + "py3-none-manylinux_2_11_x86_64", + "py3-none-manylinux_2_10_x86_64", + "py3-none-manylinux_2_9_x86_64", + "py3-none-manylinux_2_8_x86_64", + "py3-none-manylinux_2_7_x86_64", + "py3-none-manylinux_2_6_x86_64", + "py3-none-manylinux_2_5_x86_64", + "py3-none-manylinux1_x86_64", + "py3-none-linux_x86_64", + "py311-none-manylinux_2_31_x86_64", + "py311-none-manylinux_2_30_x86_64", + "py311-none-manylinux_2_29_x86_64", + "py311-none-manylinux_2_28_x86_64", + "py311-none-manylinux_2_27_x86_64", + "py311-none-manylinux_2_26_x86_64", + "py311-none-manylinux_2_25_x86_64", + "py311-none-manylinux_2_24_x86_64", + "py311-none-manylinux_2_23_x86_64", + "py311-none-manylinux_2_22_x86_64", + "py311-none-manylinux_2_21_x86_64", + "py311-none-manylinux_2_20_x86_64", + "py311-none-manylinux_2_19_x86_64", + "py311-none-manylinux_2_18_x86_64", + "py311-none-manylinux_2_17_x86_64", + "py311-none-manylinux2014_x86_64", + "py311-none-manylinux_2_16_x86_64", + "py311-none-manylinux_2_15_x86_64", + "py311-none-manylinux_2_14_x86_64", + "py311-none-manylinux_2_13_x86_64", + "py311-none-manylinux_2_12_x86_64", + "py311-none-manylinux2010_x86_64", + "py311-none-manylinux_2_11_x86_64", + "py311-none-manylinux_2_10_x86_64", + "py311-none-manylinux_2_9_x86_64", + "py311-none-manylinux_2_8_x86_64", + "py311-none-manylinux_2_7_x86_64", + "py311-none-manylinux_2_6_x86_64", + "py311-none-manylinux_2_5_x86_64", + "py311-none-manylinux1_x86_64", + "py311-none-linux_x86_64", + "py310-none-manylinux_2_31_x86_64", + "py310-none-manylinux_2_30_x86_64", + "py310-none-manylinux_2_29_x86_64", + "py310-none-manylinux_2_28_x86_64", + "py310-none-manylinux_2_27_x86_64", + "py310-none-manylinux_2_26_x86_64", + "py310-none-manylinux_2_25_x86_64", + "py310-none-manylinux_2_24_x86_64", + "py310-none-manylinux_2_23_x86_64", + "py310-none-manylinux_2_22_x86_64", + "py310-none-manylinux_2_21_x86_64", + "py310-none-manylinux_2_20_x86_64", + "py310-none-manylinux_2_19_x86_64", + "py310-none-manylinux_2_18_x86_64", + "py310-none-manylinux_2_17_x86_64", + "py310-none-manylinux2014_x86_64", + "py310-none-manylinux_2_16_x86_64", + "py310-none-manylinux_2_15_x86_64", + "py310-none-manylinux_2_14_x86_64", + "py310-none-manylinux_2_13_x86_64", + "py310-none-manylinux_2_12_x86_64", + "py310-none-manylinux2010_x86_64", + "py310-none-manylinux_2_11_x86_64", + "py310-none-manylinux_2_10_x86_64", + "py310-none-manylinux_2_9_x86_64", + "py310-none-manylinux_2_8_x86_64", + "py310-none-manylinux_2_7_x86_64", + "py310-none-manylinux_2_6_x86_64", + "py310-none-manylinux_2_5_x86_64", + "py310-none-manylinux1_x86_64", + "py310-none-linux_x86_64", + "py39-none-manylinux_2_31_x86_64", + "py39-none-manylinux_2_30_x86_64", + "py39-none-manylinux_2_29_x86_64", + "py39-none-manylinux_2_28_x86_64", + "py39-none-manylinux_2_27_x86_64", + "py39-none-manylinux_2_26_x86_64", + "py39-none-manylinux_2_25_x86_64", + "py39-none-manylinux_2_24_x86_64", + "py39-none-manylinux_2_23_x86_64", + "py39-none-manylinux_2_22_x86_64", + "py39-none-manylinux_2_21_x86_64", + "py39-none-manylinux_2_20_x86_64", + "py39-none-manylinux_2_19_x86_64", + "py39-none-manylinux_2_18_x86_64", + "py39-none-manylinux_2_17_x86_64", + "py39-none-manylinux2014_x86_64", + "py39-none-manylinux_2_16_x86_64", + "py39-none-manylinux_2_15_x86_64", + "py39-none-manylinux_2_14_x86_64", + "py39-none-manylinux_2_13_x86_64", + "py39-none-manylinux_2_12_x86_64", + "py39-none-manylinux2010_x86_64", + "py39-none-manylinux_2_11_x86_64", + "py39-none-manylinux_2_10_x86_64", + "py39-none-manylinux_2_9_x86_64", + "py39-none-manylinux_2_8_x86_64", + "py39-none-manylinux_2_7_x86_64", + "py39-none-manylinux_2_6_x86_64", + "py39-none-manylinux_2_5_x86_64", + "py39-none-manylinux1_x86_64", + "py39-none-linux_x86_64", + "py38-none-manylinux_2_31_x86_64", + "py38-none-manylinux_2_30_x86_64", + "py38-none-manylinux_2_29_x86_64", + "py38-none-manylinux_2_28_x86_64", + "py38-none-manylinux_2_27_x86_64", + "py38-none-manylinux_2_26_x86_64", + "py38-none-manylinux_2_25_x86_64", + "py38-none-manylinux_2_24_x86_64", + "py38-none-manylinux_2_23_x86_64", + "py38-none-manylinux_2_22_x86_64", + "py38-none-manylinux_2_21_x86_64", + "py38-none-manylinux_2_20_x86_64", + "py38-none-manylinux_2_19_x86_64", + "py38-none-manylinux_2_18_x86_64", + "py38-none-manylinux_2_17_x86_64", + "py38-none-manylinux2014_x86_64", + "py38-none-manylinux_2_16_x86_64", + "py38-none-manylinux_2_15_x86_64", + "py38-none-manylinux_2_14_x86_64", + "py38-none-manylinux_2_13_x86_64", + "py38-none-manylinux_2_12_x86_64", + "py38-none-manylinux2010_x86_64", + "py38-none-manylinux_2_11_x86_64", + "py38-none-manylinux_2_10_x86_64", + "py38-none-manylinux_2_9_x86_64", + "py38-none-manylinux_2_8_x86_64", + "py38-none-manylinux_2_7_x86_64", + "py38-none-manylinux_2_6_x86_64", + "py38-none-manylinux_2_5_x86_64", + "py38-none-manylinux1_x86_64", + "py38-none-linux_x86_64", + "py37-none-manylinux_2_31_x86_64", + "py37-none-manylinux_2_30_x86_64", + "py37-none-manylinux_2_29_x86_64", + "py37-none-manylinux_2_28_x86_64", + "py37-none-manylinux_2_27_x86_64", + "py37-none-manylinux_2_26_x86_64", + "py37-none-manylinux_2_25_x86_64", + "py37-none-manylinux_2_24_x86_64", + "py37-none-manylinux_2_23_x86_64", + "py37-none-manylinux_2_22_x86_64", + "py37-none-manylinux_2_21_x86_64", + "py37-none-manylinux_2_20_x86_64", + "py37-none-manylinux_2_19_x86_64", + "py37-none-manylinux_2_18_x86_64", + "py37-none-manylinux_2_17_x86_64", + "py37-none-manylinux2014_x86_64", + "py37-none-manylinux_2_16_x86_64", + "py37-none-manylinux_2_15_x86_64", + "py37-none-manylinux_2_14_x86_64", + "py37-none-manylinux_2_13_x86_64", + "py37-none-manylinux_2_12_x86_64", + "py37-none-manylinux2010_x86_64", + "py37-none-manylinux_2_11_x86_64", + "py37-none-manylinux_2_10_x86_64", + "py37-none-manylinux_2_9_x86_64", + "py37-none-manylinux_2_8_x86_64", + "py37-none-manylinux_2_7_x86_64", + "py37-none-manylinux_2_6_x86_64", + "py37-none-manylinux_2_5_x86_64", + "py37-none-manylinux1_x86_64", + "py37-none-linux_x86_64", + "py36-none-manylinux_2_31_x86_64", + "py36-none-manylinux_2_30_x86_64", + "py36-none-manylinux_2_29_x86_64", + "py36-none-manylinux_2_28_x86_64", + "py36-none-manylinux_2_27_x86_64", + "py36-none-manylinux_2_26_x86_64", + "py36-none-manylinux_2_25_x86_64", + "py36-none-manylinux_2_24_x86_64", + "py36-none-manylinux_2_23_x86_64", + "py36-none-manylinux_2_22_x86_64", + "py36-none-manylinux_2_21_x86_64", + "py36-none-manylinux_2_20_x86_64", + "py36-none-manylinux_2_19_x86_64", + "py36-none-manylinux_2_18_x86_64", + "py36-none-manylinux_2_17_x86_64", + "py36-none-manylinux2014_x86_64", + "py36-none-manylinux_2_16_x86_64", + "py36-none-manylinux_2_15_x86_64", + "py36-none-manylinux_2_14_x86_64", + "py36-none-manylinux_2_13_x86_64", + "py36-none-manylinux_2_12_x86_64", + "py36-none-manylinux2010_x86_64", + "py36-none-manylinux_2_11_x86_64", + "py36-none-manylinux_2_10_x86_64", + "py36-none-manylinux_2_9_x86_64", + "py36-none-manylinux_2_8_x86_64", + "py36-none-manylinux_2_7_x86_64", + "py36-none-manylinux_2_6_x86_64", + "py36-none-manylinux_2_5_x86_64", + "py36-none-manylinux1_x86_64", + "py36-none-linux_x86_64", + "py35-none-manylinux_2_31_x86_64", + "py35-none-manylinux_2_30_x86_64", + "py35-none-manylinux_2_29_x86_64", + "py35-none-manylinux_2_28_x86_64", + "py35-none-manylinux_2_27_x86_64", + "py35-none-manylinux_2_26_x86_64", + "py35-none-manylinux_2_25_x86_64", + "py35-none-manylinux_2_24_x86_64", + "py35-none-manylinux_2_23_x86_64", + "py35-none-manylinux_2_22_x86_64", + "py35-none-manylinux_2_21_x86_64", + "py35-none-manylinux_2_20_x86_64", + "py35-none-manylinux_2_19_x86_64", + "py35-none-manylinux_2_18_x86_64", + "py35-none-manylinux_2_17_x86_64", + "py35-none-manylinux2014_x86_64", + "py35-none-manylinux_2_16_x86_64", + "py35-none-manylinux_2_15_x86_64", + "py35-none-manylinux_2_14_x86_64", + "py35-none-manylinux_2_13_x86_64", + "py35-none-manylinux_2_12_x86_64", + "py35-none-manylinux2010_x86_64", + "py35-none-manylinux_2_11_x86_64", + "py35-none-manylinux_2_10_x86_64", + "py35-none-manylinux_2_9_x86_64", + "py35-none-manylinux_2_8_x86_64", + "py35-none-manylinux_2_7_x86_64", + "py35-none-manylinux_2_6_x86_64", + "py35-none-manylinux_2_5_x86_64", + "py35-none-manylinux1_x86_64", + "py35-none-linux_x86_64", + "py34-none-manylinux_2_31_x86_64", + "py34-none-manylinux_2_30_x86_64", + "py34-none-manylinux_2_29_x86_64", + "py34-none-manylinux_2_28_x86_64", + "py34-none-manylinux_2_27_x86_64", + "py34-none-manylinux_2_26_x86_64", + "py34-none-manylinux_2_25_x86_64", + "py34-none-manylinux_2_24_x86_64", + "py34-none-manylinux_2_23_x86_64", + "py34-none-manylinux_2_22_x86_64", + "py34-none-manylinux_2_21_x86_64", + "py34-none-manylinux_2_20_x86_64", + "py34-none-manylinux_2_19_x86_64", + "py34-none-manylinux_2_18_x86_64", + "py34-none-manylinux_2_17_x86_64", + "py34-none-manylinux2014_x86_64", + "py34-none-manylinux_2_16_x86_64", + "py34-none-manylinux_2_15_x86_64", + "py34-none-manylinux_2_14_x86_64", + "py34-none-manylinux_2_13_x86_64", + "py34-none-manylinux_2_12_x86_64", + "py34-none-manylinux2010_x86_64", + "py34-none-manylinux_2_11_x86_64", + "py34-none-manylinux_2_10_x86_64", + "py34-none-manylinux_2_9_x86_64", + "py34-none-manylinux_2_8_x86_64", + "py34-none-manylinux_2_7_x86_64", + "py34-none-manylinux_2_6_x86_64", + "py34-none-manylinux_2_5_x86_64", + "py34-none-manylinux1_x86_64", + "py34-none-linux_x86_64", + "py33-none-manylinux_2_31_x86_64", + "py33-none-manylinux_2_30_x86_64", + "py33-none-manylinux_2_29_x86_64", + "py33-none-manylinux_2_28_x86_64", + "py33-none-manylinux_2_27_x86_64", + "py33-none-manylinux_2_26_x86_64", + "py33-none-manylinux_2_25_x86_64", + "py33-none-manylinux_2_24_x86_64", + "py33-none-manylinux_2_23_x86_64", + "py33-none-manylinux_2_22_x86_64", + "py33-none-manylinux_2_21_x86_64", + "py33-none-manylinux_2_20_x86_64", + "py33-none-manylinux_2_19_x86_64", + "py33-none-manylinux_2_18_x86_64", + "py33-none-manylinux_2_17_x86_64", + "py33-none-manylinux2014_x86_64", + "py33-none-manylinux_2_16_x86_64", + "py33-none-manylinux_2_15_x86_64", + "py33-none-manylinux_2_14_x86_64", + "py33-none-manylinux_2_13_x86_64", + "py33-none-manylinux_2_12_x86_64", + "py33-none-manylinux2010_x86_64", + "py33-none-manylinux_2_11_x86_64", + "py33-none-manylinux_2_10_x86_64", + "py33-none-manylinux_2_9_x86_64", + "py33-none-manylinux_2_8_x86_64", + "py33-none-manylinux_2_7_x86_64", + "py33-none-manylinux_2_6_x86_64", + "py33-none-manylinux_2_5_x86_64", + "py33-none-manylinux1_x86_64", + "py33-none-linux_x86_64", + "py32-none-manylinux_2_31_x86_64", + "py32-none-manylinux_2_30_x86_64", + "py32-none-manylinux_2_29_x86_64", + "py32-none-manylinux_2_28_x86_64", + "py32-none-manylinux_2_27_x86_64", + "py32-none-manylinux_2_26_x86_64", + "py32-none-manylinux_2_25_x86_64", + "py32-none-manylinux_2_24_x86_64", + "py32-none-manylinux_2_23_x86_64", + "py32-none-manylinux_2_22_x86_64", + "py32-none-manylinux_2_21_x86_64", + "py32-none-manylinux_2_20_x86_64", + "py32-none-manylinux_2_19_x86_64", + "py32-none-manylinux_2_18_x86_64", + "py32-none-manylinux_2_17_x86_64", + "py32-none-manylinux2014_x86_64", + "py32-none-manylinux_2_16_x86_64", + "py32-none-manylinux_2_15_x86_64", + "py32-none-manylinux_2_14_x86_64", + "py32-none-manylinux_2_13_x86_64", + "py32-none-manylinux_2_12_x86_64", + "py32-none-manylinux2010_x86_64", + "py32-none-manylinux_2_11_x86_64", + "py32-none-manylinux_2_10_x86_64", + "py32-none-manylinux_2_9_x86_64", + "py32-none-manylinux_2_8_x86_64", + "py32-none-manylinux_2_7_x86_64", + "py32-none-manylinux_2_6_x86_64", + "py32-none-manylinux_2_5_x86_64", + "py32-none-manylinux1_x86_64", + "py32-none-linux_x86_64", + "py31-none-manylinux_2_31_x86_64", + "py31-none-manylinux_2_30_x86_64", + "py31-none-manylinux_2_29_x86_64", + "py31-none-manylinux_2_28_x86_64", + "py31-none-manylinux_2_27_x86_64", + "py31-none-manylinux_2_26_x86_64", + "py31-none-manylinux_2_25_x86_64", + "py31-none-manylinux_2_24_x86_64", + "py31-none-manylinux_2_23_x86_64", + "py31-none-manylinux_2_22_x86_64", + "py31-none-manylinux_2_21_x86_64", + "py31-none-manylinux_2_20_x86_64", + "py31-none-manylinux_2_19_x86_64", + "py31-none-manylinux_2_18_x86_64", + "py31-none-manylinux_2_17_x86_64", + "py31-none-manylinux2014_x86_64", + "py31-none-manylinux_2_16_x86_64", + "py31-none-manylinux_2_15_x86_64", + "py31-none-manylinux_2_14_x86_64", + "py31-none-manylinux_2_13_x86_64", + "py31-none-manylinux_2_12_x86_64", + "py31-none-manylinux2010_x86_64", + "py31-none-manylinux_2_11_x86_64", + "py31-none-manylinux_2_10_x86_64", + "py31-none-manylinux_2_9_x86_64", + "py31-none-manylinux_2_8_x86_64", + "py31-none-manylinux_2_7_x86_64", + "py31-none-manylinux_2_6_x86_64", + "py31-none-manylinux_2_5_x86_64", + "py31-none-manylinux1_x86_64", + "py31-none-linux_x86_64", + "py30-none-manylinux_2_31_x86_64", + "py30-none-manylinux_2_30_x86_64", + "py30-none-manylinux_2_29_x86_64", + "py30-none-manylinux_2_28_x86_64", + "py30-none-manylinux_2_27_x86_64", + "py30-none-manylinux_2_26_x86_64", + "py30-none-manylinux_2_25_x86_64", + "py30-none-manylinux_2_24_x86_64", + "py30-none-manylinux_2_23_x86_64", + "py30-none-manylinux_2_22_x86_64", + "py30-none-manylinux_2_21_x86_64", + "py30-none-manylinux_2_20_x86_64", + "py30-none-manylinux_2_19_x86_64", + "py30-none-manylinux_2_18_x86_64", + "py30-none-manylinux_2_17_x86_64", + "py30-none-manylinux2014_x86_64", + "py30-none-manylinux_2_16_x86_64", + "py30-none-manylinux_2_15_x86_64", + "py30-none-manylinux_2_14_x86_64", + "py30-none-manylinux_2_13_x86_64", + "py30-none-manylinux_2_12_x86_64", + "py30-none-manylinux2010_x86_64", + "py30-none-manylinux_2_11_x86_64", + "py30-none-manylinux_2_10_x86_64", + "py30-none-manylinux_2_9_x86_64", + "py30-none-manylinux_2_8_x86_64", + "py30-none-manylinux_2_7_x86_64", + "py30-none-manylinux_2_6_x86_64", + "py30-none-manylinux_2_5_x86_64", + "py30-none-manylinux1_x86_64", + "py30-none-linux_x86_64", + "cp312-none-any", + "py312-none-any", + "py3-none-any", + "py311-none-any", + "py310-none-any", + "py39-none-any", + "py38-none-any", + "py37-none-any", + "py36-none-any", + "py35-none-any", + "py34-none-any", + "py33-none-any", + "py32-none-any", + "py31-none-any", + "py30-none-any" + ], + "marker_environment": { + "implementation_name": "cpython", + "implementation_version": "3.12.6", + "os_name": "posix", + "platform_machine": "x86_64", + "platform_python_implementation": "CPython", + "platform_release": "6.5.0-1025-azure", + "platform_system": "Linux", + "platform_version": "#26~22.04.1-Ubuntu SMP Thu Jul 11 22:33:04 UTC 2024", + "python_full_version": "3.12.6", + "python_version": "3.12", + "sys_platform": "linux" + } +} \ No newline at end of file diff --git a/package/complete-platforms/macos-aarch64.json b/package/complete-platforms/macos-aarch64.json new file mode 100644 index 000000000..b5ad70d20 --- /dev/null +++ b/package/complete-platforms/macos-aarch64.json @@ -0,0 +1,604 @@ +{ + "__meta_data__": { + "comment": "DO NOT EDIT - Generated via: `tox -e gen-scie-platform -- --pbs-release 20240909 --python-version 3.12.6`.", + "pbs-release": "20240909", + "python-version": "3.12.6" + }, + "compatible_tags": [ + "cp312-cp312-macosx_14_0_arm64", + "cp312-cp312-macosx_14_0_universal2", + "cp312-cp312-macosx_13_0_arm64", + "cp312-cp312-macosx_13_0_universal2", + "cp312-cp312-macosx_12_0_arm64", + "cp312-cp312-macosx_12_0_universal2", + "cp312-cp312-macosx_11_0_arm64", + "cp312-cp312-macosx_11_0_universal2", + "cp312-cp312-macosx_10_16_universal2", + "cp312-cp312-macosx_10_15_universal2", + "cp312-cp312-macosx_10_14_universal2", + "cp312-cp312-macosx_10_13_universal2", + "cp312-cp312-macosx_10_12_universal2", + "cp312-cp312-macosx_10_11_universal2", + "cp312-cp312-macosx_10_10_universal2", + "cp312-cp312-macosx_10_9_universal2", + "cp312-cp312-macosx_10_8_universal2", + "cp312-cp312-macosx_10_7_universal2", + "cp312-cp312-macosx_10_6_universal2", + "cp312-cp312-macosx_10_5_universal2", + "cp312-cp312-macosx_10_4_universal2", + "cp312-abi3-macosx_14_0_arm64", + "cp312-abi3-macosx_14_0_universal2", + "cp312-abi3-macosx_13_0_arm64", + "cp312-abi3-macosx_13_0_universal2", + "cp312-abi3-macosx_12_0_arm64", + "cp312-abi3-macosx_12_0_universal2", + "cp312-abi3-macosx_11_0_arm64", + "cp312-abi3-macosx_11_0_universal2", + "cp312-abi3-macosx_10_16_universal2", + "cp312-abi3-macosx_10_15_universal2", + "cp312-abi3-macosx_10_14_universal2", + "cp312-abi3-macosx_10_13_universal2", + "cp312-abi3-macosx_10_12_universal2", + "cp312-abi3-macosx_10_11_universal2", + "cp312-abi3-macosx_10_10_universal2", + "cp312-abi3-macosx_10_9_universal2", + "cp312-abi3-macosx_10_8_universal2", + "cp312-abi3-macosx_10_7_universal2", + "cp312-abi3-macosx_10_6_universal2", + "cp312-abi3-macosx_10_5_universal2", + "cp312-abi3-macosx_10_4_universal2", + "cp312-none-macosx_14_0_arm64", + "cp312-none-macosx_14_0_universal2", + "cp312-none-macosx_13_0_arm64", + "cp312-none-macosx_13_0_universal2", + "cp312-none-macosx_12_0_arm64", + "cp312-none-macosx_12_0_universal2", + "cp312-none-macosx_11_0_arm64", + "cp312-none-macosx_11_0_universal2", + "cp312-none-macosx_10_16_universal2", + "cp312-none-macosx_10_15_universal2", + "cp312-none-macosx_10_14_universal2", + "cp312-none-macosx_10_13_universal2", + "cp312-none-macosx_10_12_universal2", + "cp312-none-macosx_10_11_universal2", + "cp312-none-macosx_10_10_universal2", + "cp312-none-macosx_10_9_universal2", + "cp312-none-macosx_10_8_universal2", + "cp312-none-macosx_10_7_universal2", + "cp312-none-macosx_10_6_universal2", + "cp312-none-macosx_10_5_universal2", + "cp312-none-macosx_10_4_universal2", + "cp311-abi3-macosx_14_0_arm64", + "cp311-abi3-macosx_14_0_universal2", + "cp311-abi3-macosx_13_0_arm64", + "cp311-abi3-macosx_13_0_universal2", + "cp311-abi3-macosx_12_0_arm64", + "cp311-abi3-macosx_12_0_universal2", + "cp311-abi3-macosx_11_0_arm64", + "cp311-abi3-macosx_11_0_universal2", + "cp311-abi3-macosx_10_16_universal2", + "cp311-abi3-macosx_10_15_universal2", + "cp311-abi3-macosx_10_14_universal2", + "cp311-abi3-macosx_10_13_universal2", + "cp311-abi3-macosx_10_12_universal2", + "cp311-abi3-macosx_10_11_universal2", + "cp311-abi3-macosx_10_10_universal2", + "cp311-abi3-macosx_10_9_universal2", + "cp311-abi3-macosx_10_8_universal2", + "cp311-abi3-macosx_10_7_universal2", + "cp311-abi3-macosx_10_6_universal2", + "cp311-abi3-macosx_10_5_universal2", + "cp311-abi3-macosx_10_4_universal2", + "cp310-abi3-macosx_14_0_arm64", + "cp310-abi3-macosx_14_0_universal2", + "cp310-abi3-macosx_13_0_arm64", + "cp310-abi3-macosx_13_0_universal2", + "cp310-abi3-macosx_12_0_arm64", + "cp310-abi3-macosx_12_0_universal2", + "cp310-abi3-macosx_11_0_arm64", + "cp310-abi3-macosx_11_0_universal2", + "cp310-abi3-macosx_10_16_universal2", + "cp310-abi3-macosx_10_15_universal2", + "cp310-abi3-macosx_10_14_universal2", + "cp310-abi3-macosx_10_13_universal2", + "cp310-abi3-macosx_10_12_universal2", + "cp310-abi3-macosx_10_11_universal2", + "cp310-abi3-macosx_10_10_universal2", + "cp310-abi3-macosx_10_9_universal2", + "cp310-abi3-macosx_10_8_universal2", + "cp310-abi3-macosx_10_7_universal2", + "cp310-abi3-macosx_10_6_universal2", + "cp310-abi3-macosx_10_5_universal2", + "cp310-abi3-macosx_10_4_universal2", + "cp39-abi3-macosx_14_0_arm64", + "cp39-abi3-macosx_14_0_universal2", + "cp39-abi3-macosx_13_0_arm64", + "cp39-abi3-macosx_13_0_universal2", + "cp39-abi3-macosx_12_0_arm64", + "cp39-abi3-macosx_12_0_universal2", + "cp39-abi3-macosx_11_0_arm64", + "cp39-abi3-macosx_11_0_universal2", + "cp39-abi3-macosx_10_16_universal2", + "cp39-abi3-macosx_10_15_universal2", + "cp39-abi3-macosx_10_14_universal2", + "cp39-abi3-macosx_10_13_universal2", + "cp39-abi3-macosx_10_12_universal2", + "cp39-abi3-macosx_10_11_universal2", + "cp39-abi3-macosx_10_10_universal2", + "cp39-abi3-macosx_10_9_universal2", + "cp39-abi3-macosx_10_8_universal2", + "cp39-abi3-macosx_10_7_universal2", + "cp39-abi3-macosx_10_6_universal2", + "cp39-abi3-macosx_10_5_universal2", + "cp39-abi3-macosx_10_4_universal2", + "cp38-abi3-macosx_14_0_arm64", + "cp38-abi3-macosx_14_0_universal2", + "cp38-abi3-macosx_13_0_arm64", + "cp38-abi3-macosx_13_0_universal2", + "cp38-abi3-macosx_12_0_arm64", + "cp38-abi3-macosx_12_0_universal2", + "cp38-abi3-macosx_11_0_arm64", + "cp38-abi3-macosx_11_0_universal2", + "cp38-abi3-macosx_10_16_universal2", + "cp38-abi3-macosx_10_15_universal2", + "cp38-abi3-macosx_10_14_universal2", + "cp38-abi3-macosx_10_13_universal2", + "cp38-abi3-macosx_10_12_universal2", + "cp38-abi3-macosx_10_11_universal2", + "cp38-abi3-macosx_10_10_universal2", + "cp38-abi3-macosx_10_9_universal2", + "cp38-abi3-macosx_10_8_universal2", + "cp38-abi3-macosx_10_7_universal2", + "cp38-abi3-macosx_10_6_universal2", + "cp38-abi3-macosx_10_5_universal2", + "cp38-abi3-macosx_10_4_universal2", + "cp37-abi3-macosx_14_0_arm64", + "cp37-abi3-macosx_14_0_universal2", + "cp37-abi3-macosx_13_0_arm64", + "cp37-abi3-macosx_13_0_universal2", + "cp37-abi3-macosx_12_0_arm64", + "cp37-abi3-macosx_12_0_universal2", + "cp37-abi3-macosx_11_0_arm64", + "cp37-abi3-macosx_11_0_universal2", + "cp37-abi3-macosx_10_16_universal2", + "cp37-abi3-macosx_10_15_universal2", + "cp37-abi3-macosx_10_14_universal2", + "cp37-abi3-macosx_10_13_universal2", + "cp37-abi3-macosx_10_12_universal2", + "cp37-abi3-macosx_10_11_universal2", + "cp37-abi3-macosx_10_10_universal2", + "cp37-abi3-macosx_10_9_universal2", + "cp37-abi3-macosx_10_8_universal2", + "cp37-abi3-macosx_10_7_universal2", + "cp37-abi3-macosx_10_6_universal2", + "cp37-abi3-macosx_10_5_universal2", + "cp37-abi3-macosx_10_4_universal2", + "cp36-abi3-macosx_14_0_arm64", + "cp36-abi3-macosx_14_0_universal2", + "cp36-abi3-macosx_13_0_arm64", + "cp36-abi3-macosx_13_0_universal2", + "cp36-abi3-macosx_12_0_arm64", + "cp36-abi3-macosx_12_0_universal2", + "cp36-abi3-macosx_11_0_arm64", + "cp36-abi3-macosx_11_0_universal2", + "cp36-abi3-macosx_10_16_universal2", + "cp36-abi3-macosx_10_15_universal2", + "cp36-abi3-macosx_10_14_universal2", + "cp36-abi3-macosx_10_13_universal2", + "cp36-abi3-macosx_10_12_universal2", + "cp36-abi3-macosx_10_11_universal2", + "cp36-abi3-macosx_10_10_universal2", + "cp36-abi3-macosx_10_9_universal2", + "cp36-abi3-macosx_10_8_universal2", + "cp36-abi3-macosx_10_7_universal2", + "cp36-abi3-macosx_10_6_universal2", + "cp36-abi3-macosx_10_5_universal2", + "cp36-abi3-macosx_10_4_universal2", + "cp35-abi3-macosx_14_0_arm64", + "cp35-abi3-macosx_14_0_universal2", + "cp35-abi3-macosx_13_0_arm64", + "cp35-abi3-macosx_13_0_universal2", + "cp35-abi3-macosx_12_0_arm64", + "cp35-abi3-macosx_12_0_universal2", + "cp35-abi3-macosx_11_0_arm64", + "cp35-abi3-macosx_11_0_universal2", + "cp35-abi3-macosx_10_16_universal2", + "cp35-abi3-macosx_10_15_universal2", + "cp35-abi3-macosx_10_14_universal2", + "cp35-abi3-macosx_10_13_universal2", + "cp35-abi3-macosx_10_12_universal2", + "cp35-abi3-macosx_10_11_universal2", + "cp35-abi3-macosx_10_10_universal2", + "cp35-abi3-macosx_10_9_universal2", + "cp35-abi3-macosx_10_8_universal2", + "cp35-abi3-macosx_10_7_universal2", + "cp35-abi3-macosx_10_6_universal2", + "cp35-abi3-macosx_10_5_universal2", + "cp35-abi3-macosx_10_4_universal2", + "cp34-abi3-macosx_14_0_arm64", + "cp34-abi3-macosx_14_0_universal2", + "cp34-abi3-macosx_13_0_arm64", + "cp34-abi3-macosx_13_0_universal2", + "cp34-abi3-macosx_12_0_arm64", + "cp34-abi3-macosx_12_0_universal2", + "cp34-abi3-macosx_11_0_arm64", + "cp34-abi3-macosx_11_0_universal2", + "cp34-abi3-macosx_10_16_universal2", + "cp34-abi3-macosx_10_15_universal2", + "cp34-abi3-macosx_10_14_universal2", + "cp34-abi3-macosx_10_13_universal2", + "cp34-abi3-macosx_10_12_universal2", + "cp34-abi3-macosx_10_11_universal2", + "cp34-abi3-macosx_10_10_universal2", + "cp34-abi3-macosx_10_9_universal2", + "cp34-abi3-macosx_10_8_universal2", + "cp34-abi3-macosx_10_7_universal2", + "cp34-abi3-macosx_10_6_universal2", + "cp34-abi3-macosx_10_5_universal2", + "cp34-abi3-macosx_10_4_universal2", + "cp33-abi3-macosx_14_0_arm64", + "cp33-abi3-macosx_14_0_universal2", + "cp33-abi3-macosx_13_0_arm64", + "cp33-abi3-macosx_13_0_universal2", + "cp33-abi3-macosx_12_0_arm64", + "cp33-abi3-macosx_12_0_universal2", + "cp33-abi3-macosx_11_0_arm64", + "cp33-abi3-macosx_11_0_universal2", + "cp33-abi3-macosx_10_16_universal2", + "cp33-abi3-macosx_10_15_universal2", + "cp33-abi3-macosx_10_14_universal2", + "cp33-abi3-macosx_10_13_universal2", + "cp33-abi3-macosx_10_12_universal2", + "cp33-abi3-macosx_10_11_universal2", + "cp33-abi3-macosx_10_10_universal2", + "cp33-abi3-macosx_10_9_universal2", + "cp33-abi3-macosx_10_8_universal2", + "cp33-abi3-macosx_10_7_universal2", + "cp33-abi3-macosx_10_6_universal2", + "cp33-abi3-macosx_10_5_universal2", + "cp33-abi3-macosx_10_4_universal2", + "cp32-abi3-macosx_14_0_arm64", + "cp32-abi3-macosx_14_0_universal2", + "cp32-abi3-macosx_13_0_arm64", + "cp32-abi3-macosx_13_0_universal2", + "cp32-abi3-macosx_12_0_arm64", + "cp32-abi3-macosx_12_0_universal2", + "cp32-abi3-macosx_11_0_arm64", + "cp32-abi3-macosx_11_0_universal2", + "cp32-abi3-macosx_10_16_universal2", + "cp32-abi3-macosx_10_15_universal2", + "cp32-abi3-macosx_10_14_universal2", + "cp32-abi3-macosx_10_13_universal2", + "cp32-abi3-macosx_10_12_universal2", + "cp32-abi3-macosx_10_11_universal2", + "cp32-abi3-macosx_10_10_universal2", + "cp32-abi3-macosx_10_9_universal2", + "cp32-abi3-macosx_10_8_universal2", + "cp32-abi3-macosx_10_7_universal2", + "cp32-abi3-macosx_10_6_universal2", + "cp32-abi3-macosx_10_5_universal2", + "cp32-abi3-macosx_10_4_universal2", + "py312-none-macosx_14_0_arm64", + "py312-none-macosx_14_0_universal2", + "py312-none-macosx_13_0_arm64", + "py312-none-macosx_13_0_universal2", + "py312-none-macosx_12_0_arm64", + "py312-none-macosx_12_0_universal2", + "py312-none-macosx_11_0_arm64", + "py312-none-macosx_11_0_universal2", + "py312-none-macosx_10_16_universal2", + "py312-none-macosx_10_15_universal2", + "py312-none-macosx_10_14_universal2", + "py312-none-macosx_10_13_universal2", + "py312-none-macosx_10_12_universal2", + "py312-none-macosx_10_11_universal2", + "py312-none-macosx_10_10_universal2", + "py312-none-macosx_10_9_universal2", + "py312-none-macosx_10_8_universal2", + "py312-none-macosx_10_7_universal2", + "py312-none-macosx_10_6_universal2", + "py312-none-macosx_10_5_universal2", + "py312-none-macosx_10_4_universal2", + "py3-none-macosx_14_0_arm64", + "py3-none-macosx_14_0_universal2", + "py3-none-macosx_13_0_arm64", + "py3-none-macosx_13_0_universal2", + "py3-none-macosx_12_0_arm64", + "py3-none-macosx_12_0_universal2", + "py3-none-macosx_11_0_arm64", + "py3-none-macosx_11_0_universal2", + "py3-none-macosx_10_16_universal2", + "py3-none-macosx_10_15_universal2", + "py3-none-macosx_10_14_universal2", + "py3-none-macosx_10_13_universal2", + "py3-none-macosx_10_12_universal2", + "py3-none-macosx_10_11_universal2", + "py3-none-macosx_10_10_universal2", + "py3-none-macosx_10_9_universal2", + "py3-none-macosx_10_8_universal2", + "py3-none-macosx_10_7_universal2", + "py3-none-macosx_10_6_universal2", + "py3-none-macosx_10_5_universal2", + "py3-none-macosx_10_4_universal2", + "py311-none-macosx_14_0_arm64", + "py311-none-macosx_14_0_universal2", + "py311-none-macosx_13_0_arm64", + "py311-none-macosx_13_0_universal2", + "py311-none-macosx_12_0_arm64", + "py311-none-macosx_12_0_universal2", + "py311-none-macosx_11_0_arm64", + "py311-none-macosx_11_0_universal2", + "py311-none-macosx_10_16_universal2", + "py311-none-macosx_10_15_universal2", + "py311-none-macosx_10_14_universal2", + "py311-none-macosx_10_13_universal2", + "py311-none-macosx_10_12_universal2", + "py311-none-macosx_10_11_universal2", + "py311-none-macosx_10_10_universal2", + "py311-none-macosx_10_9_universal2", + "py311-none-macosx_10_8_universal2", + "py311-none-macosx_10_7_universal2", + "py311-none-macosx_10_6_universal2", + "py311-none-macosx_10_5_universal2", + "py311-none-macosx_10_4_universal2", + "py310-none-macosx_14_0_arm64", + "py310-none-macosx_14_0_universal2", + "py310-none-macosx_13_0_arm64", + "py310-none-macosx_13_0_universal2", + "py310-none-macosx_12_0_arm64", + "py310-none-macosx_12_0_universal2", + "py310-none-macosx_11_0_arm64", + "py310-none-macosx_11_0_universal2", + "py310-none-macosx_10_16_universal2", + "py310-none-macosx_10_15_universal2", + "py310-none-macosx_10_14_universal2", + "py310-none-macosx_10_13_universal2", + "py310-none-macosx_10_12_universal2", + "py310-none-macosx_10_11_universal2", + "py310-none-macosx_10_10_universal2", + "py310-none-macosx_10_9_universal2", + "py310-none-macosx_10_8_universal2", + "py310-none-macosx_10_7_universal2", + "py310-none-macosx_10_6_universal2", + "py310-none-macosx_10_5_universal2", + "py310-none-macosx_10_4_universal2", + "py39-none-macosx_14_0_arm64", + "py39-none-macosx_14_0_universal2", + "py39-none-macosx_13_0_arm64", + "py39-none-macosx_13_0_universal2", + "py39-none-macosx_12_0_arm64", + "py39-none-macosx_12_0_universal2", + "py39-none-macosx_11_0_arm64", + "py39-none-macosx_11_0_universal2", + "py39-none-macosx_10_16_universal2", + "py39-none-macosx_10_15_universal2", + "py39-none-macosx_10_14_universal2", + "py39-none-macosx_10_13_universal2", + "py39-none-macosx_10_12_universal2", + "py39-none-macosx_10_11_universal2", + "py39-none-macosx_10_10_universal2", + "py39-none-macosx_10_9_universal2", + "py39-none-macosx_10_8_universal2", + "py39-none-macosx_10_7_universal2", + "py39-none-macosx_10_6_universal2", + "py39-none-macosx_10_5_universal2", + "py39-none-macosx_10_4_universal2", + "py38-none-macosx_14_0_arm64", + "py38-none-macosx_14_0_universal2", + "py38-none-macosx_13_0_arm64", + "py38-none-macosx_13_0_universal2", + "py38-none-macosx_12_0_arm64", + "py38-none-macosx_12_0_universal2", + "py38-none-macosx_11_0_arm64", + "py38-none-macosx_11_0_universal2", + "py38-none-macosx_10_16_universal2", + "py38-none-macosx_10_15_universal2", + "py38-none-macosx_10_14_universal2", + "py38-none-macosx_10_13_universal2", + "py38-none-macosx_10_12_universal2", + "py38-none-macosx_10_11_universal2", + "py38-none-macosx_10_10_universal2", + "py38-none-macosx_10_9_universal2", + "py38-none-macosx_10_8_universal2", + "py38-none-macosx_10_7_universal2", + "py38-none-macosx_10_6_universal2", + "py38-none-macosx_10_5_universal2", + "py38-none-macosx_10_4_universal2", + "py37-none-macosx_14_0_arm64", + "py37-none-macosx_14_0_universal2", + "py37-none-macosx_13_0_arm64", + "py37-none-macosx_13_0_universal2", + "py37-none-macosx_12_0_arm64", + "py37-none-macosx_12_0_universal2", + "py37-none-macosx_11_0_arm64", + "py37-none-macosx_11_0_universal2", + "py37-none-macosx_10_16_universal2", + "py37-none-macosx_10_15_universal2", + "py37-none-macosx_10_14_universal2", + "py37-none-macosx_10_13_universal2", + "py37-none-macosx_10_12_universal2", + "py37-none-macosx_10_11_universal2", + "py37-none-macosx_10_10_universal2", + "py37-none-macosx_10_9_universal2", + "py37-none-macosx_10_8_universal2", + "py37-none-macosx_10_7_universal2", + "py37-none-macosx_10_6_universal2", + "py37-none-macosx_10_5_universal2", + "py37-none-macosx_10_4_universal2", + "py36-none-macosx_14_0_arm64", + "py36-none-macosx_14_0_universal2", + "py36-none-macosx_13_0_arm64", + "py36-none-macosx_13_0_universal2", + "py36-none-macosx_12_0_arm64", + "py36-none-macosx_12_0_universal2", + "py36-none-macosx_11_0_arm64", + "py36-none-macosx_11_0_universal2", + "py36-none-macosx_10_16_universal2", + "py36-none-macosx_10_15_universal2", + "py36-none-macosx_10_14_universal2", + "py36-none-macosx_10_13_universal2", + "py36-none-macosx_10_12_universal2", + "py36-none-macosx_10_11_universal2", + "py36-none-macosx_10_10_universal2", + "py36-none-macosx_10_9_universal2", + "py36-none-macosx_10_8_universal2", + "py36-none-macosx_10_7_universal2", + "py36-none-macosx_10_6_universal2", + "py36-none-macosx_10_5_universal2", + "py36-none-macosx_10_4_universal2", + "py35-none-macosx_14_0_arm64", + "py35-none-macosx_14_0_universal2", + "py35-none-macosx_13_0_arm64", + "py35-none-macosx_13_0_universal2", + "py35-none-macosx_12_0_arm64", + "py35-none-macosx_12_0_universal2", + "py35-none-macosx_11_0_arm64", + "py35-none-macosx_11_0_universal2", + "py35-none-macosx_10_16_universal2", + "py35-none-macosx_10_15_universal2", + "py35-none-macosx_10_14_universal2", + "py35-none-macosx_10_13_universal2", + "py35-none-macosx_10_12_universal2", + "py35-none-macosx_10_11_universal2", + "py35-none-macosx_10_10_universal2", + "py35-none-macosx_10_9_universal2", + "py35-none-macosx_10_8_universal2", + "py35-none-macosx_10_7_universal2", + "py35-none-macosx_10_6_universal2", + "py35-none-macosx_10_5_universal2", + "py35-none-macosx_10_4_universal2", + "py34-none-macosx_14_0_arm64", + "py34-none-macosx_14_0_universal2", + "py34-none-macosx_13_0_arm64", + "py34-none-macosx_13_0_universal2", + "py34-none-macosx_12_0_arm64", + "py34-none-macosx_12_0_universal2", + "py34-none-macosx_11_0_arm64", + "py34-none-macosx_11_0_universal2", + "py34-none-macosx_10_16_universal2", + "py34-none-macosx_10_15_universal2", + "py34-none-macosx_10_14_universal2", + "py34-none-macosx_10_13_universal2", + "py34-none-macosx_10_12_universal2", + "py34-none-macosx_10_11_universal2", + "py34-none-macosx_10_10_universal2", + "py34-none-macosx_10_9_universal2", + "py34-none-macosx_10_8_universal2", + "py34-none-macosx_10_7_universal2", + "py34-none-macosx_10_6_universal2", + "py34-none-macosx_10_5_universal2", + "py34-none-macosx_10_4_universal2", + "py33-none-macosx_14_0_arm64", + "py33-none-macosx_14_0_universal2", + "py33-none-macosx_13_0_arm64", + "py33-none-macosx_13_0_universal2", + "py33-none-macosx_12_0_arm64", + "py33-none-macosx_12_0_universal2", + "py33-none-macosx_11_0_arm64", + "py33-none-macosx_11_0_universal2", + "py33-none-macosx_10_16_universal2", + "py33-none-macosx_10_15_universal2", + "py33-none-macosx_10_14_universal2", + "py33-none-macosx_10_13_universal2", + "py33-none-macosx_10_12_universal2", + "py33-none-macosx_10_11_universal2", + "py33-none-macosx_10_10_universal2", + "py33-none-macosx_10_9_universal2", + "py33-none-macosx_10_8_universal2", + "py33-none-macosx_10_7_universal2", + "py33-none-macosx_10_6_universal2", + "py33-none-macosx_10_5_universal2", + "py33-none-macosx_10_4_universal2", + "py32-none-macosx_14_0_arm64", + "py32-none-macosx_14_0_universal2", + "py32-none-macosx_13_0_arm64", + "py32-none-macosx_13_0_universal2", + "py32-none-macosx_12_0_arm64", + "py32-none-macosx_12_0_universal2", + "py32-none-macosx_11_0_arm64", + "py32-none-macosx_11_0_universal2", + "py32-none-macosx_10_16_universal2", + "py32-none-macosx_10_15_universal2", + "py32-none-macosx_10_14_universal2", + "py32-none-macosx_10_13_universal2", + "py32-none-macosx_10_12_universal2", + "py32-none-macosx_10_11_universal2", + "py32-none-macosx_10_10_universal2", + "py32-none-macosx_10_9_universal2", + "py32-none-macosx_10_8_universal2", + "py32-none-macosx_10_7_universal2", + "py32-none-macosx_10_6_universal2", + "py32-none-macosx_10_5_universal2", + "py32-none-macosx_10_4_universal2", + "py31-none-macosx_14_0_arm64", + "py31-none-macosx_14_0_universal2", + "py31-none-macosx_13_0_arm64", + "py31-none-macosx_13_0_universal2", + "py31-none-macosx_12_0_arm64", + "py31-none-macosx_12_0_universal2", + "py31-none-macosx_11_0_arm64", + "py31-none-macosx_11_0_universal2", + "py31-none-macosx_10_16_universal2", + "py31-none-macosx_10_15_universal2", + "py31-none-macosx_10_14_universal2", + "py31-none-macosx_10_13_universal2", + "py31-none-macosx_10_12_universal2", + "py31-none-macosx_10_11_universal2", + "py31-none-macosx_10_10_universal2", + "py31-none-macosx_10_9_universal2", + "py31-none-macosx_10_8_universal2", + "py31-none-macosx_10_7_universal2", + "py31-none-macosx_10_6_universal2", + "py31-none-macosx_10_5_universal2", + "py31-none-macosx_10_4_universal2", + "py30-none-macosx_14_0_arm64", + "py30-none-macosx_14_0_universal2", + "py30-none-macosx_13_0_arm64", + "py30-none-macosx_13_0_universal2", + "py30-none-macosx_12_0_arm64", + "py30-none-macosx_12_0_universal2", + "py30-none-macosx_11_0_arm64", + "py30-none-macosx_11_0_universal2", + "py30-none-macosx_10_16_universal2", + "py30-none-macosx_10_15_universal2", + "py30-none-macosx_10_14_universal2", + "py30-none-macosx_10_13_universal2", + "py30-none-macosx_10_12_universal2", + "py30-none-macosx_10_11_universal2", + "py30-none-macosx_10_10_universal2", + "py30-none-macosx_10_9_universal2", + "py30-none-macosx_10_8_universal2", + "py30-none-macosx_10_7_universal2", + "py30-none-macosx_10_6_universal2", + "py30-none-macosx_10_5_universal2", + "py30-none-macosx_10_4_universal2", + "cp312-none-any", + "py312-none-any", + "py3-none-any", + "py311-none-any", + "py310-none-any", + "py39-none-any", + "py38-none-any", + "py37-none-any", + "py36-none-any", + "py35-none-any", + "py34-none-any", + "py33-none-any", + "py32-none-any", + "py31-none-any", + "py30-none-any" + ], + "marker_environment": { + "implementation_name": "cpython", + "implementation_version": "3.12.6", + "os_name": "posix", + "platform_machine": "arm64", + "platform_python_implementation": "CPython", + "platform_release": "23.6.0", + "platform_system": "Darwin", + "platform_version": "Darwin Kernel Version 23.6.0: Mon Jul 29 21:13:03 PDT 2024; root:xnu-10063.141.2~1/RELEASE_ARM64_VMAPPLE", + "python_full_version": "3.12.6", + "python_version": "3.12", + "sys_platform": "darwin" + } +} \ No newline at end of file diff --git a/package/complete-platforms/macos-x86_64.json b/package/complete-platforms/macos-x86_64.json new file mode 100644 index 000000000..a3ce609cc --- /dev/null +++ b/package/complete-platforms/macos-x86_64.json @@ -0,0 +1,2629 @@ +{ + "__meta_data__": { + "comment": "DO NOT EDIT - Generated via: `tox -e gen-scie-platform -- --pbs-release 20240909 --python-version 3.12.6`.", + "pbs-release": "20240909", + "python-version": "3.12.6" + }, + "compatible_tags": [ + "cp312-cp312-macosx_13_0_x86_64", + "cp312-cp312-macosx_13_0_intel", + "cp312-cp312-macosx_13_0_fat64", + "cp312-cp312-macosx_13_0_fat32", + "cp312-cp312-macosx_13_0_universal2", + "cp312-cp312-macosx_13_0_universal", + "cp312-cp312-macosx_12_0_x86_64", + "cp312-cp312-macosx_12_0_intel", + "cp312-cp312-macosx_12_0_fat64", + "cp312-cp312-macosx_12_0_fat32", + "cp312-cp312-macosx_12_0_universal2", + "cp312-cp312-macosx_12_0_universal", + "cp312-cp312-macosx_11_0_x86_64", + "cp312-cp312-macosx_11_0_intel", + "cp312-cp312-macosx_11_0_fat64", + "cp312-cp312-macosx_11_0_fat32", + "cp312-cp312-macosx_11_0_universal2", + "cp312-cp312-macosx_11_0_universal", + "cp312-cp312-macosx_10_16_x86_64", + "cp312-cp312-macosx_10_16_intel", + "cp312-cp312-macosx_10_16_fat64", + "cp312-cp312-macosx_10_16_fat32", + "cp312-cp312-macosx_10_16_universal2", + "cp312-cp312-macosx_10_16_universal", + "cp312-cp312-macosx_10_15_x86_64", + "cp312-cp312-macosx_10_15_intel", + "cp312-cp312-macosx_10_15_fat64", + "cp312-cp312-macosx_10_15_fat32", + "cp312-cp312-macosx_10_15_universal2", + "cp312-cp312-macosx_10_15_universal", + "cp312-cp312-macosx_10_14_x86_64", + "cp312-cp312-macosx_10_14_intel", + "cp312-cp312-macosx_10_14_fat64", + "cp312-cp312-macosx_10_14_fat32", + "cp312-cp312-macosx_10_14_universal2", + "cp312-cp312-macosx_10_14_universal", + "cp312-cp312-macosx_10_13_x86_64", + "cp312-cp312-macosx_10_13_intel", + "cp312-cp312-macosx_10_13_fat64", + "cp312-cp312-macosx_10_13_fat32", + "cp312-cp312-macosx_10_13_universal2", + "cp312-cp312-macosx_10_13_universal", + "cp312-cp312-macosx_10_12_x86_64", + "cp312-cp312-macosx_10_12_intel", + "cp312-cp312-macosx_10_12_fat64", + "cp312-cp312-macosx_10_12_fat32", + "cp312-cp312-macosx_10_12_universal2", + "cp312-cp312-macosx_10_12_universal", + "cp312-cp312-macosx_10_11_x86_64", + "cp312-cp312-macosx_10_11_intel", + "cp312-cp312-macosx_10_11_fat64", + "cp312-cp312-macosx_10_11_fat32", + "cp312-cp312-macosx_10_11_universal2", + "cp312-cp312-macosx_10_11_universal", + "cp312-cp312-macosx_10_10_x86_64", + "cp312-cp312-macosx_10_10_intel", + "cp312-cp312-macosx_10_10_fat64", + "cp312-cp312-macosx_10_10_fat32", + "cp312-cp312-macosx_10_10_universal2", + "cp312-cp312-macosx_10_10_universal", + "cp312-cp312-macosx_10_9_x86_64", + "cp312-cp312-macosx_10_9_intel", + "cp312-cp312-macosx_10_9_fat64", + "cp312-cp312-macosx_10_9_fat32", + "cp312-cp312-macosx_10_9_universal2", + "cp312-cp312-macosx_10_9_universal", + "cp312-cp312-macosx_10_8_x86_64", + "cp312-cp312-macosx_10_8_intel", + "cp312-cp312-macosx_10_8_fat64", + "cp312-cp312-macosx_10_8_fat32", + "cp312-cp312-macosx_10_8_universal2", + "cp312-cp312-macosx_10_8_universal", + "cp312-cp312-macosx_10_7_x86_64", + "cp312-cp312-macosx_10_7_intel", + "cp312-cp312-macosx_10_7_fat64", + "cp312-cp312-macosx_10_7_fat32", + "cp312-cp312-macosx_10_7_universal2", + "cp312-cp312-macosx_10_7_universal", + "cp312-cp312-macosx_10_6_x86_64", + "cp312-cp312-macosx_10_6_intel", + "cp312-cp312-macosx_10_6_fat64", + "cp312-cp312-macosx_10_6_fat32", + "cp312-cp312-macosx_10_6_universal2", + "cp312-cp312-macosx_10_6_universal", + "cp312-cp312-macosx_10_5_x86_64", + "cp312-cp312-macosx_10_5_intel", + "cp312-cp312-macosx_10_5_fat64", + "cp312-cp312-macosx_10_5_fat32", + "cp312-cp312-macosx_10_5_universal2", + "cp312-cp312-macosx_10_5_universal", + "cp312-cp312-macosx_10_4_x86_64", + "cp312-cp312-macosx_10_4_intel", + "cp312-cp312-macosx_10_4_fat64", + "cp312-cp312-macosx_10_4_fat32", + "cp312-cp312-macosx_10_4_universal2", + "cp312-cp312-macosx_10_4_universal", + "cp312-abi3-macosx_13_0_x86_64", + "cp312-abi3-macosx_13_0_intel", + "cp312-abi3-macosx_13_0_fat64", + "cp312-abi3-macosx_13_0_fat32", + "cp312-abi3-macosx_13_0_universal2", + "cp312-abi3-macosx_13_0_universal", + "cp312-abi3-macosx_12_0_x86_64", + "cp312-abi3-macosx_12_0_intel", + "cp312-abi3-macosx_12_0_fat64", + "cp312-abi3-macosx_12_0_fat32", + "cp312-abi3-macosx_12_0_universal2", + "cp312-abi3-macosx_12_0_universal", + "cp312-abi3-macosx_11_0_x86_64", + "cp312-abi3-macosx_11_0_intel", + "cp312-abi3-macosx_11_0_fat64", + "cp312-abi3-macosx_11_0_fat32", + "cp312-abi3-macosx_11_0_universal2", + "cp312-abi3-macosx_11_0_universal", + "cp312-abi3-macosx_10_16_x86_64", + "cp312-abi3-macosx_10_16_intel", + "cp312-abi3-macosx_10_16_fat64", + "cp312-abi3-macosx_10_16_fat32", + "cp312-abi3-macosx_10_16_universal2", + "cp312-abi3-macosx_10_16_universal", + "cp312-abi3-macosx_10_15_x86_64", + "cp312-abi3-macosx_10_15_intel", + "cp312-abi3-macosx_10_15_fat64", + "cp312-abi3-macosx_10_15_fat32", + "cp312-abi3-macosx_10_15_universal2", + "cp312-abi3-macosx_10_15_universal", + "cp312-abi3-macosx_10_14_x86_64", + "cp312-abi3-macosx_10_14_intel", + "cp312-abi3-macosx_10_14_fat64", + "cp312-abi3-macosx_10_14_fat32", + "cp312-abi3-macosx_10_14_universal2", + "cp312-abi3-macosx_10_14_universal", + "cp312-abi3-macosx_10_13_x86_64", + "cp312-abi3-macosx_10_13_intel", + "cp312-abi3-macosx_10_13_fat64", + "cp312-abi3-macosx_10_13_fat32", + "cp312-abi3-macosx_10_13_universal2", + "cp312-abi3-macosx_10_13_universal", + "cp312-abi3-macosx_10_12_x86_64", + "cp312-abi3-macosx_10_12_intel", + "cp312-abi3-macosx_10_12_fat64", + "cp312-abi3-macosx_10_12_fat32", + "cp312-abi3-macosx_10_12_universal2", + "cp312-abi3-macosx_10_12_universal", + "cp312-abi3-macosx_10_11_x86_64", + "cp312-abi3-macosx_10_11_intel", + "cp312-abi3-macosx_10_11_fat64", + "cp312-abi3-macosx_10_11_fat32", + "cp312-abi3-macosx_10_11_universal2", + "cp312-abi3-macosx_10_11_universal", + "cp312-abi3-macosx_10_10_x86_64", + "cp312-abi3-macosx_10_10_intel", + "cp312-abi3-macosx_10_10_fat64", + "cp312-abi3-macosx_10_10_fat32", + "cp312-abi3-macosx_10_10_universal2", + "cp312-abi3-macosx_10_10_universal", + "cp312-abi3-macosx_10_9_x86_64", + "cp312-abi3-macosx_10_9_intel", + "cp312-abi3-macosx_10_9_fat64", + "cp312-abi3-macosx_10_9_fat32", + "cp312-abi3-macosx_10_9_universal2", + "cp312-abi3-macosx_10_9_universal", + "cp312-abi3-macosx_10_8_x86_64", + "cp312-abi3-macosx_10_8_intel", + "cp312-abi3-macosx_10_8_fat64", + "cp312-abi3-macosx_10_8_fat32", + "cp312-abi3-macosx_10_8_universal2", + "cp312-abi3-macosx_10_8_universal", + "cp312-abi3-macosx_10_7_x86_64", + "cp312-abi3-macosx_10_7_intel", + "cp312-abi3-macosx_10_7_fat64", + "cp312-abi3-macosx_10_7_fat32", + "cp312-abi3-macosx_10_7_universal2", + "cp312-abi3-macosx_10_7_universal", + "cp312-abi3-macosx_10_6_x86_64", + "cp312-abi3-macosx_10_6_intel", + "cp312-abi3-macosx_10_6_fat64", + "cp312-abi3-macosx_10_6_fat32", + "cp312-abi3-macosx_10_6_universal2", + "cp312-abi3-macosx_10_6_universal", + "cp312-abi3-macosx_10_5_x86_64", + "cp312-abi3-macosx_10_5_intel", + "cp312-abi3-macosx_10_5_fat64", + "cp312-abi3-macosx_10_5_fat32", + "cp312-abi3-macosx_10_5_universal2", + "cp312-abi3-macosx_10_5_universal", + "cp312-abi3-macosx_10_4_x86_64", + "cp312-abi3-macosx_10_4_intel", + "cp312-abi3-macosx_10_4_fat64", + "cp312-abi3-macosx_10_4_fat32", + "cp312-abi3-macosx_10_4_universal2", + "cp312-abi3-macosx_10_4_universal", + "cp312-none-macosx_13_0_x86_64", + "cp312-none-macosx_13_0_intel", + "cp312-none-macosx_13_0_fat64", + "cp312-none-macosx_13_0_fat32", + "cp312-none-macosx_13_0_universal2", + "cp312-none-macosx_13_0_universal", + "cp312-none-macosx_12_0_x86_64", + "cp312-none-macosx_12_0_intel", + "cp312-none-macosx_12_0_fat64", + "cp312-none-macosx_12_0_fat32", + "cp312-none-macosx_12_0_universal2", + "cp312-none-macosx_12_0_universal", + "cp312-none-macosx_11_0_x86_64", + "cp312-none-macosx_11_0_intel", + "cp312-none-macosx_11_0_fat64", + "cp312-none-macosx_11_0_fat32", + "cp312-none-macosx_11_0_universal2", + "cp312-none-macosx_11_0_universal", + "cp312-none-macosx_10_16_x86_64", + "cp312-none-macosx_10_16_intel", + "cp312-none-macosx_10_16_fat64", + "cp312-none-macosx_10_16_fat32", + "cp312-none-macosx_10_16_universal2", + "cp312-none-macosx_10_16_universal", + "cp312-none-macosx_10_15_x86_64", + "cp312-none-macosx_10_15_intel", + "cp312-none-macosx_10_15_fat64", + "cp312-none-macosx_10_15_fat32", + "cp312-none-macosx_10_15_universal2", + "cp312-none-macosx_10_15_universal", + "cp312-none-macosx_10_14_x86_64", + "cp312-none-macosx_10_14_intel", + "cp312-none-macosx_10_14_fat64", + "cp312-none-macosx_10_14_fat32", + "cp312-none-macosx_10_14_universal2", + "cp312-none-macosx_10_14_universal", + "cp312-none-macosx_10_13_x86_64", + "cp312-none-macosx_10_13_intel", + "cp312-none-macosx_10_13_fat64", + "cp312-none-macosx_10_13_fat32", + "cp312-none-macosx_10_13_universal2", + "cp312-none-macosx_10_13_universal", + "cp312-none-macosx_10_12_x86_64", + "cp312-none-macosx_10_12_intel", + "cp312-none-macosx_10_12_fat64", + "cp312-none-macosx_10_12_fat32", + "cp312-none-macosx_10_12_universal2", + "cp312-none-macosx_10_12_universal", + "cp312-none-macosx_10_11_x86_64", + "cp312-none-macosx_10_11_intel", + "cp312-none-macosx_10_11_fat64", + "cp312-none-macosx_10_11_fat32", + "cp312-none-macosx_10_11_universal2", + "cp312-none-macosx_10_11_universal", + "cp312-none-macosx_10_10_x86_64", + "cp312-none-macosx_10_10_intel", + "cp312-none-macosx_10_10_fat64", + "cp312-none-macosx_10_10_fat32", + "cp312-none-macosx_10_10_universal2", + "cp312-none-macosx_10_10_universal", + "cp312-none-macosx_10_9_x86_64", + "cp312-none-macosx_10_9_intel", + "cp312-none-macosx_10_9_fat64", + "cp312-none-macosx_10_9_fat32", + "cp312-none-macosx_10_9_universal2", + "cp312-none-macosx_10_9_universal", + "cp312-none-macosx_10_8_x86_64", + "cp312-none-macosx_10_8_intel", + "cp312-none-macosx_10_8_fat64", + "cp312-none-macosx_10_8_fat32", + "cp312-none-macosx_10_8_universal2", + "cp312-none-macosx_10_8_universal", + "cp312-none-macosx_10_7_x86_64", + "cp312-none-macosx_10_7_intel", + "cp312-none-macosx_10_7_fat64", + "cp312-none-macosx_10_7_fat32", + "cp312-none-macosx_10_7_universal2", + "cp312-none-macosx_10_7_universal", + "cp312-none-macosx_10_6_x86_64", + "cp312-none-macosx_10_6_intel", + "cp312-none-macosx_10_6_fat64", + "cp312-none-macosx_10_6_fat32", + "cp312-none-macosx_10_6_universal2", + "cp312-none-macosx_10_6_universal", + "cp312-none-macosx_10_5_x86_64", + "cp312-none-macosx_10_5_intel", + "cp312-none-macosx_10_5_fat64", + "cp312-none-macosx_10_5_fat32", + "cp312-none-macosx_10_5_universal2", + "cp312-none-macosx_10_5_universal", + "cp312-none-macosx_10_4_x86_64", + "cp312-none-macosx_10_4_intel", + "cp312-none-macosx_10_4_fat64", + "cp312-none-macosx_10_4_fat32", + "cp312-none-macosx_10_4_universal2", + "cp312-none-macosx_10_4_universal", + "cp311-abi3-macosx_13_0_x86_64", + "cp311-abi3-macosx_13_0_intel", + "cp311-abi3-macosx_13_0_fat64", + "cp311-abi3-macosx_13_0_fat32", + "cp311-abi3-macosx_13_0_universal2", + "cp311-abi3-macosx_13_0_universal", + "cp311-abi3-macosx_12_0_x86_64", + "cp311-abi3-macosx_12_0_intel", + "cp311-abi3-macosx_12_0_fat64", + "cp311-abi3-macosx_12_0_fat32", + "cp311-abi3-macosx_12_0_universal2", + "cp311-abi3-macosx_12_0_universal", + "cp311-abi3-macosx_11_0_x86_64", + "cp311-abi3-macosx_11_0_intel", + "cp311-abi3-macosx_11_0_fat64", + "cp311-abi3-macosx_11_0_fat32", + "cp311-abi3-macosx_11_0_universal2", + "cp311-abi3-macosx_11_0_universal", + "cp311-abi3-macosx_10_16_x86_64", + "cp311-abi3-macosx_10_16_intel", + "cp311-abi3-macosx_10_16_fat64", + "cp311-abi3-macosx_10_16_fat32", + "cp311-abi3-macosx_10_16_universal2", + "cp311-abi3-macosx_10_16_universal", + "cp311-abi3-macosx_10_15_x86_64", + "cp311-abi3-macosx_10_15_intel", + "cp311-abi3-macosx_10_15_fat64", + "cp311-abi3-macosx_10_15_fat32", + "cp311-abi3-macosx_10_15_universal2", + "cp311-abi3-macosx_10_15_universal", + "cp311-abi3-macosx_10_14_x86_64", + "cp311-abi3-macosx_10_14_intel", + "cp311-abi3-macosx_10_14_fat64", + "cp311-abi3-macosx_10_14_fat32", + "cp311-abi3-macosx_10_14_universal2", + "cp311-abi3-macosx_10_14_universal", + "cp311-abi3-macosx_10_13_x86_64", + "cp311-abi3-macosx_10_13_intel", + "cp311-abi3-macosx_10_13_fat64", + "cp311-abi3-macosx_10_13_fat32", + "cp311-abi3-macosx_10_13_universal2", + "cp311-abi3-macosx_10_13_universal", + "cp311-abi3-macosx_10_12_x86_64", + "cp311-abi3-macosx_10_12_intel", + "cp311-abi3-macosx_10_12_fat64", + "cp311-abi3-macosx_10_12_fat32", + "cp311-abi3-macosx_10_12_universal2", + "cp311-abi3-macosx_10_12_universal", + "cp311-abi3-macosx_10_11_x86_64", + "cp311-abi3-macosx_10_11_intel", + "cp311-abi3-macosx_10_11_fat64", + "cp311-abi3-macosx_10_11_fat32", + "cp311-abi3-macosx_10_11_universal2", + "cp311-abi3-macosx_10_11_universal", + "cp311-abi3-macosx_10_10_x86_64", + "cp311-abi3-macosx_10_10_intel", + "cp311-abi3-macosx_10_10_fat64", + "cp311-abi3-macosx_10_10_fat32", + "cp311-abi3-macosx_10_10_universal2", + "cp311-abi3-macosx_10_10_universal", + "cp311-abi3-macosx_10_9_x86_64", + "cp311-abi3-macosx_10_9_intel", + "cp311-abi3-macosx_10_9_fat64", + "cp311-abi3-macosx_10_9_fat32", + "cp311-abi3-macosx_10_9_universal2", + "cp311-abi3-macosx_10_9_universal", + "cp311-abi3-macosx_10_8_x86_64", + "cp311-abi3-macosx_10_8_intel", + "cp311-abi3-macosx_10_8_fat64", + "cp311-abi3-macosx_10_8_fat32", + "cp311-abi3-macosx_10_8_universal2", + "cp311-abi3-macosx_10_8_universal", + "cp311-abi3-macosx_10_7_x86_64", + "cp311-abi3-macosx_10_7_intel", + "cp311-abi3-macosx_10_7_fat64", + "cp311-abi3-macosx_10_7_fat32", + "cp311-abi3-macosx_10_7_universal2", + "cp311-abi3-macosx_10_7_universal", + "cp311-abi3-macosx_10_6_x86_64", + "cp311-abi3-macosx_10_6_intel", + "cp311-abi3-macosx_10_6_fat64", + "cp311-abi3-macosx_10_6_fat32", + "cp311-abi3-macosx_10_6_universal2", + "cp311-abi3-macosx_10_6_universal", + "cp311-abi3-macosx_10_5_x86_64", + "cp311-abi3-macosx_10_5_intel", + "cp311-abi3-macosx_10_5_fat64", + "cp311-abi3-macosx_10_5_fat32", + "cp311-abi3-macosx_10_5_universal2", + "cp311-abi3-macosx_10_5_universal", + "cp311-abi3-macosx_10_4_x86_64", + "cp311-abi3-macosx_10_4_intel", + "cp311-abi3-macosx_10_4_fat64", + "cp311-abi3-macosx_10_4_fat32", + "cp311-abi3-macosx_10_4_universal2", + "cp311-abi3-macosx_10_4_universal", + "cp310-abi3-macosx_13_0_x86_64", + "cp310-abi3-macosx_13_0_intel", + "cp310-abi3-macosx_13_0_fat64", + "cp310-abi3-macosx_13_0_fat32", + "cp310-abi3-macosx_13_0_universal2", + "cp310-abi3-macosx_13_0_universal", + "cp310-abi3-macosx_12_0_x86_64", + "cp310-abi3-macosx_12_0_intel", + "cp310-abi3-macosx_12_0_fat64", + "cp310-abi3-macosx_12_0_fat32", + "cp310-abi3-macosx_12_0_universal2", + "cp310-abi3-macosx_12_0_universal", + "cp310-abi3-macosx_11_0_x86_64", + "cp310-abi3-macosx_11_0_intel", + "cp310-abi3-macosx_11_0_fat64", + "cp310-abi3-macosx_11_0_fat32", + "cp310-abi3-macosx_11_0_universal2", + "cp310-abi3-macosx_11_0_universal", + "cp310-abi3-macosx_10_16_x86_64", + "cp310-abi3-macosx_10_16_intel", + "cp310-abi3-macosx_10_16_fat64", + "cp310-abi3-macosx_10_16_fat32", + "cp310-abi3-macosx_10_16_universal2", + "cp310-abi3-macosx_10_16_universal", + "cp310-abi3-macosx_10_15_x86_64", + "cp310-abi3-macosx_10_15_intel", + "cp310-abi3-macosx_10_15_fat64", + "cp310-abi3-macosx_10_15_fat32", + "cp310-abi3-macosx_10_15_universal2", + "cp310-abi3-macosx_10_15_universal", + "cp310-abi3-macosx_10_14_x86_64", + "cp310-abi3-macosx_10_14_intel", + "cp310-abi3-macosx_10_14_fat64", + "cp310-abi3-macosx_10_14_fat32", + "cp310-abi3-macosx_10_14_universal2", + "cp310-abi3-macosx_10_14_universal", + "cp310-abi3-macosx_10_13_x86_64", + "cp310-abi3-macosx_10_13_intel", + "cp310-abi3-macosx_10_13_fat64", + "cp310-abi3-macosx_10_13_fat32", + "cp310-abi3-macosx_10_13_universal2", + "cp310-abi3-macosx_10_13_universal", + "cp310-abi3-macosx_10_12_x86_64", + "cp310-abi3-macosx_10_12_intel", + "cp310-abi3-macosx_10_12_fat64", + "cp310-abi3-macosx_10_12_fat32", + "cp310-abi3-macosx_10_12_universal2", + "cp310-abi3-macosx_10_12_universal", + "cp310-abi3-macosx_10_11_x86_64", + "cp310-abi3-macosx_10_11_intel", + "cp310-abi3-macosx_10_11_fat64", + "cp310-abi3-macosx_10_11_fat32", + "cp310-abi3-macosx_10_11_universal2", + "cp310-abi3-macosx_10_11_universal", + "cp310-abi3-macosx_10_10_x86_64", + "cp310-abi3-macosx_10_10_intel", + "cp310-abi3-macosx_10_10_fat64", + "cp310-abi3-macosx_10_10_fat32", + "cp310-abi3-macosx_10_10_universal2", + "cp310-abi3-macosx_10_10_universal", + "cp310-abi3-macosx_10_9_x86_64", + "cp310-abi3-macosx_10_9_intel", + "cp310-abi3-macosx_10_9_fat64", + "cp310-abi3-macosx_10_9_fat32", + "cp310-abi3-macosx_10_9_universal2", + "cp310-abi3-macosx_10_9_universal", + "cp310-abi3-macosx_10_8_x86_64", + "cp310-abi3-macosx_10_8_intel", + "cp310-abi3-macosx_10_8_fat64", + "cp310-abi3-macosx_10_8_fat32", + "cp310-abi3-macosx_10_8_universal2", + "cp310-abi3-macosx_10_8_universal", + "cp310-abi3-macosx_10_7_x86_64", + "cp310-abi3-macosx_10_7_intel", + "cp310-abi3-macosx_10_7_fat64", + "cp310-abi3-macosx_10_7_fat32", + "cp310-abi3-macosx_10_7_universal2", + "cp310-abi3-macosx_10_7_universal", + "cp310-abi3-macosx_10_6_x86_64", + "cp310-abi3-macosx_10_6_intel", + "cp310-abi3-macosx_10_6_fat64", + "cp310-abi3-macosx_10_6_fat32", + "cp310-abi3-macosx_10_6_universal2", + "cp310-abi3-macosx_10_6_universal", + "cp310-abi3-macosx_10_5_x86_64", + "cp310-abi3-macosx_10_5_intel", + "cp310-abi3-macosx_10_5_fat64", + "cp310-abi3-macosx_10_5_fat32", + "cp310-abi3-macosx_10_5_universal2", + "cp310-abi3-macosx_10_5_universal", + "cp310-abi3-macosx_10_4_x86_64", + "cp310-abi3-macosx_10_4_intel", + "cp310-abi3-macosx_10_4_fat64", + "cp310-abi3-macosx_10_4_fat32", + "cp310-abi3-macosx_10_4_universal2", + "cp310-abi3-macosx_10_4_universal", + "cp39-abi3-macosx_13_0_x86_64", + "cp39-abi3-macosx_13_0_intel", + "cp39-abi3-macosx_13_0_fat64", + "cp39-abi3-macosx_13_0_fat32", + "cp39-abi3-macosx_13_0_universal2", + "cp39-abi3-macosx_13_0_universal", + "cp39-abi3-macosx_12_0_x86_64", + "cp39-abi3-macosx_12_0_intel", + "cp39-abi3-macosx_12_0_fat64", + "cp39-abi3-macosx_12_0_fat32", + "cp39-abi3-macosx_12_0_universal2", + "cp39-abi3-macosx_12_0_universal", + "cp39-abi3-macosx_11_0_x86_64", + "cp39-abi3-macosx_11_0_intel", + "cp39-abi3-macosx_11_0_fat64", + "cp39-abi3-macosx_11_0_fat32", + "cp39-abi3-macosx_11_0_universal2", + "cp39-abi3-macosx_11_0_universal", + "cp39-abi3-macosx_10_16_x86_64", + "cp39-abi3-macosx_10_16_intel", + "cp39-abi3-macosx_10_16_fat64", + "cp39-abi3-macosx_10_16_fat32", + "cp39-abi3-macosx_10_16_universal2", + "cp39-abi3-macosx_10_16_universal", + "cp39-abi3-macosx_10_15_x86_64", + "cp39-abi3-macosx_10_15_intel", + "cp39-abi3-macosx_10_15_fat64", + "cp39-abi3-macosx_10_15_fat32", + "cp39-abi3-macosx_10_15_universal2", + "cp39-abi3-macosx_10_15_universal", + "cp39-abi3-macosx_10_14_x86_64", + "cp39-abi3-macosx_10_14_intel", + "cp39-abi3-macosx_10_14_fat64", + "cp39-abi3-macosx_10_14_fat32", + "cp39-abi3-macosx_10_14_universal2", + "cp39-abi3-macosx_10_14_universal", + "cp39-abi3-macosx_10_13_x86_64", + "cp39-abi3-macosx_10_13_intel", + "cp39-abi3-macosx_10_13_fat64", + "cp39-abi3-macosx_10_13_fat32", + "cp39-abi3-macosx_10_13_universal2", + "cp39-abi3-macosx_10_13_universal", + "cp39-abi3-macosx_10_12_x86_64", + "cp39-abi3-macosx_10_12_intel", + "cp39-abi3-macosx_10_12_fat64", + "cp39-abi3-macosx_10_12_fat32", + "cp39-abi3-macosx_10_12_universal2", + "cp39-abi3-macosx_10_12_universal", + "cp39-abi3-macosx_10_11_x86_64", + "cp39-abi3-macosx_10_11_intel", + "cp39-abi3-macosx_10_11_fat64", + "cp39-abi3-macosx_10_11_fat32", + "cp39-abi3-macosx_10_11_universal2", + "cp39-abi3-macosx_10_11_universal", + "cp39-abi3-macosx_10_10_x86_64", + "cp39-abi3-macosx_10_10_intel", + "cp39-abi3-macosx_10_10_fat64", + "cp39-abi3-macosx_10_10_fat32", + "cp39-abi3-macosx_10_10_universal2", + "cp39-abi3-macosx_10_10_universal", + "cp39-abi3-macosx_10_9_x86_64", + "cp39-abi3-macosx_10_9_intel", + "cp39-abi3-macosx_10_9_fat64", + "cp39-abi3-macosx_10_9_fat32", + "cp39-abi3-macosx_10_9_universal2", + "cp39-abi3-macosx_10_9_universal", + "cp39-abi3-macosx_10_8_x86_64", + "cp39-abi3-macosx_10_8_intel", + "cp39-abi3-macosx_10_8_fat64", + "cp39-abi3-macosx_10_8_fat32", + "cp39-abi3-macosx_10_8_universal2", + "cp39-abi3-macosx_10_8_universal", + "cp39-abi3-macosx_10_7_x86_64", + "cp39-abi3-macosx_10_7_intel", + "cp39-abi3-macosx_10_7_fat64", + "cp39-abi3-macosx_10_7_fat32", + "cp39-abi3-macosx_10_7_universal2", + "cp39-abi3-macosx_10_7_universal", + "cp39-abi3-macosx_10_6_x86_64", + "cp39-abi3-macosx_10_6_intel", + "cp39-abi3-macosx_10_6_fat64", + "cp39-abi3-macosx_10_6_fat32", + "cp39-abi3-macosx_10_6_universal2", + "cp39-abi3-macosx_10_6_universal", + "cp39-abi3-macosx_10_5_x86_64", + "cp39-abi3-macosx_10_5_intel", + "cp39-abi3-macosx_10_5_fat64", + "cp39-abi3-macosx_10_5_fat32", + "cp39-abi3-macosx_10_5_universal2", + "cp39-abi3-macosx_10_5_universal", + "cp39-abi3-macosx_10_4_x86_64", + "cp39-abi3-macosx_10_4_intel", + "cp39-abi3-macosx_10_4_fat64", + "cp39-abi3-macosx_10_4_fat32", + "cp39-abi3-macosx_10_4_universal2", + "cp39-abi3-macosx_10_4_universal", + "cp38-abi3-macosx_13_0_x86_64", + "cp38-abi3-macosx_13_0_intel", + "cp38-abi3-macosx_13_0_fat64", + "cp38-abi3-macosx_13_0_fat32", + "cp38-abi3-macosx_13_0_universal2", + "cp38-abi3-macosx_13_0_universal", + "cp38-abi3-macosx_12_0_x86_64", + "cp38-abi3-macosx_12_0_intel", + "cp38-abi3-macosx_12_0_fat64", + "cp38-abi3-macosx_12_0_fat32", + "cp38-abi3-macosx_12_0_universal2", + "cp38-abi3-macosx_12_0_universal", + "cp38-abi3-macosx_11_0_x86_64", + "cp38-abi3-macosx_11_0_intel", + "cp38-abi3-macosx_11_0_fat64", + "cp38-abi3-macosx_11_0_fat32", + "cp38-abi3-macosx_11_0_universal2", + "cp38-abi3-macosx_11_0_universal", + "cp38-abi3-macosx_10_16_x86_64", + "cp38-abi3-macosx_10_16_intel", + "cp38-abi3-macosx_10_16_fat64", + "cp38-abi3-macosx_10_16_fat32", + "cp38-abi3-macosx_10_16_universal2", + "cp38-abi3-macosx_10_16_universal", + "cp38-abi3-macosx_10_15_x86_64", + "cp38-abi3-macosx_10_15_intel", + "cp38-abi3-macosx_10_15_fat64", + "cp38-abi3-macosx_10_15_fat32", + "cp38-abi3-macosx_10_15_universal2", + "cp38-abi3-macosx_10_15_universal", + "cp38-abi3-macosx_10_14_x86_64", + "cp38-abi3-macosx_10_14_intel", + "cp38-abi3-macosx_10_14_fat64", + "cp38-abi3-macosx_10_14_fat32", + "cp38-abi3-macosx_10_14_universal2", + "cp38-abi3-macosx_10_14_universal", + "cp38-abi3-macosx_10_13_x86_64", + "cp38-abi3-macosx_10_13_intel", + "cp38-abi3-macosx_10_13_fat64", + "cp38-abi3-macosx_10_13_fat32", + "cp38-abi3-macosx_10_13_universal2", + "cp38-abi3-macosx_10_13_universal", + "cp38-abi3-macosx_10_12_x86_64", + "cp38-abi3-macosx_10_12_intel", + "cp38-abi3-macosx_10_12_fat64", + "cp38-abi3-macosx_10_12_fat32", + "cp38-abi3-macosx_10_12_universal2", + "cp38-abi3-macosx_10_12_universal", + "cp38-abi3-macosx_10_11_x86_64", + "cp38-abi3-macosx_10_11_intel", + "cp38-abi3-macosx_10_11_fat64", + "cp38-abi3-macosx_10_11_fat32", + "cp38-abi3-macosx_10_11_universal2", + "cp38-abi3-macosx_10_11_universal", + "cp38-abi3-macosx_10_10_x86_64", + "cp38-abi3-macosx_10_10_intel", + "cp38-abi3-macosx_10_10_fat64", + "cp38-abi3-macosx_10_10_fat32", + "cp38-abi3-macosx_10_10_universal2", + "cp38-abi3-macosx_10_10_universal", + "cp38-abi3-macosx_10_9_x86_64", + "cp38-abi3-macosx_10_9_intel", + "cp38-abi3-macosx_10_9_fat64", + "cp38-abi3-macosx_10_9_fat32", + "cp38-abi3-macosx_10_9_universal2", + "cp38-abi3-macosx_10_9_universal", + "cp38-abi3-macosx_10_8_x86_64", + "cp38-abi3-macosx_10_8_intel", + "cp38-abi3-macosx_10_8_fat64", + "cp38-abi3-macosx_10_8_fat32", + "cp38-abi3-macosx_10_8_universal2", + "cp38-abi3-macosx_10_8_universal", + "cp38-abi3-macosx_10_7_x86_64", + "cp38-abi3-macosx_10_7_intel", + "cp38-abi3-macosx_10_7_fat64", + "cp38-abi3-macosx_10_7_fat32", + "cp38-abi3-macosx_10_7_universal2", + "cp38-abi3-macosx_10_7_universal", + "cp38-abi3-macosx_10_6_x86_64", + "cp38-abi3-macosx_10_6_intel", + "cp38-abi3-macosx_10_6_fat64", + "cp38-abi3-macosx_10_6_fat32", + "cp38-abi3-macosx_10_6_universal2", + "cp38-abi3-macosx_10_6_universal", + "cp38-abi3-macosx_10_5_x86_64", + "cp38-abi3-macosx_10_5_intel", + "cp38-abi3-macosx_10_5_fat64", + "cp38-abi3-macosx_10_5_fat32", + "cp38-abi3-macosx_10_5_universal2", + "cp38-abi3-macosx_10_5_universal", + "cp38-abi3-macosx_10_4_x86_64", + "cp38-abi3-macosx_10_4_intel", + "cp38-abi3-macosx_10_4_fat64", + "cp38-abi3-macosx_10_4_fat32", + "cp38-abi3-macosx_10_4_universal2", + "cp38-abi3-macosx_10_4_universal", + "cp37-abi3-macosx_13_0_x86_64", + "cp37-abi3-macosx_13_0_intel", + "cp37-abi3-macosx_13_0_fat64", + "cp37-abi3-macosx_13_0_fat32", + "cp37-abi3-macosx_13_0_universal2", + "cp37-abi3-macosx_13_0_universal", + "cp37-abi3-macosx_12_0_x86_64", + "cp37-abi3-macosx_12_0_intel", + "cp37-abi3-macosx_12_0_fat64", + "cp37-abi3-macosx_12_0_fat32", + "cp37-abi3-macosx_12_0_universal2", + "cp37-abi3-macosx_12_0_universal", + "cp37-abi3-macosx_11_0_x86_64", + "cp37-abi3-macosx_11_0_intel", + "cp37-abi3-macosx_11_0_fat64", + "cp37-abi3-macosx_11_0_fat32", + "cp37-abi3-macosx_11_0_universal2", + "cp37-abi3-macosx_11_0_universal", + "cp37-abi3-macosx_10_16_x86_64", + "cp37-abi3-macosx_10_16_intel", + "cp37-abi3-macosx_10_16_fat64", + "cp37-abi3-macosx_10_16_fat32", + "cp37-abi3-macosx_10_16_universal2", + "cp37-abi3-macosx_10_16_universal", + "cp37-abi3-macosx_10_15_x86_64", + "cp37-abi3-macosx_10_15_intel", + "cp37-abi3-macosx_10_15_fat64", + "cp37-abi3-macosx_10_15_fat32", + "cp37-abi3-macosx_10_15_universal2", + "cp37-abi3-macosx_10_15_universal", + "cp37-abi3-macosx_10_14_x86_64", + "cp37-abi3-macosx_10_14_intel", + "cp37-abi3-macosx_10_14_fat64", + "cp37-abi3-macosx_10_14_fat32", + "cp37-abi3-macosx_10_14_universal2", + "cp37-abi3-macosx_10_14_universal", + "cp37-abi3-macosx_10_13_x86_64", + "cp37-abi3-macosx_10_13_intel", + "cp37-abi3-macosx_10_13_fat64", + "cp37-abi3-macosx_10_13_fat32", + "cp37-abi3-macosx_10_13_universal2", + "cp37-abi3-macosx_10_13_universal", + "cp37-abi3-macosx_10_12_x86_64", + "cp37-abi3-macosx_10_12_intel", + "cp37-abi3-macosx_10_12_fat64", + "cp37-abi3-macosx_10_12_fat32", + "cp37-abi3-macosx_10_12_universal2", + "cp37-abi3-macosx_10_12_universal", + "cp37-abi3-macosx_10_11_x86_64", + "cp37-abi3-macosx_10_11_intel", + "cp37-abi3-macosx_10_11_fat64", + "cp37-abi3-macosx_10_11_fat32", + "cp37-abi3-macosx_10_11_universal2", + "cp37-abi3-macosx_10_11_universal", + "cp37-abi3-macosx_10_10_x86_64", + "cp37-abi3-macosx_10_10_intel", + "cp37-abi3-macosx_10_10_fat64", + "cp37-abi3-macosx_10_10_fat32", + "cp37-abi3-macosx_10_10_universal2", + "cp37-abi3-macosx_10_10_universal", + "cp37-abi3-macosx_10_9_x86_64", + "cp37-abi3-macosx_10_9_intel", + "cp37-abi3-macosx_10_9_fat64", + "cp37-abi3-macosx_10_9_fat32", + "cp37-abi3-macosx_10_9_universal2", + "cp37-abi3-macosx_10_9_universal", + "cp37-abi3-macosx_10_8_x86_64", + "cp37-abi3-macosx_10_8_intel", + "cp37-abi3-macosx_10_8_fat64", + "cp37-abi3-macosx_10_8_fat32", + "cp37-abi3-macosx_10_8_universal2", + "cp37-abi3-macosx_10_8_universal", + "cp37-abi3-macosx_10_7_x86_64", + "cp37-abi3-macosx_10_7_intel", + "cp37-abi3-macosx_10_7_fat64", + "cp37-abi3-macosx_10_7_fat32", + "cp37-abi3-macosx_10_7_universal2", + "cp37-abi3-macosx_10_7_universal", + "cp37-abi3-macosx_10_6_x86_64", + "cp37-abi3-macosx_10_6_intel", + "cp37-abi3-macosx_10_6_fat64", + "cp37-abi3-macosx_10_6_fat32", + "cp37-abi3-macosx_10_6_universal2", + "cp37-abi3-macosx_10_6_universal", + "cp37-abi3-macosx_10_5_x86_64", + "cp37-abi3-macosx_10_5_intel", + "cp37-abi3-macosx_10_5_fat64", + "cp37-abi3-macosx_10_5_fat32", + "cp37-abi3-macosx_10_5_universal2", + "cp37-abi3-macosx_10_5_universal", + "cp37-abi3-macosx_10_4_x86_64", + "cp37-abi3-macosx_10_4_intel", + "cp37-abi3-macosx_10_4_fat64", + "cp37-abi3-macosx_10_4_fat32", + "cp37-abi3-macosx_10_4_universal2", + "cp37-abi3-macosx_10_4_universal", + "cp36-abi3-macosx_13_0_x86_64", + "cp36-abi3-macosx_13_0_intel", + "cp36-abi3-macosx_13_0_fat64", + "cp36-abi3-macosx_13_0_fat32", + "cp36-abi3-macosx_13_0_universal2", + "cp36-abi3-macosx_13_0_universal", + "cp36-abi3-macosx_12_0_x86_64", + "cp36-abi3-macosx_12_0_intel", + "cp36-abi3-macosx_12_0_fat64", + "cp36-abi3-macosx_12_0_fat32", + "cp36-abi3-macosx_12_0_universal2", + "cp36-abi3-macosx_12_0_universal", + "cp36-abi3-macosx_11_0_x86_64", + "cp36-abi3-macosx_11_0_intel", + "cp36-abi3-macosx_11_0_fat64", + "cp36-abi3-macosx_11_0_fat32", + "cp36-abi3-macosx_11_0_universal2", + "cp36-abi3-macosx_11_0_universal", + "cp36-abi3-macosx_10_16_x86_64", + "cp36-abi3-macosx_10_16_intel", + "cp36-abi3-macosx_10_16_fat64", + "cp36-abi3-macosx_10_16_fat32", + "cp36-abi3-macosx_10_16_universal2", + "cp36-abi3-macosx_10_16_universal", + "cp36-abi3-macosx_10_15_x86_64", + "cp36-abi3-macosx_10_15_intel", + "cp36-abi3-macosx_10_15_fat64", + "cp36-abi3-macosx_10_15_fat32", + "cp36-abi3-macosx_10_15_universal2", + "cp36-abi3-macosx_10_15_universal", + "cp36-abi3-macosx_10_14_x86_64", + "cp36-abi3-macosx_10_14_intel", + "cp36-abi3-macosx_10_14_fat64", + "cp36-abi3-macosx_10_14_fat32", + "cp36-abi3-macosx_10_14_universal2", + "cp36-abi3-macosx_10_14_universal", + "cp36-abi3-macosx_10_13_x86_64", + "cp36-abi3-macosx_10_13_intel", + "cp36-abi3-macosx_10_13_fat64", + "cp36-abi3-macosx_10_13_fat32", + "cp36-abi3-macosx_10_13_universal2", + "cp36-abi3-macosx_10_13_universal", + "cp36-abi3-macosx_10_12_x86_64", + "cp36-abi3-macosx_10_12_intel", + "cp36-abi3-macosx_10_12_fat64", + "cp36-abi3-macosx_10_12_fat32", + "cp36-abi3-macosx_10_12_universal2", + "cp36-abi3-macosx_10_12_universal", + "cp36-abi3-macosx_10_11_x86_64", + "cp36-abi3-macosx_10_11_intel", + "cp36-abi3-macosx_10_11_fat64", + "cp36-abi3-macosx_10_11_fat32", + "cp36-abi3-macosx_10_11_universal2", + "cp36-abi3-macosx_10_11_universal", + "cp36-abi3-macosx_10_10_x86_64", + "cp36-abi3-macosx_10_10_intel", + "cp36-abi3-macosx_10_10_fat64", + "cp36-abi3-macosx_10_10_fat32", + "cp36-abi3-macosx_10_10_universal2", + "cp36-abi3-macosx_10_10_universal", + "cp36-abi3-macosx_10_9_x86_64", + "cp36-abi3-macosx_10_9_intel", + "cp36-abi3-macosx_10_9_fat64", + "cp36-abi3-macosx_10_9_fat32", + "cp36-abi3-macosx_10_9_universal2", + "cp36-abi3-macosx_10_9_universal", + "cp36-abi3-macosx_10_8_x86_64", + "cp36-abi3-macosx_10_8_intel", + "cp36-abi3-macosx_10_8_fat64", + "cp36-abi3-macosx_10_8_fat32", + "cp36-abi3-macosx_10_8_universal2", + "cp36-abi3-macosx_10_8_universal", + "cp36-abi3-macosx_10_7_x86_64", + "cp36-abi3-macosx_10_7_intel", + "cp36-abi3-macosx_10_7_fat64", + "cp36-abi3-macosx_10_7_fat32", + "cp36-abi3-macosx_10_7_universal2", + "cp36-abi3-macosx_10_7_universal", + "cp36-abi3-macosx_10_6_x86_64", + "cp36-abi3-macosx_10_6_intel", + "cp36-abi3-macosx_10_6_fat64", + "cp36-abi3-macosx_10_6_fat32", + "cp36-abi3-macosx_10_6_universal2", + "cp36-abi3-macosx_10_6_universal", + "cp36-abi3-macosx_10_5_x86_64", + "cp36-abi3-macosx_10_5_intel", + "cp36-abi3-macosx_10_5_fat64", + "cp36-abi3-macosx_10_5_fat32", + "cp36-abi3-macosx_10_5_universal2", + "cp36-abi3-macosx_10_5_universal", + "cp36-abi3-macosx_10_4_x86_64", + "cp36-abi3-macosx_10_4_intel", + "cp36-abi3-macosx_10_4_fat64", + "cp36-abi3-macosx_10_4_fat32", + "cp36-abi3-macosx_10_4_universal2", + "cp36-abi3-macosx_10_4_universal", + "cp35-abi3-macosx_13_0_x86_64", + "cp35-abi3-macosx_13_0_intel", + "cp35-abi3-macosx_13_0_fat64", + "cp35-abi3-macosx_13_0_fat32", + "cp35-abi3-macosx_13_0_universal2", + "cp35-abi3-macosx_13_0_universal", + "cp35-abi3-macosx_12_0_x86_64", + "cp35-abi3-macosx_12_0_intel", + "cp35-abi3-macosx_12_0_fat64", + "cp35-abi3-macosx_12_0_fat32", + "cp35-abi3-macosx_12_0_universal2", + "cp35-abi3-macosx_12_0_universal", + "cp35-abi3-macosx_11_0_x86_64", + "cp35-abi3-macosx_11_0_intel", + "cp35-abi3-macosx_11_0_fat64", + "cp35-abi3-macosx_11_0_fat32", + "cp35-abi3-macosx_11_0_universal2", + "cp35-abi3-macosx_11_0_universal", + "cp35-abi3-macosx_10_16_x86_64", + "cp35-abi3-macosx_10_16_intel", + "cp35-abi3-macosx_10_16_fat64", + "cp35-abi3-macosx_10_16_fat32", + "cp35-abi3-macosx_10_16_universal2", + "cp35-abi3-macosx_10_16_universal", + "cp35-abi3-macosx_10_15_x86_64", + "cp35-abi3-macosx_10_15_intel", + "cp35-abi3-macosx_10_15_fat64", + "cp35-abi3-macosx_10_15_fat32", + "cp35-abi3-macosx_10_15_universal2", + "cp35-abi3-macosx_10_15_universal", + "cp35-abi3-macosx_10_14_x86_64", + "cp35-abi3-macosx_10_14_intel", + "cp35-abi3-macosx_10_14_fat64", + "cp35-abi3-macosx_10_14_fat32", + "cp35-abi3-macosx_10_14_universal2", + "cp35-abi3-macosx_10_14_universal", + "cp35-abi3-macosx_10_13_x86_64", + "cp35-abi3-macosx_10_13_intel", + "cp35-abi3-macosx_10_13_fat64", + "cp35-abi3-macosx_10_13_fat32", + "cp35-abi3-macosx_10_13_universal2", + "cp35-abi3-macosx_10_13_universal", + "cp35-abi3-macosx_10_12_x86_64", + "cp35-abi3-macosx_10_12_intel", + "cp35-abi3-macosx_10_12_fat64", + "cp35-abi3-macosx_10_12_fat32", + "cp35-abi3-macosx_10_12_universal2", + "cp35-abi3-macosx_10_12_universal", + "cp35-abi3-macosx_10_11_x86_64", + "cp35-abi3-macosx_10_11_intel", + "cp35-abi3-macosx_10_11_fat64", + "cp35-abi3-macosx_10_11_fat32", + "cp35-abi3-macosx_10_11_universal2", + "cp35-abi3-macosx_10_11_universal", + "cp35-abi3-macosx_10_10_x86_64", + "cp35-abi3-macosx_10_10_intel", + "cp35-abi3-macosx_10_10_fat64", + "cp35-abi3-macosx_10_10_fat32", + "cp35-abi3-macosx_10_10_universal2", + "cp35-abi3-macosx_10_10_universal", + "cp35-abi3-macosx_10_9_x86_64", + "cp35-abi3-macosx_10_9_intel", + "cp35-abi3-macosx_10_9_fat64", + "cp35-abi3-macosx_10_9_fat32", + "cp35-abi3-macosx_10_9_universal2", + "cp35-abi3-macosx_10_9_universal", + "cp35-abi3-macosx_10_8_x86_64", + "cp35-abi3-macosx_10_8_intel", + "cp35-abi3-macosx_10_8_fat64", + "cp35-abi3-macosx_10_8_fat32", + "cp35-abi3-macosx_10_8_universal2", + "cp35-abi3-macosx_10_8_universal", + "cp35-abi3-macosx_10_7_x86_64", + "cp35-abi3-macosx_10_7_intel", + "cp35-abi3-macosx_10_7_fat64", + "cp35-abi3-macosx_10_7_fat32", + "cp35-abi3-macosx_10_7_universal2", + "cp35-abi3-macosx_10_7_universal", + "cp35-abi3-macosx_10_6_x86_64", + "cp35-abi3-macosx_10_6_intel", + "cp35-abi3-macosx_10_6_fat64", + "cp35-abi3-macosx_10_6_fat32", + "cp35-abi3-macosx_10_6_universal2", + "cp35-abi3-macosx_10_6_universal", + "cp35-abi3-macosx_10_5_x86_64", + "cp35-abi3-macosx_10_5_intel", + "cp35-abi3-macosx_10_5_fat64", + "cp35-abi3-macosx_10_5_fat32", + "cp35-abi3-macosx_10_5_universal2", + "cp35-abi3-macosx_10_5_universal", + "cp35-abi3-macosx_10_4_x86_64", + "cp35-abi3-macosx_10_4_intel", + "cp35-abi3-macosx_10_4_fat64", + "cp35-abi3-macosx_10_4_fat32", + "cp35-abi3-macosx_10_4_universal2", + "cp35-abi3-macosx_10_4_universal", + "cp34-abi3-macosx_13_0_x86_64", + "cp34-abi3-macosx_13_0_intel", + "cp34-abi3-macosx_13_0_fat64", + "cp34-abi3-macosx_13_0_fat32", + "cp34-abi3-macosx_13_0_universal2", + "cp34-abi3-macosx_13_0_universal", + "cp34-abi3-macosx_12_0_x86_64", + "cp34-abi3-macosx_12_0_intel", + "cp34-abi3-macosx_12_0_fat64", + "cp34-abi3-macosx_12_0_fat32", + "cp34-abi3-macosx_12_0_universal2", + "cp34-abi3-macosx_12_0_universal", + "cp34-abi3-macosx_11_0_x86_64", + "cp34-abi3-macosx_11_0_intel", + "cp34-abi3-macosx_11_0_fat64", + "cp34-abi3-macosx_11_0_fat32", + "cp34-abi3-macosx_11_0_universal2", + "cp34-abi3-macosx_11_0_universal", + "cp34-abi3-macosx_10_16_x86_64", + "cp34-abi3-macosx_10_16_intel", + "cp34-abi3-macosx_10_16_fat64", + "cp34-abi3-macosx_10_16_fat32", + "cp34-abi3-macosx_10_16_universal2", + "cp34-abi3-macosx_10_16_universal", + "cp34-abi3-macosx_10_15_x86_64", + "cp34-abi3-macosx_10_15_intel", + "cp34-abi3-macosx_10_15_fat64", + "cp34-abi3-macosx_10_15_fat32", + "cp34-abi3-macosx_10_15_universal2", + "cp34-abi3-macosx_10_15_universal", + "cp34-abi3-macosx_10_14_x86_64", + "cp34-abi3-macosx_10_14_intel", + "cp34-abi3-macosx_10_14_fat64", + "cp34-abi3-macosx_10_14_fat32", + "cp34-abi3-macosx_10_14_universal2", + "cp34-abi3-macosx_10_14_universal", + "cp34-abi3-macosx_10_13_x86_64", + "cp34-abi3-macosx_10_13_intel", + "cp34-abi3-macosx_10_13_fat64", + "cp34-abi3-macosx_10_13_fat32", + "cp34-abi3-macosx_10_13_universal2", + "cp34-abi3-macosx_10_13_universal", + "cp34-abi3-macosx_10_12_x86_64", + "cp34-abi3-macosx_10_12_intel", + "cp34-abi3-macosx_10_12_fat64", + "cp34-abi3-macosx_10_12_fat32", + "cp34-abi3-macosx_10_12_universal2", + "cp34-abi3-macosx_10_12_universal", + "cp34-abi3-macosx_10_11_x86_64", + "cp34-abi3-macosx_10_11_intel", + "cp34-abi3-macosx_10_11_fat64", + "cp34-abi3-macosx_10_11_fat32", + "cp34-abi3-macosx_10_11_universal2", + "cp34-abi3-macosx_10_11_universal", + "cp34-abi3-macosx_10_10_x86_64", + "cp34-abi3-macosx_10_10_intel", + "cp34-abi3-macosx_10_10_fat64", + "cp34-abi3-macosx_10_10_fat32", + "cp34-abi3-macosx_10_10_universal2", + "cp34-abi3-macosx_10_10_universal", + "cp34-abi3-macosx_10_9_x86_64", + "cp34-abi3-macosx_10_9_intel", + "cp34-abi3-macosx_10_9_fat64", + "cp34-abi3-macosx_10_9_fat32", + "cp34-abi3-macosx_10_9_universal2", + "cp34-abi3-macosx_10_9_universal", + "cp34-abi3-macosx_10_8_x86_64", + "cp34-abi3-macosx_10_8_intel", + "cp34-abi3-macosx_10_8_fat64", + "cp34-abi3-macosx_10_8_fat32", + "cp34-abi3-macosx_10_8_universal2", + "cp34-abi3-macosx_10_8_universal", + "cp34-abi3-macosx_10_7_x86_64", + "cp34-abi3-macosx_10_7_intel", + "cp34-abi3-macosx_10_7_fat64", + "cp34-abi3-macosx_10_7_fat32", + "cp34-abi3-macosx_10_7_universal2", + "cp34-abi3-macosx_10_7_universal", + "cp34-abi3-macosx_10_6_x86_64", + "cp34-abi3-macosx_10_6_intel", + "cp34-abi3-macosx_10_6_fat64", + "cp34-abi3-macosx_10_6_fat32", + "cp34-abi3-macosx_10_6_universal2", + "cp34-abi3-macosx_10_6_universal", + "cp34-abi3-macosx_10_5_x86_64", + "cp34-abi3-macosx_10_5_intel", + "cp34-abi3-macosx_10_5_fat64", + "cp34-abi3-macosx_10_5_fat32", + "cp34-abi3-macosx_10_5_universal2", + "cp34-abi3-macosx_10_5_universal", + "cp34-abi3-macosx_10_4_x86_64", + "cp34-abi3-macosx_10_4_intel", + "cp34-abi3-macosx_10_4_fat64", + "cp34-abi3-macosx_10_4_fat32", + "cp34-abi3-macosx_10_4_universal2", + "cp34-abi3-macosx_10_4_universal", + "cp33-abi3-macosx_13_0_x86_64", + "cp33-abi3-macosx_13_0_intel", + "cp33-abi3-macosx_13_0_fat64", + "cp33-abi3-macosx_13_0_fat32", + "cp33-abi3-macosx_13_0_universal2", + "cp33-abi3-macosx_13_0_universal", + "cp33-abi3-macosx_12_0_x86_64", + "cp33-abi3-macosx_12_0_intel", + "cp33-abi3-macosx_12_0_fat64", + "cp33-abi3-macosx_12_0_fat32", + "cp33-abi3-macosx_12_0_universal2", + "cp33-abi3-macosx_12_0_universal", + "cp33-abi3-macosx_11_0_x86_64", + "cp33-abi3-macosx_11_0_intel", + "cp33-abi3-macosx_11_0_fat64", + "cp33-abi3-macosx_11_0_fat32", + "cp33-abi3-macosx_11_0_universal2", + "cp33-abi3-macosx_11_0_universal", + "cp33-abi3-macosx_10_16_x86_64", + "cp33-abi3-macosx_10_16_intel", + "cp33-abi3-macosx_10_16_fat64", + "cp33-abi3-macosx_10_16_fat32", + "cp33-abi3-macosx_10_16_universal2", + "cp33-abi3-macosx_10_16_universal", + "cp33-abi3-macosx_10_15_x86_64", + "cp33-abi3-macosx_10_15_intel", + "cp33-abi3-macosx_10_15_fat64", + "cp33-abi3-macosx_10_15_fat32", + "cp33-abi3-macosx_10_15_universal2", + "cp33-abi3-macosx_10_15_universal", + "cp33-abi3-macosx_10_14_x86_64", + "cp33-abi3-macosx_10_14_intel", + "cp33-abi3-macosx_10_14_fat64", + "cp33-abi3-macosx_10_14_fat32", + "cp33-abi3-macosx_10_14_universal2", + "cp33-abi3-macosx_10_14_universal", + "cp33-abi3-macosx_10_13_x86_64", + "cp33-abi3-macosx_10_13_intel", + "cp33-abi3-macosx_10_13_fat64", + "cp33-abi3-macosx_10_13_fat32", + "cp33-abi3-macosx_10_13_universal2", + "cp33-abi3-macosx_10_13_universal", + "cp33-abi3-macosx_10_12_x86_64", + "cp33-abi3-macosx_10_12_intel", + "cp33-abi3-macosx_10_12_fat64", + "cp33-abi3-macosx_10_12_fat32", + "cp33-abi3-macosx_10_12_universal2", + "cp33-abi3-macosx_10_12_universal", + "cp33-abi3-macosx_10_11_x86_64", + "cp33-abi3-macosx_10_11_intel", + "cp33-abi3-macosx_10_11_fat64", + "cp33-abi3-macosx_10_11_fat32", + "cp33-abi3-macosx_10_11_universal2", + "cp33-abi3-macosx_10_11_universal", + "cp33-abi3-macosx_10_10_x86_64", + "cp33-abi3-macosx_10_10_intel", + "cp33-abi3-macosx_10_10_fat64", + "cp33-abi3-macosx_10_10_fat32", + "cp33-abi3-macosx_10_10_universal2", + "cp33-abi3-macosx_10_10_universal", + "cp33-abi3-macosx_10_9_x86_64", + "cp33-abi3-macosx_10_9_intel", + "cp33-abi3-macosx_10_9_fat64", + "cp33-abi3-macosx_10_9_fat32", + "cp33-abi3-macosx_10_9_universal2", + "cp33-abi3-macosx_10_9_universal", + "cp33-abi3-macosx_10_8_x86_64", + "cp33-abi3-macosx_10_8_intel", + "cp33-abi3-macosx_10_8_fat64", + "cp33-abi3-macosx_10_8_fat32", + "cp33-abi3-macosx_10_8_universal2", + "cp33-abi3-macosx_10_8_universal", + "cp33-abi3-macosx_10_7_x86_64", + "cp33-abi3-macosx_10_7_intel", + "cp33-abi3-macosx_10_7_fat64", + "cp33-abi3-macosx_10_7_fat32", + "cp33-abi3-macosx_10_7_universal2", + "cp33-abi3-macosx_10_7_universal", + "cp33-abi3-macosx_10_6_x86_64", + "cp33-abi3-macosx_10_6_intel", + "cp33-abi3-macosx_10_6_fat64", + "cp33-abi3-macosx_10_6_fat32", + "cp33-abi3-macosx_10_6_universal2", + "cp33-abi3-macosx_10_6_universal", + "cp33-abi3-macosx_10_5_x86_64", + "cp33-abi3-macosx_10_5_intel", + "cp33-abi3-macosx_10_5_fat64", + "cp33-abi3-macosx_10_5_fat32", + "cp33-abi3-macosx_10_5_universal2", + "cp33-abi3-macosx_10_5_universal", + "cp33-abi3-macosx_10_4_x86_64", + "cp33-abi3-macosx_10_4_intel", + "cp33-abi3-macosx_10_4_fat64", + "cp33-abi3-macosx_10_4_fat32", + "cp33-abi3-macosx_10_4_universal2", + "cp33-abi3-macosx_10_4_universal", + "cp32-abi3-macosx_13_0_x86_64", + "cp32-abi3-macosx_13_0_intel", + "cp32-abi3-macosx_13_0_fat64", + "cp32-abi3-macosx_13_0_fat32", + "cp32-abi3-macosx_13_0_universal2", + "cp32-abi3-macosx_13_0_universal", + "cp32-abi3-macosx_12_0_x86_64", + "cp32-abi3-macosx_12_0_intel", + "cp32-abi3-macosx_12_0_fat64", + "cp32-abi3-macosx_12_0_fat32", + "cp32-abi3-macosx_12_0_universal2", + "cp32-abi3-macosx_12_0_universal", + "cp32-abi3-macosx_11_0_x86_64", + "cp32-abi3-macosx_11_0_intel", + "cp32-abi3-macosx_11_0_fat64", + "cp32-abi3-macosx_11_0_fat32", + "cp32-abi3-macosx_11_0_universal2", + "cp32-abi3-macosx_11_0_universal", + "cp32-abi3-macosx_10_16_x86_64", + "cp32-abi3-macosx_10_16_intel", + "cp32-abi3-macosx_10_16_fat64", + "cp32-abi3-macosx_10_16_fat32", + "cp32-abi3-macosx_10_16_universal2", + "cp32-abi3-macosx_10_16_universal", + "cp32-abi3-macosx_10_15_x86_64", + "cp32-abi3-macosx_10_15_intel", + "cp32-abi3-macosx_10_15_fat64", + "cp32-abi3-macosx_10_15_fat32", + "cp32-abi3-macosx_10_15_universal2", + "cp32-abi3-macosx_10_15_universal", + "cp32-abi3-macosx_10_14_x86_64", + "cp32-abi3-macosx_10_14_intel", + "cp32-abi3-macosx_10_14_fat64", + "cp32-abi3-macosx_10_14_fat32", + "cp32-abi3-macosx_10_14_universal2", + "cp32-abi3-macosx_10_14_universal", + "cp32-abi3-macosx_10_13_x86_64", + "cp32-abi3-macosx_10_13_intel", + "cp32-abi3-macosx_10_13_fat64", + "cp32-abi3-macosx_10_13_fat32", + "cp32-abi3-macosx_10_13_universal2", + "cp32-abi3-macosx_10_13_universal", + "cp32-abi3-macosx_10_12_x86_64", + "cp32-abi3-macosx_10_12_intel", + "cp32-abi3-macosx_10_12_fat64", + "cp32-abi3-macosx_10_12_fat32", + "cp32-abi3-macosx_10_12_universal2", + "cp32-abi3-macosx_10_12_universal", + "cp32-abi3-macosx_10_11_x86_64", + "cp32-abi3-macosx_10_11_intel", + "cp32-abi3-macosx_10_11_fat64", + "cp32-abi3-macosx_10_11_fat32", + "cp32-abi3-macosx_10_11_universal2", + "cp32-abi3-macosx_10_11_universal", + "cp32-abi3-macosx_10_10_x86_64", + "cp32-abi3-macosx_10_10_intel", + "cp32-abi3-macosx_10_10_fat64", + "cp32-abi3-macosx_10_10_fat32", + "cp32-abi3-macosx_10_10_universal2", + "cp32-abi3-macosx_10_10_universal", + "cp32-abi3-macosx_10_9_x86_64", + "cp32-abi3-macosx_10_9_intel", + "cp32-abi3-macosx_10_9_fat64", + "cp32-abi3-macosx_10_9_fat32", + "cp32-abi3-macosx_10_9_universal2", + "cp32-abi3-macosx_10_9_universal", + "cp32-abi3-macosx_10_8_x86_64", + "cp32-abi3-macosx_10_8_intel", + "cp32-abi3-macosx_10_8_fat64", + "cp32-abi3-macosx_10_8_fat32", + "cp32-abi3-macosx_10_8_universal2", + "cp32-abi3-macosx_10_8_universal", + "cp32-abi3-macosx_10_7_x86_64", + "cp32-abi3-macosx_10_7_intel", + "cp32-abi3-macosx_10_7_fat64", + "cp32-abi3-macosx_10_7_fat32", + "cp32-abi3-macosx_10_7_universal2", + "cp32-abi3-macosx_10_7_universal", + "cp32-abi3-macosx_10_6_x86_64", + "cp32-abi3-macosx_10_6_intel", + "cp32-abi3-macosx_10_6_fat64", + "cp32-abi3-macosx_10_6_fat32", + "cp32-abi3-macosx_10_6_universal2", + "cp32-abi3-macosx_10_6_universal", + "cp32-abi3-macosx_10_5_x86_64", + "cp32-abi3-macosx_10_5_intel", + "cp32-abi3-macosx_10_5_fat64", + "cp32-abi3-macosx_10_5_fat32", + "cp32-abi3-macosx_10_5_universal2", + "cp32-abi3-macosx_10_5_universal", + "cp32-abi3-macosx_10_4_x86_64", + "cp32-abi3-macosx_10_4_intel", + "cp32-abi3-macosx_10_4_fat64", + "cp32-abi3-macosx_10_4_fat32", + "cp32-abi3-macosx_10_4_universal2", + "cp32-abi3-macosx_10_4_universal", + "py312-none-macosx_13_0_x86_64", + "py312-none-macosx_13_0_intel", + "py312-none-macosx_13_0_fat64", + "py312-none-macosx_13_0_fat32", + "py312-none-macosx_13_0_universal2", + "py312-none-macosx_13_0_universal", + "py312-none-macosx_12_0_x86_64", + "py312-none-macosx_12_0_intel", + "py312-none-macosx_12_0_fat64", + "py312-none-macosx_12_0_fat32", + "py312-none-macosx_12_0_universal2", + "py312-none-macosx_12_0_universal", + "py312-none-macosx_11_0_x86_64", + "py312-none-macosx_11_0_intel", + "py312-none-macosx_11_0_fat64", + "py312-none-macosx_11_0_fat32", + "py312-none-macosx_11_0_universal2", + "py312-none-macosx_11_0_universal", + "py312-none-macosx_10_16_x86_64", + "py312-none-macosx_10_16_intel", + "py312-none-macosx_10_16_fat64", + "py312-none-macosx_10_16_fat32", + "py312-none-macosx_10_16_universal2", + "py312-none-macosx_10_16_universal", + "py312-none-macosx_10_15_x86_64", + "py312-none-macosx_10_15_intel", + "py312-none-macosx_10_15_fat64", + "py312-none-macosx_10_15_fat32", + "py312-none-macosx_10_15_universal2", + "py312-none-macosx_10_15_universal", + "py312-none-macosx_10_14_x86_64", + "py312-none-macosx_10_14_intel", + "py312-none-macosx_10_14_fat64", + "py312-none-macosx_10_14_fat32", + "py312-none-macosx_10_14_universal2", + "py312-none-macosx_10_14_universal", + "py312-none-macosx_10_13_x86_64", + "py312-none-macosx_10_13_intel", + "py312-none-macosx_10_13_fat64", + "py312-none-macosx_10_13_fat32", + "py312-none-macosx_10_13_universal2", + "py312-none-macosx_10_13_universal", + "py312-none-macosx_10_12_x86_64", + "py312-none-macosx_10_12_intel", + "py312-none-macosx_10_12_fat64", + "py312-none-macosx_10_12_fat32", + "py312-none-macosx_10_12_universal2", + "py312-none-macosx_10_12_universal", + "py312-none-macosx_10_11_x86_64", + "py312-none-macosx_10_11_intel", + "py312-none-macosx_10_11_fat64", + "py312-none-macosx_10_11_fat32", + "py312-none-macosx_10_11_universal2", + "py312-none-macosx_10_11_universal", + "py312-none-macosx_10_10_x86_64", + "py312-none-macosx_10_10_intel", + "py312-none-macosx_10_10_fat64", + "py312-none-macosx_10_10_fat32", + "py312-none-macosx_10_10_universal2", + "py312-none-macosx_10_10_universal", + "py312-none-macosx_10_9_x86_64", + "py312-none-macosx_10_9_intel", + "py312-none-macosx_10_9_fat64", + "py312-none-macosx_10_9_fat32", + "py312-none-macosx_10_9_universal2", + "py312-none-macosx_10_9_universal", + "py312-none-macosx_10_8_x86_64", + "py312-none-macosx_10_8_intel", + "py312-none-macosx_10_8_fat64", + "py312-none-macosx_10_8_fat32", + "py312-none-macosx_10_8_universal2", + "py312-none-macosx_10_8_universal", + "py312-none-macosx_10_7_x86_64", + "py312-none-macosx_10_7_intel", + "py312-none-macosx_10_7_fat64", + "py312-none-macosx_10_7_fat32", + "py312-none-macosx_10_7_universal2", + "py312-none-macosx_10_7_universal", + "py312-none-macosx_10_6_x86_64", + "py312-none-macosx_10_6_intel", + "py312-none-macosx_10_6_fat64", + "py312-none-macosx_10_6_fat32", + "py312-none-macosx_10_6_universal2", + "py312-none-macosx_10_6_universal", + "py312-none-macosx_10_5_x86_64", + "py312-none-macosx_10_5_intel", + "py312-none-macosx_10_5_fat64", + "py312-none-macosx_10_5_fat32", + "py312-none-macosx_10_5_universal2", + "py312-none-macosx_10_5_universal", + "py312-none-macosx_10_4_x86_64", + "py312-none-macosx_10_4_intel", + "py312-none-macosx_10_4_fat64", + "py312-none-macosx_10_4_fat32", + "py312-none-macosx_10_4_universal2", + "py312-none-macosx_10_4_universal", + "py3-none-macosx_13_0_x86_64", + "py3-none-macosx_13_0_intel", + "py3-none-macosx_13_0_fat64", + "py3-none-macosx_13_0_fat32", + "py3-none-macosx_13_0_universal2", + "py3-none-macosx_13_0_universal", + "py3-none-macosx_12_0_x86_64", + "py3-none-macosx_12_0_intel", + "py3-none-macosx_12_0_fat64", + "py3-none-macosx_12_0_fat32", + "py3-none-macosx_12_0_universal2", + "py3-none-macosx_12_0_universal", + "py3-none-macosx_11_0_x86_64", + "py3-none-macosx_11_0_intel", + "py3-none-macosx_11_0_fat64", + "py3-none-macosx_11_0_fat32", + "py3-none-macosx_11_0_universal2", + "py3-none-macosx_11_0_universal", + "py3-none-macosx_10_16_x86_64", + "py3-none-macosx_10_16_intel", + "py3-none-macosx_10_16_fat64", + "py3-none-macosx_10_16_fat32", + "py3-none-macosx_10_16_universal2", + "py3-none-macosx_10_16_universal", + "py3-none-macosx_10_15_x86_64", + "py3-none-macosx_10_15_intel", + "py3-none-macosx_10_15_fat64", + "py3-none-macosx_10_15_fat32", + "py3-none-macosx_10_15_universal2", + "py3-none-macosx_10_15_universal", + "py3-none-macosx_10_14_x86_64", + "py3-none-macosx_10_14_intel", + "py3-none-macosx_10_14_fat64", + "py3-none-macosx_10_14_fat32", + "py3-none-macosx_10_14_universal2", + "py3-none-macosx_10_14_universal", + "py3-none-macosx_10_13_x86_64", + "py3-none-macosx_10_13_intel", + "py3-none-macosx_10_13_fat64", + "py3-none-macosx_10_13_fat32", + "py3-none-macosx_10_13_universal2", + "py3-none-macosx_10_13_universal", + "py3-none-macosx_10_12_x86_64", + "py3-none-macosx_10_12_intel", + "py3-none-macosx_10_12_fat64", + "py3-none-macosx_10_12_fat32", + "py3-none-macosx_10_12_universal2", + "py3-none-macosx_10_12_universal", + "py3-none-macosx_10_11_x86_64", + "py3-none-macosx_10_11_intel", + "py3-none-macosx_10_11_fat64", + "py3-none-macosx_10_11_fat32", + "py3-none-macosx_10_11_universal2", + "py3-none-macosx_10_11_universal", + "py3-none-macosx_10_10_x86_64", + "py3-none-macosx_10_10_intel", + "py3-none-macosx_10_10_fat64", + "py3-none-macosx_10_10_fat32", + "py3-none-macosx_10_10_universal2", + "py3-none-macosx_10_10_universal", + "py3-none-macosx_10_9_x86_64", + "py3-none-macosx_10_9_intel", + "py3-none-macosx_10_9_fat64", + "py3-none-macosx_10_9_fat32", + "py3-none-macosx_10_9_universal2", + "py3-none-macosx_10_9_universal", + "py3-none-macosx_10_8_x86_64", + "py3-none-macosx_10_8_intel", + "py3-none-macosx_10_8_fat64", + "py3-none-macosx_10_8_fat32", + "py3-none-macosx_10_8_universal2", + "py3-none-macosx_10_8_universal", + "py3-none-macosx_10_7_x86_64", + "py3-none-macosx_10_7_intel", + "py3-none-macosx_10_7_fat64", + "py3-none-macosx_10_7_fat32", + "py3-none-macosx_10_7_universal2", + "py3-none-macosx_10_7_universal", + "py3-none-macosx_10_6_x86_64", + "py3-none-macosx_10_6_intel", + "py3-none-macosx_10_6_fat64", + "py3-none-macosx_10_6_fat32", + "py3-none-macosx_10_6_universal2", + "py3-none-macosx_10_6_universal", + "py3-none-macosx_10_5_x86_64", + "py3-none-macosx_10_5_intel", + "py3-none-macosx_10_5_fat64", + "py3-none-macosx_10_5_fat32", + "py3-none-macosx_10_5_universal2", + "py3-none-macosx_10_5_universal", + "py3-none-macosx_10_4_x86_64", + "py3-none-macosx_10_4_intel", + "py3-none-macosx_10_4_fat64", + "py3-none-macosx_10_4_fat32", + "py3-none-macosx_10_4_universal2", + "py3-none-macosx_10_4_universal", + "py311-none-macosx_13_0_x86_64", + "py311-none-macosx_13_0_intel", + "py311-none-macosx_13_0_fat64", + "py311-none-macosx_13_0_fat32", + "py311-none-macosx_13_0_universal2", + "py311-none-macosx_13_0_universal", + "py311-none-macosx_12_0_x86_64", + "py311-none-macosx_12_0_intel", + "py311-none-macosx_12_0_fat64", + "py311-none-macosx_12_0_fat32", + "py311-none-macosx_12_0_universal2", + "py311-none-macosx_12_0_universal", + "py311-none-macosx_11_0_x86_64", + "py311-none-macosx_11_0_intel", + "py311-none-macosx_11_0_fat64", + "py311-none-macosx_11_0_fat32", + "py311-none-macosx_11_0_universal2", + "py311-none-macosx_11_0_universal", + "py311-none-macosx_10_16_x86_64", + "py311-none-macosx_10_16_intel", + "py311-none-macosx_10_16_fat64", + "py311-none-macosx_10_16_fat32", + "py311-none-macosx_10_16_universal2", + "py311-none-macosx_10_16_universal", + "py311-none-macosx_10_15_x86_64", + "py311-none-macosx_10_15_intel", + "py311-none-macosx_10_15_fat64", + "py311-none-macosx_10_15_fat32", + "py311-none-macosx_10_15_universal2", + "py311-none-macosx_10_15_universal", + "py311-none-macosx_10_14_x86_64", + "py311-none-macosx_10_14_intel", + "py311-none-macosx_10_14_fat64", + "py311-none-macosx_10_14_fat32", + "py311-none-macosx_10_14_universal2", + "py311-none-macosx_10_14_universal", + "py311-none-macosx_10_13_x86_64", + "py311-none-macosx_10_13_intel", + "py311-none-macosx_10_13_fat64", + "py311-none-macosx_10_13_fat32", + "py311-none-macosx_10_13_universal2", + "py311-none-macosx_10_13_universal", + "py311-none-macosx_10_12_x86_64", + "py311-none-macosx_10_12_intel", + "py311-none-macosx_10_12_fat64", + "py311-none-macosx_10_12_fat32", + "py311-none-macosx_10_12_universal2", + "py311-none-macosx_10_12_universal", + "py311-none-macosx_10_11_x86_64", + "py311-none-macosx_10_11_intel", + "py311-none-macosx_10_11_fat64", + "py311-none-macosx_10_11_fat32", + "py311-none-macosx_10_11_universal2", + "py311-none-macosx_10_11_universal", + "py311-none-macosx_10_10_x86_64", + "py311-none-macosx_10_10_intel", + "py311-none-macosx_10_10_fat64", + "py311-none-macosx_10_10_fat32", + "py311-none-macosx_10_10_universal2", + "py311-none-macosx_10_10_universal", + "py311-none-macosx_10_9_x86_64", + "py311-none-macosx_10_9_intel", + "py311-none-macosx_10_9_fat64", + "py311-none-macosx_10_9_fat32", + "py311-none-macosx_10_9_universal2", + "py311-none-macosx_10_9_universal", + "py311-none-macosx_10_8_x86_64", + "py311-none-macosx_10_8_intel", + "py311-none-macosx_10_8_fat64", + "py311-none-macosx_10_8_fat32", + "py311-none-macosx_10_8_universal2", + "py311-none-macosx_10_8_universal", + "py311-none-macosx_10_7_x86_64", + "py311-none-macosx_10_7_intel", + "py311-none-macosx_10_7_fat64", + "py311-none-macosx_10_7_fat32", + "py311-none-macosx_10_7_universal2", + "py311-none-macosx_10_7_universal", + "py311-none-macosx_10_6_x86_64", + "py311-none-macosx_10_6_intel", + "py311-none-macosx_10_6_fat64", + "py311-none-macosx_10_6_fat32", + "py311-none-macosx_10_6_universal2", + "py311-none-macosx_10_6_universal", + "py311-none-macosx_10_5_x86_64", + "py311-none-macosx_10_5_intel", + "py311-none-macosx_10_5_fat64", + "py311-none-macosx_10_5_fat32", + "py311-none-macosx_10_5_universal2", + "py311-none-macosx_10_5_universal", + "py311-none-macosx_10_4_x86_64", + "py311-none-macosx_10_4_intel", + "py311-none-macosx_10_4_fat64", + "py311-none-macosx_10_4_fat32", + "py311-none-macosx_10_4_universal2", + "py311-none-macosx_10_4_universal", + "py310-none-macosx_13_0_x86_64", + "py310-none-macosx_13_0_intel", + "py310-none-macosx_13_0_fat64", + "py310-none-macosx_13_0_fat32", + "py310-none-macosx_13_0_universal2", + "py310-none-macosx_13_0_universal", + "py310-none-macosx_12_0_x86_64", + "py310-none-macosx_12_0_intel", + "py310-none-macosx_12_0_fat64", + "py310-none-macosx_12_0_fat32", + "py310-none-macosx_12_0_universal2", + "py310-none-macosx_12_0_universal", + "py310-none-macosx_11_0_x86_64", + "py310-none-macosx_11_0_intel", + "py310-none-macosx_11_0_fat64", + "py310-none-macosx_11_0_fat32", + "py310-none-macosx_11_0_universal2", + "py310-none-macosx_11_0_universal", + "py310-none-macosx_10_16_x86_64", + "py310-none-macosx_10_16_intel", + "py310-none-macosx_10_16_fat64", + "py310-none-macosx_10_16_fat32", + "py310-none-macosx_10_16_universal2", + "py310-none-macosx_10_16_universal", + "py310-none-macosx_10_15_x86_64", + "py310-none-macosx_10_15_intel", + "py310-none-macosx_10_15_fat64", + "py310-none-macosx_10_15_fat32", + "py310-none-macosx_10_15_universal2", + "py310-none-macosx_10_15_universal", + "py310-none-macosx_10_14_x86_64", + "py310-none-macosx_10_14_intel", + "py310-none-macosx_10_14_fat64", + "py310-none-macosx_10_14_fat32", + "py310-none-macosx_10_14_universal2", + "py310-none-macosx_10_14_universal", + "py310-none-macosx_10_13_x86_64", + "py310-none-macosx_10_13_intel", + "py310-none-macosx_10_13_fat64", + "py310-none-macosx_10_13_fat32", + "py310-none-macosx_10_13_universal2", + "py310-none-macosx_10_13_universal", + "py310-none-macosx_10_12_x86_64", + "py310-none-macosx_10_12_intel", + "py310-none-macosx_10_12_fat64", + "py310-none-macosx_10_12_fat32", + "py310-none-macosx_10_12_universal2", + "py310-none-macosx_10_12_universal", + "py310-none-macosx_10_11_x86_64", + "py310-none-macosx_10_11_intel", + "py310-none-macosx_10_11_fat64", + "py310-none-macosx_10_11_fat32", + "py310-none-macosx_10_11_universal2", + "py310-none-macosx_10_11_universal", + "py310-none-macosx_10_10_x86_64", + "py310-none-macosx_10_10_intel", + "py310-none-macosx_10_10_fat64", + "py310-none-macosx_10_10_fat32", + "py310-none-macosx_10_10_universal2", + "py310-none-macosx_10_10_universal", + "py310-none-macosx_10_9_x86_64", + "py310-none-macosx_10_9_intel", + "py310-none-macosx_10_9_fat64", + "py310-none-macosx_10_9_fat32", + "py310-none-macosx_10_9_universal2", + "py310-none-macosx_10_9_universal", + "py310-none-macosx_10_8_x86_64", + "py310-none-macosx_10_8_intel", + "py310-none-macosx_10_8_fat64", + "py310-none-macosx_10_8_fat32", + "py310-none-macosx_10_8_universal2", + "py310-none-macosx_10_8_universal", + "py310-none-macosx_10_7_x86_64", + "py310-none-macosx_10_7_intel", + "py310-none-macosx_10_7_fat64", + "py310-none-macosx_10_7_fat32", + "py310-none-macosx_10_7_universal2", + "py310-none-macosx_10_7_universal", + "py310-none-macosx_10_6_x86_64", + "py310-none-macosx_10_6_intel", + "py310-none-macosx_10_6_fat64", + "py310-none-macosx_10_6_fat32", + "py310-none-macosx_10_6_universal2", + "py310-none-macosx_10_6_universal", + "py310-none-macosx_10_5_x86_64", + "py310-none-macosx_10_5_intel", + "py310-none-macosx_10_5_fat64", + "py310-none-macosx_10_5_fat32", + "py310-none-macosx_10_5_universal2", + "py310-none-macosx_10_5_universal", + "py310-none-macosx_10_4_x86_64", + "py310-none-macosx_10_4_intel", + "py310-none-macosx_10_4_fat64", + "py310-none-macosx_10_4_fat32", + "py310-none-macosx_10_4_universal2", + "py310-none-macosx_10_4_universal", + "py39-none-macosx_13_0_x86_64", + "py39-none-macosx_13_0_intel", + "py39-none-macosx_13_0_fat64", + "py39-none-macosx_13_0_fat32", + "py39-none-macosx_13_0_universal2", + "py39-none-macosx_13_0_universal", + "py39-none-macosx_12_0_x86_64", + "py39-none-macosx_12_0_intel", + "py39-none-macosx_12_0_fat64", + "py39-none-macosx_12_0_fat32", + "py39-none-macosx_12_0_universal2", + "py39-none-macosx_12_0_universal", + "py39-none-macosx_11_0_x86_64", + "py39-none-macosx_11_0_intel", + "py39-none-macosx_11_0_fat64", + "py39-none-macosx_11_0_fat32", + "py39-none-macosx_11_0_universal2", + "py39-none-macosx_11_0_universal", + "py39-none-macosx_10_16_x86_64", + "py39-none-macosx_10_16_intel", + "py39-none-macosx_10_16_fat64", + "py39-none-macosx_10_16_fat32", + "py39-none-macosx_10_16_universal2", + "py39-none-macosx_10_16_universal", + "py39-none-macosx_10_15_x86_64", + "py39-none-macosx_10_15_intel", + "py39-none-macosx_10_15_fat64", + "py39-none-macosx_10_15_fat32", + "py39-none-macosx_10_15_universal2", + "py39-none-macosx_10_15_universal", + "py39-none-macosx_10_14_x86_64", + "py39-none-macosx_10_14_intel", + "py39-none-macosx_10_14_fat64", + "py39-none-macosx_10_14_fat32", + "py39-none-macosx_10_14_universal2", + "py39-none-macosx_10_14_universal", + "py39-none-macosx_10_13_x86_64", + "py39-none-macosx_10_13_intel", + "py39-none-macosx_10_13_fat64", + "py39-none-macosx_10_13_fat32", + "py39-none-macosx_10_13_universal2", + "py39-none-macosx_10_13_universal", + "py39-none-macosx_10_12_x86_64", + "py39-none-macosx_10_12_intel", + "py39-none-macosx_10_12_fat64", + "py39-none-macosx_10_12_fat32", + "py39-none-macosx_10_12_universal2", + "py39-none-macosx_10_12_universal", + "py39-none-macosx_10_11_x86_64", + "py39-none-macosx_10_11_intel", + "py39-none-macosx_10_11_fat64", + "py39-none-macosx_10_11_fat32", + "py39-none-macosx_10_11_universal2", + "py39-none-macosx_10_11_universal", + "py39-none-macosx_10_10_x86_64", + "py39-none-macosx_10_10_intel", + "py39-none-macosx_10_10_fat64", + "py39-none-macosx_10_10_fat32", + "py39-none-macosx_10_10_universal2", + "py39-none-macosx_10_10_universal", + "py39-none-macosx_10_9_x86_64", + "py39-none-macosx_10_9_intel", + "py39-none-macosx_10_9_fat64", + "py39-none-macosx_10_9_fat32", + "py39-none-macosx_10_9_universal2", + "py39-none-macosx_10_9_universal", + "py39-none-macosx_10_8_x86_64", + "py39-none-macosx_10_8_intel", + "py39-none-macosx_10_8_fat64", + "py39-none-macosx_10_8_fat32", + "py39-none-macosx_10_8_universal2", + "py39-none-macosx_10_8_universal", + "py39-none-macosx_10_7_x86_64", + "py39-none-macosx_10_7_intel", + "py39-none-macosx_10_7_fat64", + "py39-none-macosx_10_7_fat32", + "py39-none-macosx_10_7_universal2", + "py39-none-macosx_10_7_universal", + "py39-none-macosx_10_6_x86_64", + "py39-none-macosx_10_6_intel", + "py39-none-macosx_10_6_fat64", + "py39-none-macosx_10_6_fat32", + "py39-none-macosx_10_6_universal2", + "py39-none-macosx_10_6_universal", + "py39-none-macosx_10_5_x86_64", + "py39-none-macosx_10_5_intel", + "py39-none-macosx_10_5_fat64", + "py39-none-macosx_10_5_fat32", + "py39-none-macosx_10_5_universal2", + "py39-none-macosx_10_5_universal", + "py39-none-macosx_10_4_x86_64", + "py39-none-macosx_10_4_intel", + "py39-none-macosx_10_4_fat64", + "py39-none-macosx_10_4_fat32", + "py39-none-macosx_10_4_universal2", + "py39-none-macosx_10_4_universal", + "py38-none-macosx_13_0_x86_64", + "py38-none-macosx_13_0_intel", + "py38-none-macosx_13_0_fat64", + "py38-none-macosx_13_0_fat32", + "py38-none-macosx_13_0_universal2", + "py38-none-macosx_13_0_universal", + "py38-none-macosx_12_0_x86_64", + "py38-none-macosx_12_0_intel", + "py38-none-macosx_12_0_fat64", + "py38-none-macosx_12_0_fat32", + "py38-none-macosx_12_0_universal2", + "py38-none-macosx_12_0_universal", + "py38-none-macosx_11_0_x86_64", + "py38-none-macosx_11_0_intel", + "py38-none-macosx_11_0_fat64", + "py38-none-macosx_11_0_fat32", + "py38-none-macosx_11_0_universal2", + "py38-none-macosx_11_0_universal", + "py38-none-macosx_10_16_x86_64", + "py38-none-macosx_10_16_intel", + "py38-none-macosx_10_16_fat64", + "py38-none-macosx_10_16_fat32", + "py38-none-macosx_10_16_universal2", + "py38-none-macosx_10_16_universal", + "py38-none-macosx_10_15_x86_64", + "py38-none-macosx_10_15_intel", + "py38-none-macosx_10_15_fat64", + "py38-none-macosx_10_15_fat32", + "py38-none-macosx_10_15_universal2", + "py38-none-macosx_10_15_universal", + "py38-none-macosx_10_14_x86_64", + "py38-none-macosx_10_14_intel", + "py38-none-macosx_10_14_fat64", + "py38-none-macosx_10_14_fat32", + "py38-none-macosx_10_14_universal2", + "py38-none-macosx_10_14_universal", + "py38-none-macosx_10_13_x86_64", + "py38-none-macosx_10_13_intel", + "py38-none-macosx_10_13_fat64", + "py38-none-macosx_10_13_fat32", + "py38-none-macosx_10_13_universal2", + "py38-none-macosx_10_13_universal", + "py38-none-macosx_10_12_x86_64", + "py38-none-macosx_10_12_intel", + "py38-none-macosx_10_12_fat64", + "py38-none-macosx_10_12_fat32", + "py38-none-macosx_10_12_universal2", + "py38-none-macosx_10_12_universal", + "py38-none-macosx_10_11_x86_64", + "py38-none-macosx_10_11_intel", + "py38-none-macosx_10_11_fat64", + "py38-none-macosx_10_11_fat32", + "py38-none-macosx_10_11_universal2", + "py38-none-macosx_10_11_universal", + "py38-none-macosx_10_10_x86_64", + "py38-none-macosx_10_10_intel", + "py38-none-macosx_10_10_fat64", + "py38-none-macosx_10_10_fat32", + "py38-none-macosx_10_10_universal2", + "py38-none-macosx_10_10_universal", + "py38-none-macosx_10_9_x86_64", + "py38-none-macosx_10_9_intel", + "py38-none-macosx_10_9_fat64", + "py38-none-macosx_10_9_fat32", + "py38-none-macosx_10_9_universal2", + "py38-none-macosx_10_9_universal", + "py38-none-macosx_10_8_x86_64", + "py38-none-macosx_10_8_intel", + "py38-none-macosx_10_8_fat64", + "py38-none-macosx_10_8_fat32", + "py38-none-macosx_10_8_universal2", + "py38-none-macosx_10_8_universal", + "py38-none-macosx_10_7_x86_64", + "py38-none-macosx_10_7_intel", + "py38-none-macosx_10_7_fat64", + "py38-none-macosx_10_7_fat32", + "py38-none-macosx_10_7_universal2", + "py38-none-macosx_10_7_universal", + "py38-none-macosx_10_6_x86_64", + "py38-none-macosx_10_6_intel", + "py38-none-macosx_10_6_fat64", + "py38-none-macosx_10_6_fat32", + "py38-none-macosx_10_6_universal2", + "py38-none-macosx_10_6_universal", + "py38-none-macosx_10_5_x86_64", + "py38-none-macosx_10_5_intel", + "py38-none-macosx_10_5_fat64", + "py38-none-macosx_10_5_fat32", + "py38-none-macosx_10_5_universal2", + "py38-none-macosx_10_5_universal", + "py38-none-macosx_10_4_x86_64", + "py38-none-macosx_10_4_intel", + "py38-none-macosx_10_4_fat64", + "py38-none-macosx_10_4_fat32", + "py38-none-macosx_10_4_universal2", + "py38-none-macosx_10_4_universal", + "py37-none-macosx_13_0_x86_64", + "py37-none-macosx_13_0_intel", + "py37-none-macosx_13_0_fat64", + "py37-none-macosx_13_0_fat32", + "py37-none-macosx_13_0_universal2", + "py37-none-macosx_13_0_universal", + "py37-none-macosx_12_0_x86_64", + "py37-none-macosx_12_0_intel", + "py37-none-macosx_12_0_fat64", + "py37-none-macosx_12_0_fat32", + "py37-none-macosx_12_0_universal2", + "py37-none-macosx_12_0_universal", + "py37-none-macosx_11_0_x86_64", + "py37-none-macosx_11_0_intel", + "py37-none-macosx_11_0_fat64", + "py37-none-macosx_11_0_fat32", + "py37-none-macosx_11_0_universal2", + "py37-none-macosx_11_0_universal", + "py37-none-macosx_10_16_x86_64", + "py37-none-macosx_10_16_intel", + "py37-none-macosx_10_16_fat64", + "py37-none-macosx_10_16_fat32", + "py37-none-macosx_10_16_universal2", + "py37-none-macosx_10_16_universal", + "py37-none-macosx_10_15_x86_64", + "py37-none-macosx_10_15_intel", + "py37-none-macosx_10_15_fat64", + "py37-none-macosx_10_15_fat32", + "py37-none-macosx_10_15_universal2", + "py37-none-macosx_10_15_universal", + "py37-none-macosx_10_14_x86_64", + "py37-none-macosx_10_14_intel", + "py37-none-macosx_10_14_fat64", + "py37-none-macosx_10_14_fat32", + "py37-none-macosx_10_14_universal2", + "py37-none-macosx_10_14_universal", + "py37-none-macosx_10_13_x86_64", + "py37-none-macosx_10_13_intel", + "py37-none-macosx_10_13_fat64", + "py37-none-macosx_10_13_fat32", + "py37-none-macosx_10_13_universal2", + "py37-none-macosx_10_13_universal", + "py37-none-macosx_10_12_x86_64", + "py37-none-macosx_10_12_intel", + "py37-none-macosx_10_12_fat64", + "py37-none-macosx_10_12_fat32", + "py37-none-macosx_10_12_universal2", + "py37-none-macosx_10_12_universal", + "py37-none-macosx_10_11_x86_64", + "py37-none-macosx_10_11_intel", + "py37-none-macosx_10_11_fat64", + "py37-none-macosx_10_11_fat32", + "py37-none-macosx_10_11_universal2", + "py37-none-macosx_10_11_universal", + "py37-none-macosx_10_10_x86_64", + "py37-none-macosx_10_10_intel", + "py37-none-macosx_10_10_fat64", + "py37-none-macosx_10_10_fat32", + "py37-none-macosx_10_10_universal2", + "py37-none-macosx_10_10_universal", + "py37-none-macosx_10_9_x86_64", + "py37-none-macosx_10_9_intel", + "py37-none-macosx_10_9_fat64", + "py37-none-macosx_10_9_fat32", + "py37-none-macosx_10_9_universal2", + "py37-none-macosx_10_9_universal", + "py37-none-macosx_10_8_x86_64", + "py37-none-macosx_10_8_intel", + "py37-none-macosx_10_8_fat64", + "py37-none-macosx_10_8_fat32", + "py37-none-macosx_10_8_universal2", + "py37-none-macosx_10_8_universal", + "py37-none-macosx_10_7_x86_64", + "py37-none-macosx_10_7_intel", + "py37-none-macosx_10_7_fat64", + "py37-none-macosx_10_7_fat32", + "py37-none-macosx_10_7_universal2", + "py37-none-macosx_10_7_universal", + "py37-none-macosx_10_6_x86_64", + "py37-none-macosx_10_6_intel", + "py37-none-macosx_10_6_fat64", + "py37-none-macosx_10_6_fat32", + "py37-none-macosx_10_6_universal2", + "py37-none-macosx_10_6_universal", + "py37-none-macosx_10_5_x86_64", + "py37-none-macosx_10_5_intel", + "py37-none-macosx_10_5_fat64", + "py37-none-macosx_10_5_fat32", + "py37-none-macosx_10_5_universal2", + "py37-none-macosx_10_5_universal", + "py37-none-macosx_10_4_x86_64", + "py37-none-macosx_10_4_intel", + "py37-none-macosx_10_4_fat64", + "py37-none-macosx_10_4_fat32", + "py37-none-macosx_10_4_universal2", + "py37-none-macosx_10_4_universal", + "py36-none-macosx_13_0_x86_64", + "py36-none-macosx_13_0_intel", + "py36-none-macosx_13_0_fat64", + "py36-none-macosx_13_0_fat32", + "py36-none-macosx_13_0_universal2", + "py36-none-macosx_13_0_universal", + "py36-none-macosx_12_0_x86_64", + "py36-none-macosx_12_0_intel", + "py36-none-macosx_12_0_fat64", + "py36-none-macosx_12_0_fat32", + "py36-none-macosx_12_0_universal2", + "py36-none-macosx_12_0_universal", + "py36-none-macosx_11_0_x86_64", + "py36-none-macosx_11_0_intel", + "py36-none-macosx_11_0_fat64", + "py36-none-macosx_11_0_fat32", + "py36-none-macosx_11_0_universal2", + "py36-none-macosx_11_0_universal", + "py36-none-macosx_10_16_x86_64", + "py36-none-macosx_10_16_intel", + "py36-none-macosx_10_16_fat64", + "py36-none-macosx_10_16_fat32", + "py36-none-macosx_10_16_universal2", + "py36-none-macosx_10_16_universal", + "py36-none-macosx_10_15_x86_64", + "py36-none-macosx_10_15_intel", + "py36-none-macosx_10_15_fat64", + "py36-none-macosx_10_15_fat32", + "py36-none-macosx_10_15_universal2", + "py36-none-macosx_10_15_universal", + "py36-none-macosx_10_14_x86_64", + "py36-none-macosx_10_14_intel", + "py36-none-macosx_10_14_fat64", + "py36-none-macosx_10_14_fat32", + "py36-none-macosx_10_14_universal2", + "py36-none-macosx_10_14_universal", + "py36-none-macosx_10_13_x86_64", + "py36-none-macosx_10_13_intel", + "py36-none-macosx_10_13_fat64", + "py36-none-macosx_10_13_fat32", + "py36-none-macosx_10_13_universal2", + "py36-none-macosx_10_13_universal", + "py36-none-macosx_10_12_x86_64", + "py36-none-macosx_10_12_intel", + "py36-none-macosx_10_12_fat64", + "py36-none-macosx_10_12_fat32", + "py36-none-macosx_10_12_universal2", + "py36-none-macosx_10_12_universal", + "py36-none-macosx_10_11_x86_64", + "py36-none-macosx_10_11_intel", + "py36-none-macosx_10_11_fat64", + "py36-none-macosx_10_11_fat32", + "py36-none-macosx_10_11_universal2", + "py36-none-macosx_10_11_universal", + "py36-none-macosx_10_10_x86_64", + "py36-none-macosx_10_10_intel", + "py36-none-macosx_10_10_fat64", + "py36-none-macosx_10_10_fat32", + "py36-none-macosx_10_10_universal2", + "py36-none-macosx_10_10_universal", + "py36-none-macosx_10_9_x86_64", + "py36-none-macosx_10_9_intel", + "py36-none-macosx_10_9_fat64", + "py36-none-macosx_10_9_fat32", + "py36-none-macosx_10_9_universal2", + "py36-none-macosx_10_9_universal", + "py36-none-macosx_10_8_x86_64", + "py36-none-macosx_10_8_intel", + "py36-none-macosx_10_8_fat64", + "py36-none-macosx_10_8_fat32", + "py36-none-macosx_10_8_universal2", + "py36-none-macosx_10_8_universal", + "py36-none-macosx_10_7_x86_64", + "py36-none-macosx_10_7_intel", + "py36-none-macosx_10_7_fat64", + "py36-none-macosx_10_7_fat32", + "py36-none-macosx_10_7_universal2", + "py36-none-macosx_10_7_universal", + "py36-none-macosx_10_6_x86_64", + "py36-none-macosx_10_6_intel", + "py36-none-macosx_10_6_fat64", + "py36-none-macosx_10_6_fat32", + "py36-none-macosx_10_6_universal2", + "py36-none-macosx_10_6_universal", + "py36-none-macosx_10_5_x86_64", + "py36-none-macosx_10_5_intel", + "py36-none-macosx_10_5_fat64", + "py36-none-macosx_10_5_fat32", + "py36-none-macosx_10_5_universal2", + "py36-none-macosx_10_5_universal", + "py36-none-macosx_10_4_x86_64", + "py36-none-macosx_10_4_intel", + "py36-none-macosx_10_4_fat64", + "py36-none-macosx_10_4_fat32", + "py36-none-macosx_10_4_universal2", + "py36-none-macosx_10_4_universal", + "py35-none-macosx_13_0_x86_64", + "py35-none-macosx_13_0_intel", + "py35-none-macosx_13_0_fat64", + "py35-none-macosx_13_0_fat32", + "py35-none-macosx_13_0_universal2", + "py35-none-macosx_13_0_universal", + "py35-none-macosx_12_0_x86_64", + "py35-none-macosx_12_0_intel", + "py35-none-macosx_12_0_fat64", + "py35-none-macosx_12_0_fat32", + "py35-none-macosx_12_0_universal2", + "py35-none-macosx_12_0_universal", + "py35-none-macosx_11_0_x86_64", + "py35-none-macosx_11_0_intel", + "py35-none-macosx_11_0_fat64", + "py35-none-macosx_11_0_fat32", + "py35-none-macosx_11_0_universal2", + "py35-none-macosx_11_0_universal", + "py35-none-macosx_10_16_x86_64", + "py35-none-macosx_10_16_intel", + "py35-none-macosx_10_16_fat64", + "py35-none-macosx_10_16_fat32", + "py35-none-macosx_10_16_universal2", + "py35-none-macosx_10_16_universal", + "py35-none-macosx_10_15_x86_64", + "py35-none-macosx_10_15_intel", + "py35-none-macosx_10_15_fat64", + "py35-none-macosx_10_15_fat32", + "py35-none-macosx_10_15_universal2", + "py35-none-macosx_10_15_universal", + "py35-none-macosx_10_14_x86_64", + "py35-none-macosx_10_14_intel", + "py35-none-macosx_10_14_fat64", + "py35-none-macosx_10_14_fat32", + "py35-none-macosx_10_14_universal2", + "py35-none-macosx_10_14_universal", + "py35-none-macosx_10_13_x86_64", + "py35-none-macosx_10_13_intel", + "py35-none-macosx_10_13_fat64", + "py35-none-macosx_10_13_fat32", + "py35-none-macosx_10_13_universal2", + "py35-none-macosx_10_13_universal", + "py35-none-macosx_10_12_x86_64", + "py35-none-macosx_10_12_intel", + "py35-none-macosx_10_12_fat64", + "py35-none-macosx_10_12_fat32", + "py35-none-macosx_10_12_universal2", + "py35-none-macosx_10_12_universal", + "py35-none-macosx_10_11_x86_64", + "py35-none-macosx_10_11_intel", + "py35-none-macosx_10_11_fat64", + "py35-none-macosx_10_11_fat32", + "py35-none-macosx_10_11_universal2", + "py35-none-macosx_10_11_universal", + "py35-none-macosx_10_10_x86_64", + "py35-none-macosx_10_10_intel", + "py35-none-macosx_10_10_fat64", + "py35-none-macosx_10_10_fat32", + "py35-none-macosx_10_10_universal2", + "py35-none-macosx_10_10_universal", + "py35-none-macosx_10_9_x86_64", + "py35-none-macosx_10_9_intel", + "py35-none-macosx_10_9_fat64", + "py35-none-macosx_10_9_fat32", + "py35-none-macosx_10_9_universal2", + "py35-none-macosx_10_9_universal", + "py35-none-macosx_10_8_x86_64", + "py35-none-macosx_10_8_intel", + "py35-none-macosx_10_8_fat64", + "py35-none-macosx_10_8_fat32", + "py35-none-macosx_10_8_universal2", + "py35-none-macosx_10_8_universal", + "py35-none-macosx_10_7_x86_64", + "py35-none-macosx_10_7_intel", + "py35-none-macosx_10_7_fat64", + "py35-none-macosx_10_7_fat32", + "py35-none-macosx_10_7_universal2", + "py35-none-macosx_10_7_universal", + "py35-none-macosx_10_6_x86_64", + "py35-none-macosx_10_6_intel", + "py35-none-macosx_10_6_fat64", + "py35-none-macosx_10_6_fat32", + "py35-none-macosx_10_6_universal2", + "py35-none-macosx_10_6_universal", + "py35-none-macosx_10_5_x86_64", + "py35-none-macosx_10_5_intel", + "py35-none-macosx_10_5_fat64", + "py35-none-macosx_10_5_fat32", + "py35-none-macosx_10_5_universal2", + "py35-none-macosx_10_5_universal", + "py35-none-macosx_10_4_x86_64", + "py35-none-macosx_10_4_intel", + "py35-none-macosx_10_4_fat64", + "py35-none-macosx_10_4_fat32", + "py35-none-macosx_10_4_universal2", + "py35-none-macosx_10_4_universal", + "py34-none-macosx_13_0_x86_64", + "py34-none-macosx_13_0_intel", + "py34-none-macosx_13_0_fat64", + "py34-none-macosx_13_0_fat32", + "py34-none-macosx_13_0_universal2", + "py34-none-macosx_13_0_universal", + "py34-none-macosx_12_0_x86_64", + "py34-none-macosx_12_0_intel", + "py34-none-macosx_12_0_fat64", + "py34-none-macosx_12_0_fat32", + "py34-none-macosx_12_0_universal2", + "py34-none-macosx_12_0_universal", + "py34-none-macosx_11_0_x86_64", + "py34-none-macosx_11_0_intel", + "py34-none-macosx_11_0_fat64", + "py34-none-macosx_11_0_fat32", + "py34-none-macosx_11_0_universal2", + "py34-none-macosx_11_0_universal", + "py34-none-macosx_10_16_x86_64", + "py34-none-macosx_10_16_intel", + "py34-none-macosx_10_16_fat64", + "py34-none-macosx_10_16_fat32", + "py34-none-macosx_10_16_universal2", + "py34-none-macosx_10_16_universal", + "py34-none-macosx_10_15_x86_64", + "py34-none-macosx_10_15_intel", + "py34-none-macosx_10_15_fat64", + "py34-none-macosx_10_15_fat32", + "py34-none-macosx_10_15_universal2", + "py34-none-macosx_10_15_universal", + "py34-none-macosx_10_14_x86_64", + "py34-none-macosx_10_14_intel", + "py34-none-macosx_10_14_fat64", + "py34-none-macosx_10_14_fat32", + "py34-none-macosx_10_14_universal2", + "py34-none-macosx_10_14_universal", + "py34-none-macosx_10_13_x86_64", + "py34-none-macosx_10_13_intel", + "py34-none-macosx_10_13_fat64", + "py34-none-macosx_10_13_fat32", + "py34-none-macosx_10_13_universal2", + "py34-none-macosx_10_13_universal", + "py34-none-macosx_10_12_x86_64", + "py34-none-macosx_10_12_intel", + "py34-none-macosx_10_12_fat64", + "py34-none-macosx_10_12_fat32", + "py34-none-macosx_10_12_universal2", + "py34-none-macosx_10_12_universal", + "py34-none-macosx_10_11_x86_64", + "py34-none-macosx_10_11_intel", + "py34-none-macosx_10_11_fat64", + "py34-none-macosx_10_11_fat32", + "py34-none-macosx_10_11_universal2", + "py34-none-macosx_10_11_universal", + "py34-none-macosx_10_10_x86_64", + "py34-none-macosx_10_10_intel", + "py34-none-macosx_10_10_fat64", + "py34-none-macosx_10_10_fat32", + "py34-none-macosx_10_10_universal2", + "py34-none-macosx_10_10_universal", + "py34-none-macosx_10_9_x86_64", + "py34-none-macosx_10_9_intel", + "py34-none-macosx_10_9_fat64", + "py34-none-macosx_10_9_fat32", + "py34-none-macosx_10_9_universal2", + "py34-none-macosx_10_9_universal", + "py34-none-macosx_10_8_x86_64", + "py34-none-macosx_10_8_intel", + "py34-none-macosx_10_8_fat64", + "py34-none-macosx_10_8_fat32", + "py34-none-macosx_10_8_universal2", + "py34-none-macosx_10_8_universal", + "py34-none-macosx_10_7_x86_64", + "py34-none-macosx_10_7_intel", + "py34-none-macosx_10_7_fat64", + "py34-none-macosx_10_7_fat32", + "py34-none-macosx_10_7_universal2", + "py34-none-macosx_10_7_universal", + "py34-none-macosx_10_6_x86_64", + "py34-none-macosx_10_6_intel", + "py34-none-macosx_10_6_fat64", + "py34-none-macosx_10_6_fat32", + "py34-none-macosx_10_6_universal2", + "py34-none-macosx_10_6_universal", + "py34-none-macosx_10_5_x86_64", + "py34-none-macosx_10_5_intel", + "py34-none-macosx_10_5_fat64", + "py34-none-macosx_10_5_fat32", + "py34-none-macosx_10_5_universal2", + "py34-none-macosx_10_5_universal", + "py34-none-macosx_10_4_x86_64", + "py34-none-macosx_10_4_intel", + "py34-none-macosx_10_4_fat64", + "py34-none-macosx_10_4_fat32", + "py34-none-macosx_10_4_universal2", + "py34-none-macosx_10_4_universal", + "py33-none-macosx_13_0_x86_64", + "py33-none-macosx_13_0_intel", + "py33-none-macosx_13_0_fat64", + "py33-none-macosx_13_0_fat32", + "py33-none-macosx_13_0_universal2", + "py33-none-macosx_13_0_universal", + "py33-none-macosx_12_0_x86_64", + "py33-none-macosx_12_0_intel", + "py33-none-macosx_12_0_fat64", + "py33-none-macosx_12_0_fat32", + "py33-none-macosx_12_0_universal2", + "py33-none-macosx_12_0_universal", + "py33-none-macosx_11_0_x86_64", + "py33-none-macosx_11_0_intel", + "py33-none-macosx_11_0_fat64", + "py33-none-macosx_11_0_fat32", + "py33-none-macosx_11_0_universal2", + "py33-none-macosx_11_0_universal", + "py33-none-macosx_10_16_x86_64", + "py33-none-macosx_10_16_intel", + "py33-none-macosx_10_16_fat64", + "py33-none-macosx_10_16_fat32", + "py33-none-macosx_10_16_universal2", + "py33-none-macosx_10_16_universal", + "py33-none-macosx_10_15_x86_64", + "py33-none-macosx_10_15_intel", + "py33-none-macosx_10_15_fat64", + "py33-none-macosx_10_15_fat32", + "py33-none-macosx_10_15_universal2", + "py33-none-macosx_10_15_universal", + "py33-none-macosx_10_14_x86_64", + "py33-none-macosx_10_14_intel", + "py33-none-macosx_10_14_fat64", + "py33-none-macosx_10_14_fat32", + "py33-none-macosx_10_14_universal2", + "py33-none-macosx_10_14_universal", + "py33-none-macosx_10_13_x86_64", + "py33-none-macosx_10_13_intel", + "py33-none-macosx_10_13_fat64", + "py33-none-macosx_10_13_fat32", + "py33-none-macosx_10_13_universal2", + "py33-none-macosx_10_13_universal", + "py33-none-macosx_10_12_x86_64", + "py33-none-macosx_10_12_intel", + "py33-none-macosx_10_12_fat64", + "py33-none-macosx_10_12_fat32", + "py33-none-macosx_10_12_universal2", + "py33-none-macosx_10_12_universal", + "py33-none-macosx_10_11_x86_64", + "py33-none-macosx_10_11_intel", + "py33-none-macosx_10_11_fat64", + "py33-none-macosx_10_11_fat32", + "py33-none-macosx_10_11_universal2", + "py33-none-macosx_10_11_universal", + "py33-none-macosx_10_10_x86_64", + "py33-none-macosx_10_10_intel", + "py33-none-macosx_10_10_fat64", + "py33-none-macosx_10_10_fat32", + "py33-none-macosx_10_10_universal2", + "py33-none-macosx_10_10_universal", + "py33-none-macosx_10_9_x86_64", + "py33-none-macosx_10_9_intel", + "py33-none-macosx_10_9_fat64", + "py33-none-macosx_10_9_fat32", + "py33-none-macosx_10_9_universal2", + "py33-none-macosx_10_9_universal", + "py33-none-macosx_10_8_x86_64", + "py33-none-macosx_10_8_intel", + "py33-none-macosx_10_8_fat64", + "py33-none-macosx_10_8_fat32", + "py33-none-macosx_10_8_universal2", + "py33-none-macosx_10_8_universal", + "py33-none-macosx_10_7_x86_64", + "py33-none-macosx_10_7_intel", + "py33-none-macosx_10_7_fat64", + "py33-none-macosx_10_7_fat32", + "py33-none-macosx_10_7_universal2", + "py33-none-macosx_10_7_universal", + "py33-none-macosx_10_6_x86_64", + "py33-none-macosx_10_6_intel", + "py33-none-macosx_10_6_fat64", + "py33-none-macosx_10_6_fat32", + "py33-none-macosx_10_6_universal2", + "py33-none-macosx_10_6_universal", + "py33-none-macosx_10_5_x86_64", + "py33-none-macosx_10_5_intel", + "py33-none-macosx_10_5_fat64", + "py33-none-macosx_10_5_fat32", + "py33-none-macosx_10_5_universal2", + "py33-none-macosx_10_5_universal", + "py33-none-macosx_10_4_x86_64", + "py33-none-macosx_10_4_intel", + "py33-none-macosx_10_4_fat64", + "py33-none-macosx_10_4_fat32", + "py33-none-macosx_10_4_universal2", + "py33-none-macosx_10_4_universal", + "py32-none-macosx_13_0_x86_64", + "py32-none-macosx_13_0_intel", + "py32-none-macosx_13_0_fat64", + "py32-none-macosx_13_0_fat32", + "py32-none-macosx_13_0_universal2", + "py32-none-macosx_13_0_universal", + "py32-none-macosx_12_0_x86_64", + "py32-none-macosx_12_0_intel", + "py32-none-macosx_12_0_fat64", + "py32-none-macosx_12_0_fat32", + "py32-none-macosx_12_0_universal2", + "py32-none-macosx_12_0_universal", + "py32-none-macosx_11_0_x86_64", + "py32-none-macosx_11_0_intel", + "py32-none-macosx_11_0_fat64", + "py32-none-macosx_11_0_fat32", + "py32-none-macosx_11_0_universal2", + "py32-none-macosx_11_0_universal", + "py32-none-macosx_10_16_x86_64", + "py32-none-macosx_10_16_intel", + "py32-none-macosx_10_16_fat64", + "py32-none-macosx_10_16_fat32", + "py32-none-macosx_10_16_universal2", + "py32-none-macosx_10_16_universal", + "py32-none-macosx_10_15_x86_64", + "py32-none-macosx_10_15_intel", + "py32-none-macosx_10_15_fat64", + "py32-none-macosx_10_15_fat32", + "py32-none-macosx_10_15_universal2", + "py32-none-macosx_10_15_universal", + "py32-none-macosx_10_14_x86_64", + "py32-none-macosx_10_14_intel", + "py32-none-macosx_10_14_fat64", + "py32-none-macosx_10_14_fat32", + "py32-none-macosx_10_14_universal2", + "py32-none-macosx_10_14_universal", + "py32-none-macosx_10_13_x86_64", + "py32-none-macosx_10_13_intel", + "py32-none-macosx_10_13_fat64", + "py32-none-macosx_10_13_fat32", + "py32-none-macosx_10_13_universal2", + "py32-none-macosx_10_13_universal", + "py32-none-macosx_10_12_x86_64", + "py32-none-macosx_10_12_intel", + "py32-none-macosx_10_12_fat64", + "py32-none-macosx_10_12_fat32", + "py32-none-macosx_10_12_universal2", + "py32-none-macosx_10_12_universal", + "py32-none-macosx_10_11_x86_64", + "py32-none-macosx_10_11_intel", + "py32-none-macosx_10_11_fat64", + "py32-none-macosx_10_11_fat32", + "py32-none-macosx_10_11_universal2", + "py32-none-macosx_10_11_universal", + "py32-none-macosx_10_10_x86_64", + "py32-none-macosx_10_10_intel", + "py32-none-macosx_10_10_fat64", + "py32-none-macosx_10_10_fat32", + "py32-none-macosx_10_10_universal2", + "py32-none-macosx_10_10_universal", + "py32-none-macosx_10_9_x86_64", + "py32-none-macosx_10_9_intel", + "py32-none-macosx_10_9_fat64", + "py32-none-macosx_10_9_fat32", + "py32-none-macosx_10_9_universal2", + "py32-none-macosx_10_9_universal", + "py32-none-macosx_10_8_x86_64", + "py32-none-macosx_10_8_intel", + "py32-none-macosx_10_8_fat64", + "py32-none-macosx_10_8_fat32", + "py32-none-macosx_10_8_universal2", + "py32-none-macosx_10_8_universal", + "py32-none-macosx_10_7_x86_64", + "py32-none-macosx_10_7_intel", + "py32-none-macosx_10_7_fat64", + "py32-none-macosx_10_7_fat32", + "py32-none-macosx_10_7_universal2", + "py32-none-macosx_10_7_universal", + "py32-none-macosx_10_6_x86_64", + "py32-none-macosx_10_6_intel", + "py32-none-macosx_10_6_fat64", + "py32-none-macosx_10_6_fat32", + "py32-none-macosx_10_6_universal2", + "py32-none-macosx_10_6_universal", + "py32-none-macosx_10_5_x86_64", + "py32-none-macosx_10_5_intel", + "py32-none-macosx_10_5_fat64", + "py32-none-macosx_10_5_fat32", + "py32-none-macosx_10_5_universal2", + "py32-none-macosx_10_5_universal", + "py32-none-macosx_10_4_x86_64", + "py32-none-macosx_10_4_intel", + "py32-none-macosx_10_4_fat64", + "py32-none-macosx_10_4_fat32", + "py32-none-macosx_10_4_universal2", + "py32-none-macosx_10_4_universal", + "py31-none-macosx_13_0_x86_64", + "py31-none-macosx_13_0_intel", + "py31-none-macosx_13_0_fat64", + "py31-none-macosx_13_0_fat32", + "py31-none-macosx_13_0_universal2", + "py31-none-macosx_13_0_universal", + "py31-none-macosx_12_0_x86_64", + "py31-none-macosx_12_0_intel", + "py31-none-macosx_12_0_fat64", + "py31-none-macosx_12_0_fat32", + "py31-none-macosx_12_0_universal2", + "py31-none-macosx_12_0_universal", + "py31-none-macosx_11_0_x86_64", + "py31-none-macosx_11_0_intel", + "py31-none-macosx_11_0_fat64", + "py31-none-macosx_11_0_fat32", + "py31-none-macosx_11_0_universal2", + "py31-none-macosx_11_0_universal", + "py31-none-macosx_10_16_x86_64", + "py31-none-macosx_10_16_intel", + "py31-none-macosx_10_16_fat64", + "py31-none-macosx_10_16_fat32", + "py31-none-macosx_10_16_universal2", + "py31-none-macosx_10_16_universal", + "py31-none-macosx_10_15_x86_64", + "py31-none-macosx_10_15_intel", + "py31-none-macosx_10_15_fat64", + "py31-none-macosx_10_15_fat32", + "py31-none-macosx_10_15_universal2", + "py31-none-macosx_10_15_universal", + "py31-none-macosx_10_14_x86_64", + "py31-none-macosx_10_14_intel", + "py31-none-macosx_10_14_fat64", + "py31-none-macosx_10_14_fat32", + "py31-none-macosx_10_14_universal2", + "py31-none-macosx_10_14_universal", + "py31-none-macosx_10_13_x86_64", + "py31-none-macosx_10_13_intel", + "py31-none-macosx_10_13_fat64", + "py31-none-macosx_10_13_fat32", + "py31-none-macosx_10_13_universal2", + "py31-none-macosx_10_13_universal", + "py31-none-macosx_10_12_x86_64", + "py31-none-macosx_10_12_intel", + "py31-none-macosx_10_12_fat64", + "py31-none-macosx_10_12_fat32", + "py31-none-macosx_10_12_universal2", + "py31-none-macosx_10_12_universal", + "py31-none-macosx_10_11_x86_64", + "py31-none-macosx_10_11_intel", + "py31-none-macosx_10_11_fat64", + "py31-none-macosx_10_11_fat32", + "py31-none-macosx_10_11_universal2", + "py31-none-macosx_10_11_universal", + "py31-none-macosx_10_10_x86_64", + "py31-none-macosx_10_10_intel", + "py31-none-macosx_10_10_fat64", + "py31-none-macosx_10_10_fat32", + "py31-none-macosx_10_10_universal2", + "py31-none-macosx_10_10_universal", + "py31-none-macosx_10_9_x86_64", + "py31-none-macosx_10_9_intel", + "py31-none-macosx_10_9_fat64", + "py31-none-macosx_10_9_fat32", + "py31-none-macosx_10_9_universal2", + "py31-none-macosx_10_9_universal", + "py31-none-macosx_10_8_x86_64", + "py31-none-macosx_10_8_intel", + "py31-none-macosx_10_8_fat64", + "py31-none-macosx_10_8_fat32", + "py31-none-macosx_10_8_universal2", + "py31-none-macosx_10_8_universal", + "py31-none-macosx_10_7_x86_64", + "py31-none-macosx_10_7_intel", + "py31-none-macosx_10_7_fat64", + "py31-none-macosx_10_7_fat32", + "py31-none-macosx_10_7_universal2", + "py31-none-macosx_10_7_universal", + "py31-none-macosx_10_6_x86_64", + "py31-none-macosx_10_6_intel", + "py31-none-macosx_10_6_fat64", + "py31-none-macosx_10_6_fat32", + "py31-none-macosx_10_6_universal2", + "py31-none-macosx_10_6_universal", + "py31-none-macosx_10_5_x86_64", + "py31-none-macosx_10_5_intel", + "py31-none-macosx_10_5_fat64", + "py31-none-macosx_10_5_fat32", + "py31-none-macosx_10_5_universal2", + "py31-none-macosx_10_5_universal", + "py31-none-macosx_10_4_x86_64", + "py31-none-macosx_10_4_intel", + "py31-none-macosx_10_4_fat64", + "py31-none-macosx_10_4_fat32", + "py31-none-macosx_10_4_universal2", + "py31-none-macosx_10_4_universal", + "py30-none-macosx_13_0_x86_64", + "py30-none-macosx_13_0_intel", + "py30-none-macosx_13_0_fat64", + "py30-none-macosx_13_0_fat32", + "py30-none-macosx_13_0_universal2", + "py30-none-macosx_13_0_universal", + "py30-none-macosx_12_0_x86_64", + "py30-none-macosx_12_0_intel", + "py30-none-macosx_12_0_fat64", + "py30-none-macosx_12_0_fat32", + "py30-none-macosx_12_0_universal2", + "py30-none-macosx_12_0_universal", + "py30-none-macosx_11_0_x86_64", + "py30-none-macosx_11_0_intel", + "py30-none-macosx_11_0_fat64", + "py30-none-macosx_11_0_fat32", + "py30-none-macosx_11_0_universal2", + "py30-none-macosx_11_0_universal", + "py30-none-macosx_10_16_x86_64", + "py30-none-macosx_10_16_intel", + "py30-none-macosx_10_16_fat64", + "py30-none-macosx_10_16_fat32", + "py30-none-macosx_10_16_universal2", + "py30-none-macosx_10_16_universal", + "py30-none-macosx_10_15_x86_64", + "py30-none-macosx_10_15_intel", + "py30-none-macosx_10_15_fat64", + "py30-none-macosx_10_15_fat32", + "py30-none-macosx_10_15_universal2", + "py30-none-macosx_10_15_universal", + "py30-none-macosx_10_14_x86_64", + "py30-none-macosx_10_14_intel", + "py30-none-macosx_10_14_fat64", + "py30-none-macosx_10_14_fat32", + "py30-none-macosx_10_14_universal2", + "py30-none-macosx_10_14_universal", + "py30-none-macosx_10_13_x86_64", + "py30-none-macosx_10_13_intel", + "py30-none-macosx_10_13_fat64", + "py30-none-macosx_10_13_fat32", + "py30-none-macosx_10_13_universal2", + "py30-none-macosx_10_13_universal", + "py30-none-macosx_10_12_x86_64", + "py30-none-macosx_10_12_intel", + "py30-none-macosx_10_12_fat64", + "py30-none-macosx_10_12_fat32", + "py30-none-macosx_10_12_universal2", + "py30-none-macosx_10_12_universal", + "py30-none-macosx_10_11_x86_64", + "py30-none-macosx_10_11_intel", + "py30-none-macosx_10_11_fat64", + "py30-none-macosx_10_11_fat32", + "py30-none-macosx_10_11_universal2", + "py30-none-macosx_10_11_universal", + "py30-none-macosx_10_10_x86_64", + "py30-none-macosx_10_10_intel", + "py30-none-macosx_10_10_fat64", + "py30-none-macosx_10_10_fat32", + "py30-none-macosx_10_10_universal2", + "py30-none-macosx_10_10_universal", + "py30-none-macosx_10_9_x86_64", + "py30-none-macosx_10_9_intel", + "py30-none-macosx_10_9_fat64", + "py30-none-macosx_10_9_fat32", + "py30-none-macosx_10_9_universal2", + "py30-none-macosx_10_9_universal", + "py30-none-macosx_10_8_x86_64", + "py30-none-macosx_10_8_intel", + "py30-none-macosx_10_8_fat64", + "py30-none-macosx_10_8_fat32", + "py30-none-macosx_10_8_universal2", + "py30-none-macosx_10_8_universal", + "py30-none-macosx_10_7_x86_64", + "py30-none-macosx_10_7_intel", + "py30-none-macosx_10_7_fat64", + "py30-none-macosx_10_7_fat32", + "py30-none-macosx_10_7_universal2", + "py30-none-macosx_10_7_universal", + "py30-none-macosx_10_6_x86_64", + "py30-none-macosx_10_6_intel", + "py30-none-macosx_10_6_fat64", + "py30-none-macosx_10_6_fat32", + "py30-none-macosx_10_6_universal2", + "py30-none-macosx_10_6_universal", + "py30-none-macosx_10_5_x86_64", + "py30-none-macosx_10_5_intel", + "py30-none-macosx_10_5_fat64", + "py30-none-macosx_10_5_fat32", + "py30-none-macosx_10_5_universal2", + "py30-none-macosx_10_5_universal", + "py30-none-macosx_10_4_x86_64", + "py30-none-macosx_10_4_intel", + "py30-none-macosx_10_4_fat64", + "py30-none-macosx_10_4_fat32", + "py30-none-macosx_10_4_universal2", + "py30-none-macosx_10_4_universal", + "cp312-none-any", + "py312-none-any", + "py3-none-any", + "py311-none-any", + "py310-none-any", + "py39-none-any", + "py38-none-any", + "py37-none-any", + "py36-none-any", + "py35-none-any", + "py34-none-any", + "py33-none-any", + "py32-none-any", + "py31-none-any", + "py30-none-any" + ], + "marker_environment": { + "implementation_name": "cpython", + "implementation_version": "3.12.6", + "os_name": "posix", + "platform_machine": "x86_64", + "platform_python_implementation": "CPython", + "platform_release": "22.6.0", + "platform_system": "Darwin", + "platform_version": "Darwin Kernel Version 22.6.0: Mon Jun 24 01:25:37 PDT 2024; root:xnu-8796.141.3.706.2~1/RELEASE_X86_64", + "python_full_version": "3.12.6", + "python_version": "3.12", + "sys_platform": "darwin" + } +} \ No newline at end of file diff --git a/package/package.toml b/package/package.toml index b8df9e903..fb8f0d95e 100644 --- a/package/package.toml +++ b/package/package.toml @@ -1,6 +1,6 @@ [scie] -pbs-release = "20240814" -python-version = "3.12.5" +pbs-release = "20240909" +python-version = "3.12.6" pex-extras = [ "management", @@ -11,4 +11,4 @@ platforms = [ "linux-x86_64", "macos-aarch64", "macos-x86_64", -] \ No newline at end of file +] diff --git a/package/pex-scie.lock b/package/pex-scie.lock new file mode 100644 index 000000000..62b50791d --- /dev/null +++ b/package/pex-scie.lock @@ -0,0 +1,138 @@ +{ + "allow_builds": false, + "allow_prereleases": false, + "allow_wheels": true, + "build_isolation": true, + "constraints": [], + "excluded": [], + "locked_resolves": [ + { + "locked_requirements": [ + { + "artifacts": [ + { + "algorithm": "sha256", + "hash": "c588a7e9b1173b6e866756dde596fd4cad94f9399daf99ad8c3258b3cb2b47a0", + "url": "https://files.pythonhosted.org/packages/0b/37/f8da2fbd29690b3557cca414c1949f92162981920699cd62095a984983bf/psutil-6.0.0-cp36-abi3-macosx_10_9_x86_64.whl" + } + ], + "project_name": "psutil", + "requires_dists": [ + "enum34; python_version <= \"3.4\" and extra == \"test\"", + "ipaddress; python_version < \"3.0\" and extra == \"test\"", + "mock; python_version < \"3.0\" and extra == \"test\"", + "pywin32; sys_platform == \"win32\" and extra == \"test\"", + "wmi; sys_platform == \"win32\" and extra == \"test\"" + ], + "requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7", + "version": "6.0.0" + } + ], + "platform_tag": [ + "cp312", + "cp312", + "macosx_13_0_x86_64" + ] + }, + { + "locked_requirements": [ + { + "artifacts": [ + { + "algorithm": "sha256", + "hash": "5fd9a97c8e94059b0ef54a7d4baf13b405011176c3b6ff257c247cae0d560ecd", + "url": "https://files.pythonhosted.org/packages/19/74/f59e7e0d392bc1070e9a70e2f9190d652487ac115bb16e2eff6b22ad1d24/psutil-6.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + } + ], + "project_name": "psutil", + "requires_dists": [ + "enum34; python_version <= \"3.4\" and extra == \"test\"", + "ipaddress; python_version < \"3.0\" and extra == \"test\"", + "mock; python_version < \"3.0\" and extra == \"test\"", + "pywin32; sys_platform == \"win32\" and extra == \"test\"", + "wmi; sys_platform == \"win32\" and extra == \"test\"" + ], + "requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7", + "version": "6.0.0" + } + ], + "platform_tag": [ + "cp312", + "cp312", + "manylinux_2_31_x86_64" + ] + }, + { + "locked_requirements": [ + { + "artifacts": [ + { + "algorithm": "sha256", + "hash": "ffe7fc9b6b36beadc8c322f84e1caff51e8703b88eee1da46d1e3a6ae11b4fd0", + "url": "https://files.pythonhosted.org/packages/7c/06/63872a64c312a24fb9b4af123ee7007a306617da63ff13bcc1432386ead7/psutil-6.0.0-cp38-abi3-macosx_11_0_arm64.whl" + } + ], + "project_name": "psutil", + "requires_dists": [ + "enum34; python_version <= \"3.4\" and extra == \"test\"", + "ipaddress; python_version < \"3.0\" and extra == \"test\"", + "mock; python_version < \"3.0\" and extra == \"test\"", + "pywin32; sys_platform == \"win32\" and extra == \"test\"", + "wmi; sys_platform == \"win32\" and extra == \"test\"" + ], + "requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7", + "version": "6.0.0" + } + ], + "platform_tag": [ + "cp312", + "cp312", + "macosx_14_0_arm64" + ] + }, + { + "locked_requirements": [ + { + "artifacts": [ + { + "algorithm": "sha256", + "hash": "e2e8d0054fc88153ca0544f5c4d554d42e33df2e009c4ff42284ac9ebdef4132", + "url": "https://files.pythonhosted.org/packages/cd/5f/60038e277ff0a9cc8f0c9ea3d0c5eb6ee1d2470ea3f9389d776432888e47/psutil-6.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + } + ], + "project_name": "psutil", + "requires_dists": [ + "enum34; python_version <= \"3.4\" and extra == \"test\"", + "ipaddress; python_version < \"3.0\" and extra == \"test\"", + "mock; python_version < \"3.0\" and extra == \"test\"", + "pywin32; sys_platform == \"win32\" and extra == \"test\"", + "wmi; sys_platform == \"win32\" and extra == \"test\"" + ], + "requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7", + "version": "6.0.0" + } + ], + "platform_tag": [ + "cp312", + "cp312", + "manylinux_2_31_aarch64" + ] + } + ], + "only_builds": [], + "only_wheels": [], + "overridden": [], + "path_mappings": {}, + "pex_version": "2.17.0", + "pip_version": "24.2", + "prefer_older_binary": false, + "requirements": [ + "psutil>=5.3" + ], + "requires_python": [], + "resolver_version": "pip-2020-resolver", + "style": "strict", + "target_systems": [], + "transitive": true, + "use_pep517": null +} diff --git a/package/scie_config.py b/package/scie_config.py new file mode 100644 index 000000000..c97717463 --- /dev/null +++ b/package/scie_config.py @@ -0,0 +1,31 @@ +# Copyright 2024 Pex project contributors. +# Licensed under the Apache License, Version 2.0 (see LICENSE). + +from __future__ import annotations + +import pkgutil +from dataclasses import dataclass + +import toml + + +@dataclass(frozen=True) +class ScieConfig: + @classmethod + def load( + cls, *, pbs_release: str | None = None, python_version: str | None = None + ) -> ScieConfig: + data = pkgutil.get_data(__name__, "package.toml") + assert data is not None, f"Expected to find a sibling package.toml file to {__file__}." + scie_config = toml.loads(data.decode())["scie"] + return cls( + pbs_release=pbs_release or scie_config["pbs-release"], + python_version=python_version or scie_config["python-version"], + pex_extras=tuple(scie_config["pex-extras"]), + platforms=tuple(scie_config["platforms"]), + ) + + pbs_release: str + python_version: str + pex_extras: tuple[str, ...] + platforms: tuple[str, ...] diff --git a/pex/bin/pex.py b/pex/bin/pex.py index 5e909d6d4..ebb462939 100755 --- a/pex/bin/pex.py +++ b/pex/bin/pex.py @@ -1375,6 +1375,8 @@ def do_main( ), V=options.verbosity, ) + if scie_configuration.options.scie_only: + os.unlink(pex_file) else: if not _compatible_with_current_platform(interpreter, targets.platforms): log("WARNING: attempting to run PEX with incompatible platforms!", V=1) diff --git a/pex/scie/__init__.py b/pex/scie/__init__.py index 9523f9fc5..f190e8c27 100644 --- a/pex/scie/__init__.py +++ b/pex/scie/__init__.py @@ -18,6 +18,7 @@ ConsoleScriptsManifest, File, InterpreterDistribution, + PlatformNamingStyle, Provider, ScieConfiguration, ScieInfo, @@ -64,20 +65,54 @@ def register_options(parser): "on machines with no Python installed at all. If your PEX has multiple targets, " "whether `--platform`s, `--complete-platform`s or local interpreters in any " "combination, then one PEX scie will be made for each platform, selecting the latest " - "compatible portable CPython interpreter. Note that only CPython>=3.8 is supported. If " - "you'd like to explicitly control the target platforms or the exact portable CPython " - "selected, see `--scie-platform`, `--scie-pbs-release` and `--scie-python-version`. " - "Specifying `--scie {lazy}` will fetch the portable CPython interpreter just in time " - "on first boot of the PEX scie on a given machine if needed. The URL(s) to fetch the " - "portable CPython interpreter from can be customized by exporting the " - "PEX_BOOTSTRAP_URLS environment variable pointing to a json file with the format: " - '`{{"ptex": {{: , ...}}}}` where the file names should match those ' - "found via `SCIE=inspect | jq .ptex` with appropriate replacement URLs. " - "Specifying `--scie {eager}` will embed the portable CPython interpreter in your PEX " - "scie making for a larger file, but requiring no internet access to boot. If you have " - "customization needs not addressed by the Pex `--scie*` options, consider using " - "`science` to build your scies (which is what Pex uses behind the scenes); see: " - "https://science.scie.app.".format(lazy=ScieStyle.LAZY, eager=ScieStyle.EAGER) + "compatible portable CPython or PyPy interpreter as appropriate. Note that only " + "Python>=3.8 is supported. If you'd like to explicitly control the target platforms or " + "the exact portable CPython selected, see `--scie-platform`, `--scie-pbs-release` and " + "`--scie-python-version`. Specifying `--scie {lazy}` will fetch the portable CPython " + "interpreter just in time on first boot of the PEX scie on a given machine if needed. " + "The URL(s) to fetch the portable CPython interpreter from can be customized by " + "exporting the PEX_BOOTSTRAP_URLS environment variable pointing to a json file with " + 'the format: `{{"ptex": {{: , ...}}}}` where the file names should ' + "match those found via `SCIE=inspect | jq .ptex` with appropriate " + "replacement URLs. Specifying `--scie {eager}` will embed the portable CPython " + "interpreter in your PEX scie making for a larger file, but requiring no internet " + "access to boot. If you have customization needs not addressed by the Pex `--scie*` " + "options, consider using `science` to build your scies (which is what Pex uses behind " + "the scenes); see: https://science.scie.app.".format( + lazy=ScieStyle.LAZY, eager=ScieStyle.EAGER + ) + ), + ) + parser.add_argument( + "--scie-only", + "--no-scie-only", + "--pex-and-scie", + dest="scie_only", + default=False, + type=bool, + action=HandleBoolAction, + help=( + "Only output a scie. By default, both a PEX and a scie are output unless the " + "`-o` / `--output-file` specified has no '.pex' extension or a platform suffix is " + "included (see `--scie-name-platform`)." + ), + ) + parser.add_argument( + "--scie-name-style", + dest="naming_style", + default=None, + type=PlatformNamingStyle.for_value, + choices=PlatformNamingStyle.values(), + help=( + "Control how the `-o` / --output-file` translates to a scie name. By default (" + "`--scie-name-style dynamic`), the platform is used as a file suffix only when needed " + "for disambiguation when targeting a local platform. Specifying " + "`--scie-name-style platform-file-suffix` forces the scie target platform name to be " + "added as a suffix of the output filename; e.g.: `-o app` would produce a scie named " + "app-linux-x86_64 assuming the scie targets that platform. Specifying " + "`--scie-name-style platform-parent-dir` places the scie in a sub-directory with the " + "name of the platform it targets; e.g.: `-o app` would produce a scie at " + "`macos-aarch64/app` assuming the scie targets that platform." ), ) parser.add_argument( @@ -109,6 +144,19 @@ def register_options(parser): "review the `install` command help." ), ) + parser.add_argument( + "--scie-busybox-pex-entrypoint-env-passthrough", + "--no-scie-busybox-pex-entrypoint-env-passthrough", + dest="scie_busybox_pex_entrypoint_env_passthrough", + default=False, + type=bool, + action=HandleBoolAction, + help=( + "When creating a busybox, allow overriding the primary entrypoint at runtime via " + "PEX_INTERPRETER, PEX_SCRIPT and PEX_MODULE. Note that when using --venv this adds " + "modest startup overhead on the order of 10ms." + ), + ) parser.add_argument( "--scie-platform", dest="scie_platforms", @@ -126,7 +174,8 @@ def register_options(parser): "unspecified, the platforms implied by the targets selected to build the PEX with are " "used. Those targets are influenced by the current interpreter running Pex as well as " "use of `--python`, `--interpreter-constraint`, `--platform` or `--complete-platform` " - "options." + "options. Note that, in general, `--scie-platform` should only be used to select a " + "subset of the platforms implied by the targets selected via other options." ), ) parser.add_argument( @@ -223,11 +272,18 @@ def render_options(options): # type: (ScieOptions) -> Text args = ["--scie", str(options.style)] # type: List[Text] + if options.naming_style: + args.append("--scie-name-style") + args.append(str(options.naming_style)) + if options.scie_only: + args.append("--scie-only") if options.busybox_entrypoints: args.append("--scie-busybox") entrypoints = list(options.busybox_entrypoints.console_scripts_manifest.iter_specs()) entrypoints.extend(map(str, options.busybox_entrypoints.ad_hoc_entry_points)) args.append(",".join(entrypoints)) + if options.busybox_pex_entrypoint_env_passthrough: + args.append("--scie-busybox-pex-entrypoint-env-passthrough") for platform in options.platforms: args.append("--scie-platform") args.append(str(platform)) @@ -324,7 +380,10 @@ def extract_options(options): return ScieOptions( style=options.scie_style, + naming_style=options.naming_style, + scie_only=options.scie_only, busybox_entrypoints=entry_points, + busybox_pex_entrypoint_env_passthrough=options.scie_busybox_pex_entrypoint_env_passthrough, platforms=tuple(OrderedSet(options.scie_platforms)), pbs_release=options.scie_pbs_release, pypy_release=options.scie_pypy_release, diff --git a/pex/scie/model.py b/pex/scie/model.py index 0d7218ce9..fb2c0f7a6 100644 --- a/pex/scie/model.py +++ b/pex/scie/model.py @@ -35,6 +35,15 @@ class Value(Enum.Value): EAGER = Value("eager") +class PlatformNamingStyle(Enum["PlatformNamingStyle.Value"]): + class Value(Enum.Value): + pass + + DYNAMIC = Value("dynamic") + PARENT_DIR = Value("platform-parent-dir") + FILE_SUFFIX = Value("platform-file-suffix") + + @attr.s(frozen=True) class ConsoleScript(object): name = attr.ib() # type: str @@ -347,7 +356,10 @@ class File(str): @attr.s(frozen=True) class ScieOptions(object): style = attr.ib(default=ScieStyle.LAZY) # type: ScieStyle.Value + naming_style = attr.ib(default=None) # type: Optional[PlatformNamingStyle.Value] + scie_only = attr.ib(default=False) # type: bool busybox_entrypoints = attr.ib(default=None) # type: Optional[BusyBoxEntryPoints] + busybox_pex_entrypoint_env_passthrough = attr.ib(default=False) # type: bool platforms = attr.ib(default=()) # type: Tuple[SciePlatform.Value, ...] pbs_release = attr.ib(default=None) # type: Optional[str] pypy_release = attr.ib(default=None) # type: Optional[str] diff --git a/pex/scie/science.py b/pex/scie/science.py index 6c6753b34..0a63d8fe6 100644 --- a/pex/scie/science.py +++ b/pex/scie/science.py @@ -25,6 +25,7 @@ from pex.scie.model import ( File, InterpreterDistribution, + PlatformNamingStyle, Provider, ScieConfiguration, ScieInfo, @@ -158,18 +159,26 @@ def args( def create_cmd(named_entry_point): # type: (NamedEntryPoint) -> Dict[str, Any] - return { - "name": named_entry_point.name, - "env": { + + if ( + configuration.options.busybox_pex_entrypoint_env_passthrough + and named_entry_point.entry_point == pex_entry_point + ): + env = {"default": default_env(named_entry_point), "remove_exact": ["PEX_VENV"]} + else: + env = { "default": default_env(named_entry_point), "replace": {"PEX_MODULE": str(named_entry_point.entry_point)}, "remove_exact": ["PEX_INTERPRETER", "PEX_SCRIPT", "PEX_VENV"], - }, + } + return { + "name": named_entry_point.name, + "env": env, "exe": "{scie.bindings.configure:PYTHON}", "args": args(named_entry_point, "{scie.bindings.configure:PEX}"), } - if pex_info.venv: + if pex_info.venv and not configuration.options.busybox_pex_entrypoint_env_passthrough: # N.B.: Executing the console script directly instead of bouncing through the PEX # __main__.py using PEX_SCRIPT saves ~10ms of re-exec overhead in informal testing; so # it's worth specializing here. @@ -414,7 +423,15 @@ def build( ) name = re.sub(r"\.pex$", "", os.path.basename(pex_file), flags=re.IGNORECASE) pex = PEX(pex_file) - use_platform_suffix = len(configuration.interpreters) > 1 + + naming_style = configuration.options.naming_style or PlatformNamingStyle.DYNAMIC + if PlatformNamingStyle.FILE_SUFFIX is naming_style: + use_platform_suffix = True + elif PlatformNamingStyle.PARENT_DIR is naming_style: + use_platform_suffix = False + else: + use_platform_suffix = len(configuration.interpreters) > 1 + filenames = Filenames.avoid_collisions_with(name) errors = OrderedDict() # type: OrderedDict[Manifest, str] @@ -423,6 +440,8 @@ def build( if env.PEX_VERBOSE: args.append("-{verbosity}".format(verbosity="v" * env.PEX_VERBOSE)) dest_dir = os.path.dirname(os.path.abspath(pex_file)) + if PlatformNamingStyle.PARENT_DIR is naming_style: + dest_dir = os.path.join(dest_dir, manifest.interpreter.platform.value) args.extend( [ "lift", diff --git a/pex/version.py b/pex/version.py index 3703e2501..8100cb25d 100644 --- a/pex/version.py +++ b/pex/version.py @@ -1,4 +1,4 @@ # Copyright 2015 Pex project contributors. # Licensed under the Apache License, Version 2.0 (see LICENSE). -__version__ = "2.17.0" +__version__ = "2.18.0" diff --git a/scripts/build_cache_image.py b/scripts/build-cache-image.py similarity index 100% rename from scripts/build_cache_image.py rename to scripts/build-cache-image.py diff --git a/scripts/build_docs.py b/scripts/build-docs.py similarity index 100% rename from scripts/build_docs.py rename to scripts/build-docs.py diff --git a/scripts/package.py b/scripts/create-packages.py similarity index 58% rename from scripts/package.py rename to scripts/create-packages.py index d7e6a6e58..92dfa6e13 100755 --- a/scripts/package.py +++ b/scripts/create-packages.py @@ -1,6 +1,9 @@ #!/usr/bin/env python3 +from __future__ import absolute_import, annotations + import atexit +import glob import hashlib import io import os @@ -15,7 +18,11 @@ from pathlib import Path, PurePath from typing import Dict, Iterator, Optional, Tuple, cast +from package.scie_config import ScieConfig +from pex.common import safe_mkdtemp + DIST_DIR = Path("dist") +PACKAGE_DIR = Path("package") def build_pex_pex( @@ -53,6 +60,96 @@ def build_pex_pex( return output_file +def build_pex_scies( + scie_dest_dir: Path, verbosity: int = 0, env: Optional[Dict[str, str]] = None +) -> Iterator[tuple[Path, str]]: + scie_config = ScieConfig.load() + + pex_requirement = f".[{','.join(scie_config.pex_extras)}]" + + lock = PACKAGE_DIR / "pex-scie.lock" + if not lock.exists(): + raise SystemExit( + f"The Pex scie lock at {lock} does not exist.\n" + f"Run `tox -e gen-scie-platform -- --all ...` to generate it." + ) + + missing_platforms: list[str] = [] + platforms: list[tuple[str, Path]] = [] + for platform in scie_config.platforms: + complete_platform = PACKAGE_DIR / "complete-platforms" / f"{platform}.json" + if not complete_platform.exists(): + missing_platforms.append(platform) + else: + platforms.append((platform, complete_platform)) + if missing_platforms: + missing = "\n".join( + f"{index}. {missing_platform}" + for index, missing_platform in enumerate(missing_platforms, start=1) + ) + raise SystemExit( + f"Of the {len(platforms)} expected Pex scie complete platforms, " + f"{len(missing)} {'is' if len(missing) == 1 else 'are'} missing:\n{missing}" + ) + + for platform, complete_platform in platforms: + dest_dir = safe_mkdtemp() + output_file = os.path.join(dest_dir, "pex") + args = [ + sys.executable, + "-m", + "pex", + *["-v" for _ in range(verbosity)], + "--disable-cache", + "--no-build", + "--no-compile", + "--no-use-system-time", + "--venv", + "--no-strip-pex-env", + "--complete-platform", + str(complete_platform), + "--lock", + str(lock), + "--scie", + "eager", + "--scie-only", + "--scie-name-style", + "platform-file-suffix", + "--scie-platform", + platform, + "--scie-pbs-release", + scie_config.pbs_release, + "--scie-python-version", + scie_config.python_version, + "--scie-pbs-stripped", + "--scie-hash-alg", + "sha256", + "--scie-busybox", + "@pex", + "--scie-busybox-pex-entrypoint-env-passthrough", + "-o", + output_file, + "-c", + "pex", + "--project", + pex_requirement, + ] + subprocess.run(args=args, env=env, check=True) + + artifacts = glob.glob(f"{output_file}*") + scie_artifacts = [artifact for artifact in artifacts if not artifact.endswith(".sha256")] + if len(scie_artifacts) != 1: + raise SystemExit( + f"Found unexpected artifacts after generating Pex scie:{os.linesep}" + f"{os.linesep.join(sorted(artifacts))}" + ) + scie_name = os.path.basename(scie_artifacts[0]) + for artifact in artifacts: + shutil.move(artifact, scie_dest_dir / os.path.basename(artifact)) + + yield scie_dest_dir / scie_name, platform + + def describe_rev() -> str: if not os.path.isdir(".git") and os.path.isfile("PKG-INFO"): # We're being build from an unpacked sdist. @@ -128,22 +225,41 @@ def main( embed_docs: bool = False, clean_docs: bool = False, pex_output_file: Optional[Path] = DIST_DIR / "pex", + scie_dest_dir: Optional[Path] = None, + markdown_hash_table_file: Optional[Path] = None, serve: bool = False ) -> None: env = os.environ.copy() if embed_docs: env.update(__PEX_BUILD_INCLUDE_DOCS__="1") + hash_table: dict[Path, tuple[str, int]] = {} if pex_output_file: print(f"Building Pex PEX to `{pex_output_file}` ...") build_pex_pex(pex_output_file, verbosity, env=env) rev = describe_rev() sha256, size = describe_file(pex_output_file) + hash_table[pex_output_file] = sha256, size print(f"Built Pex PEX @ {rev}:") print(f"sha256: {sha256}") print(f" size: {size}") + if scie_dest_dir: + print(f"Building Pex scies to `{scie_dest_dir}` ...") + for scie, platform in build_pex_scies(scie_dest_dir, verbosity, env=env): + hash_table[scie] = describe_file(scie) + print(f" Built Pex scie for {platform} at `{scie}`") + + if markdown_hash_table_file and hash_table: + with markdown_hash_table_file.open(mode="w") as fp: + print("|file|sha256|size|", file=fp) + print("|----|------|----|", file=fp) + for file, (sha256, size) in sorted(hash_table.items()): + print(f"|{file.name}|{sha256}|{size}|", file=fp) + + print(f"Generated markdown table of Pex sizes & hashes at `{markdown_hash_table_file}`") + if additional_dist_formats: print( f"Building additional distribution formats to `{DIST_DIR}`: " @@ -214,6 +330,24 @@ def main( type=Path, help="Build the Pex PEX at this path.", ) + parser.add_argument( + "--scies", + default=False, + action="store_true", + help="Build PEX scies.", + ) + parser.add_argument( + "--scie-dest-dir", + default=DIST_DIR, + type=Path, + help="Build the Pex scies in this dir.", + ) + parser.add_argument( + "--gen-md-table-of-hash-and-size", + default=None, + type=Path, + help="A path to generate a markdown table of packaged asset hashes to.", + ) parser.add_argument( "--serve", default=False, @@ -228,5 +362,7 @@ def main( embed_docs=args.embed_docs, clean_docs=args.clean_docs, pex_output_file=None if args.no_pex else args.pex_output_file, + scie_dest_dir=args.scie_dest_dir if args.scies else None, + markdown_hash_table_file=args.gen_md_table_of_hash_and_size, serve=args.serve ) diff --git a/scripts/embed_virtualenv.py b/scripts/embed-virtualenv.py similarity index 100% rename from scripts/embed_virtualenv.py rename to scripts/embed-virtualenv.py diff --git a/scripts/format.py b/scripts/format.py index e25169845..902d86f5f 100755 --- a/scripts/format.py +++ b/scripts/format.py @@ -41,6 +41,7 @@ def run_black(*args: str) -> None: *args, "build-backend", "docs", + "package", "pex", "scripts", "testing", @@ -54,7 +55,17 @@ def run_black(*args: str) -> None: def run_isort(*args: str) -> None: subprocess.run( - args=["isort", *args, "build-backend", "docs", "pex", "scripts", "testing", "tests"], + args=[ + "isort", + *args, + "build-backend", + "docs", + "package", + "pex", + "scripts", + "testing", + "tests", + ], check=True, ) diff --git a/scripts/gen_scie_platform.py b/scripts/gen-scie-platform.py similarity index 94% rename from scripts/gen_scie_platform.py rename to scripts/gen-scie-platform.py index e39471963..70b00a771 100644 --- a/scripts/gen_scie_platform.py +++ b/scripts/gen-scie-platform.py @@ -15,17 +15,17 @@ import zipfile from argparse import ArgumentError, ArgumentTypeError from contextlib import contextmanager -from dataclasses import dataclass from pathlib import Path from textwrap import dedent from typing import IO, Collection, Iterable, Iterator import github import httpx -import toml from github import Github from github.WorkflowRun import WorkflowRun +from package.scie_config import ScieConfig + logger = logging.getLogger(__name__) @@ -37,25 +37,6 @@ class GitHubError(Exception): GEN_SCIE_PLATFORMS_WORKFLOW = "gen-scie-platforms.yml" -@dataclass(frozen=True) -class ScieConfig: - @classmethod - def load(cls, *, pbs_release: str | None = None, python_version: str | None = None): - with (PACKAGE_DIR / "package.toml").open() as fp: - scie_config = toml.load(fp)["scie"] - return cls( - pbs_release=pbs_release or scie_config["pbs-release"], - python_version=python_version or scie_config["python-version"], - pex_extras=tuple(scie_config["pex-extras"]), - platforms=tuple(scie_config["platforms"]), - ) - - pbs_release: str - python_version: str - pex_extras: tuple[str, ...] - platforms: tuple[str, ...] - - def create_all_complete_platforms( dest_dir: Path, scie_config: ScieConfig, diff --git a/scripts/lint.py b/scripts/lint.py index a17b0caa0..fa365b4bd 100644 --- a/scripts/lint.py +++ b/scripts/lint.py @@ -26,6 +26,7 @@ def run_autoflake(*args: str) -> None: "--recursive", "build-backend", "docs", + "package", "pex", "scripts", "testing", diff --git a/scripts/typecheck.py b/scripts/typecheck.py index da98a200b..2436ab245 100755 --- a/scripts/typecheck.py +++ b/scripts/typecheck.py @@ -46,7 +46,9 @@ def main() -> None: files=sorted(find_files_to_check(include=["docs"])), subject="sphinx_pex", ) - run_mypy("3.8", files=sorted(find_files_to_check(include=["scripts"])), subject="scripts") + run_mypy( + "3.8", files=sorted(find_files_to_check(include=["package", "scripts"])), subject="scripts" + ) source_and_tests = sorted( find_files_to_check( diff --git a/tests/integration/scie/test_pex_scie.py b/tests/integration/scie/test_pex_scie.py index e9e3bce6f..64258a1ff 100644 --- a/tests/integration/scie/test_pex_scie.py +++ b/tests/integration/scie/test_pex_scie.py @@ -1080,3 +1080,46 @@ def create_python_scie( pex_scie=pex_scie, pex_scie_size=pex_scie_size, ) + + +@skip_if_no_provider +def test_scie_only(tmpdir): + # type: (Any) -> None + + dist_dir = os.path.join(str(tmpdir), "dist") + output_file = os.path.join(dist_dir, "app.pex") + run_pex_command(args=["--scie", "lazy", "-o", output_file]).assert_success() + assert sorted(["app.pex", "app"]) == sorted(os.listdir(dist_dir)) + + shutil.rmtree(dist_dir) + run_pex_command(args=["--scie", "lazy", "--scie-only", "-o", output_file]).assert_success() + assert ["app"] == os.listdir(dist_dir) + + +@skip_if_no_provider +def test_scie_name_style_platform_file_suffix(tmpdir): + # type: (Any) -> None + + dist_dir = os.path.join(str(tmpdir), "dist") + output_file = os.path.join(dist_dir, "app") + run_pex_command( + args=["--scie", "lazy", "--scie-name-style", "platform-file-suffix", "-o", output_file] + ).assert_success() + assert sorted(["app", SciePlatform.CURRENT.qualified_binary_name("app")]) == sorted( + os.listdir(dist_dir) + ) + + +@skip_if_no_provider +def test_scie_name_style_platform_parent_dir(tmpdir): + # type: (Any) -> None + + dist_dir = os.path.join(str(tmpdir), "dist") + output_file = os.path.join(dist_dir, "app") + run_pex_command( + args=["--scie", "lazy", "--scie-name-style", "platform-parent-dir", "-o", output_file] + ).assert_success() + assert sorted(["app", SciePlatform.CURRENT.value]) == sorted(os.listdir(dist_dir)) + assert [SciePlatform.CURRENT.binary_name("app")] == os.listdir( + os.path.join(dist_dir, SciePlatform.CURRENT.value) + ) diff --git a/tests/integration/test_issue_1872.py b/tests/integration/test_issue_1872.py index 3bb85dcba..3b6aa9a78 100644 --- a/tests/integration/test_issue_1872.py +++ b/tests/integration/test_issue_1872.py @@ -5,7 +5,6 @@ import subprocess import sys -from pex.compatibility import PY3 from pex.pep_440 import Version from pex.pep_503 import ProjectName from pex.resolve.locked_resolve import LocalProjectArtifact @@ -13,7 +12,7 @@ from pex.resolve.resolved_requirement import Pin from pex.typing import TYPE_CHECKING from pex.version import __version__ -from testing import PY38, ensure_python_interpreter, make_env +from testing import PY310, ensure_python_interpreter, make_env, run_pex_command if TYPE_CHECKING: from typing import Any @@ -25,12 +24,23 @@ def test_pep_518_venv_pex_env_scrubbing( ): # type: (...) -> None - # N.B.: The package script requires Python 3. - python = sys.executable if PY3 else ensure_python_interpreter(PY38) - - package_script = os.path.join(pex_project_dir, "scripts", "package.py") pex_pex = os.path.join(str(tmpdir), "pex") - subprocess.check_call(args=[python, package_script, "--pex-output-file", pex_pex]) + package_script = os.path.join(pex_project_dir, "scripts", "create-packages.py") + run_pex_command( + args=[ + "toml", + pex_project_dir, + "--", + package_script, + "-v", + "--pex-output-file", + pex_pex, + ], + # The package script requires Python>=3.8. + python=( + sys.executable if sys.version_info[:2] >= (3, 8) else ensure_python_interpreter(PY310) + ), + ).assert_success() lock = os.path.join(str(tmpdir), "lock.json") subprocess.check_call( diff --git a/tests/integration/test_issue_1995.py b/tests/integration/test_issue_1995.py index 6af3aaf69..421c0e138 100644 --- a/tests/integration/test_issue_1995.py +++ b/tests/integration/test_issue_1995.py @@ -8,7 +8,7 @@ import pytest from pex.typing import TYPE_CHECKING -from testing import IS_LINUX, PY38, ensure_python_interpreter, make_env, run_pex_command +from testing import IS_LINUX, PY310, ensure_python_interpreter, make_env, run_pex_command if TYPE_CHECKING: from typing import Any @@ -21,7 +21,7 @@ def test_packaging( ): # type: (...) -> None pex = os.path.join(str(tmpdir), "pex.pex") - package_script = os.path.join(pex_project_dir, "scripts", "package.py") + package_script = os.path.join(pex_project_dir, "scripts", "create-packages.py") run_pex_command( args=[ "toml", @@ -32,8 +32,10 @@ def test_packaging( "--pex-output-file", pex, ], - # The package script requires Python 3. - python=sys.executable if sys.version_info[0] >= 3 else ensure_python_interpreter(PY38), + # The package script requires Python>=3.8. + python=( + sys.executable if sys.version_info[:2] >= (3, 8) else ensure_python_interpreter(PY310) + ), ).assert_success() assert os.path.exists(pex), "Expected {pex} to be created by {package_script}.".format( pex=pex, package_script=package_script diff --git a/tox.ini b/tox.ini index ccae821b0..41572a7ec 100644 --- a/tox.ini +++ b/tox.ini @@ -199,7 +199,7 @@ deps = httpx==0.23.0 commands = tox -e vendor -- --no-update - python scripts/embed_virtualenv.py + python scripts/embed-virtualenv.py git diff --exit-code [testenv:docs] @@ -207,7 +207,7 @@ basepython = python3 deps = -r docs-requirements.txt commands = - python scripts/build_docs.py {posargs} + python scripts/build-docs.py {posargs} [testenv:gen-scie-platform] basepython = python3 @@ -217,7 +217,7 @@ deps = toml==0.10.2 PyGithub==2.4.0 commands = - python scripts/gen_scie_platform.py {posargs} + python scripts/gen-scie-platform.py {posargs} [_package] basepython = python3 @@ -227,6 +227,7 @@ deps = # through either improved or broken isolation + backend-path integration; so we pin low. # See: https://github.com/pypa/pyproject-hooks/pull/165 pyproject-hooks<1.1.0 + toml==0.10.2 [testenv:package] skip_install = true @@ -234,7 +235,7 @@ basepython = {[_package]basepython} deps = {[_package]deps} commands = - python scripts/package.py {posargs} + python scripts/create-packages.py {posargs} [testenv:serve] skip_install = true @@ -242,7 +243,7 @@ basepython = {[_package]basepython} deps = {[_package]deps} commands = - python scripts/package.py --additional-format wheel --local --serve {posargs} + python scripts/create-packages.py --additional-format wheel --local --serve {posargs} [testenv:pip] description = Run Pex's vendored pip. @@ -284,4 +285,4 @@ deps = coloredlogs==15.0.1 PyYAML==6.0.1 commands = - python scripts/build_cache_image.py {posargs} + python scripts/build-cache-image.py {posargs}