diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 2040abd9..00000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,156 +0,0 @@ -# Python CircleCI 2.0 configuration file -# -# Check https://circleci.com/docs/2.0/language-python/ for more details -# -version: 2.1 - -jobs: - publish: - docker: - - image: cimg/python:3.9 - parameters: - registry_url: - description: Registry URL to upload the CLI to - type: string - default: https://upload.pypi.org/legacy/ - username: - description: Twine username - type: string - password: - description: Twine password - type: string - steps: - - checkout - - run: pip install --user --upgrade setuptools twine wheel - - run: | - python setup.py sdist bdist_wheel - twine upload --repository-url <> --username <> --password <> --verbose dist/* - -orbs: - python: circleci/python@2.1.1 - cloudsmith_ci: - jobs: - execute: - parameters: - service_name: - description: Name of the command to execute - type: string - command: - description: The command to execute - type: string - no_output_timeout: - description: Number of seconds to let job run without output before timeout - type: integer - default: 600 - is_test_suite: - description: Should the job collect test results and coverage? - type: boolean - default: false - executor: cloudsmith_executor - working_directory: ~/repo - steps: - - checkout - - restore_cache: - keys: - - v1-dependencies-{{ checksum "requirements.txt" }} - - v1-dependencies- - - run: - name: Install dependencies - command: | - python3 -m pip install uv - uv venv .venv --allow-existing - uv pip install -r requirements.txt - . .venv/bin/activate - - save_cache: - paths: - - .venv - key: v1-dependencies-{{ checksum "requirements.txt" }} - - run: - name: Run <> - command: | - . .venv/bin/activate - <> - echo $? > /tmp/run_exit_code - no_output_timeout: <> - - when: - condition: <> - steps: - - store_test_results: - path: ./reports - - store_artifacts: - path: ./reports - - executors: - cloudsmith_executor: - docker: - - image: circleci/python:3.9 - - -workflows: - commit: - jobs: - - cloudsmith_ci/execute: - name: isort - service_name: isort - command: pre-commit run -a isort - - cloudsmith_ci/execute: - name: black - service_name: black - command: pre-commit run -a black - - cloudsmith_ci/execute: - name: flake8 - service_name: flake8 - command: pre-commit run -a flake8 - - cloudsmith_ci/execute: - name: pyupgrade - service_name: pyupgrade - command: pre-commit run -a pyupgrade - - cloudsmith_ci/execute: - name: pylint - service_name: pylint - command: pylint --rcfile=.pylintrc cloudsmith_cli - no_output_timeout: 1200 - - cloudsmith_ci/execute: - name: pytest - service_name: pytest - command: pytest --junitxml ./reports/pytest.xml - is_test_suite: true - - python/test: - name: pytest-python3.10 - version: "3.10" - pkg-manager: pip - pip-dependency-file: requirements.txt - - python/test: - name: pytest-python3.11 - version: "3.11" - pkg-manager: pip - pip-dependency-file: requirements.txt - - python/test: - name: pytest-python3.12 - version: "3.12" - pkg-manager: pip - pip-dependency-file: requirements.txt - - python/test: - name: pytest-python3.13 - version: "3.13" - pkg-manager: pip - pip-dependency-file: requirements.txt - - publish: - filters: - branches: - ignore: /.*/ - tags: - only: /^v.*/ - name: cloudsmith - registry_url: https://python.cloudsmith.io/cloudsmith/cli/ - username: $CLOUDSMITH_USERNAME - password: $CLOUDSMITH_PASSWORD - - publish: - filters: - branches: - ignore: /.*/ - tags: - only: /^v.*/ - name: pypi - username: $PYPI_USERNAME - password: $PYPI_PASSWORD diff --git a/.github/.platforms/README.md b/.github/.platforms/README.md new file mode 100644 index 00000000..7047d2cf --- /dev/null +++ b/.github/.platforms/README.md @@ -0,0 +1,47 @@ +# PEX Platform Files + +Platform JSON files for building universal Python zipapps that work across operating systems, architectures, and Python versions. + +## Supported Platforms + +- Linux x86_64 (glibc) - Debian, Ubuntu, RHEL, CentOS +- Linux ARM64 (glibc) - ARM-based Linux servers +- Linux x86_64 (musl) - Alpine Linux +- Linux ARM64 (musl) - Alpine Linux ARM +- macOS ARM64 - Apple Silicon +- Windows x86_64 - Windows 10/11 + +**Python versions:** 3.10, 3.11, 3.12, 3.13, 3.14 + +## When to Regenerate + +Regenerate platform files when: +- Adding support for new Python versions +- Dependencies change (especially packages with C extensions) +- Build failures on specific platforms + +**Note:** The script skips existing valid files. When dependencies change, delete the existing platform files first: +```bash +rm .github/.platforms/*.json +.github/.platforms/generate_platforms.py +``` + +## How to Regenerate + +**Requirements:** +- Docker +- Internet connection +- Python 3.10-3.14 (for macOS platform files only) + +**Run:** +```bash +.github/.platforms/generate_platforms.py +``` + +The script skips existing files and retries failures automatically. + +**Force regeneration:** +```bash +rm .github/.platforms/*.json +.github/.platforms/generate_platforms.py +``` diff --git a/.github/.platforms/generate_platforms.py b/.github/.platforms/generate_platforms.py new file mode 100755 index 00000000..98034044 --- /dev/null +++ b/.github/.platforms/generate_platforms.py @@ -0,0 +1,313 @@ +#!/usr/bin/env python3 +"""Generate PEX platform files for multi-platform Python zipapp builds.""" + +from __future__ import annotations + +import json +import shutil +import subprocess +import sys +import tempfile +import time +from dataclasses import dataclass +from pathlib import Path +from typing import Callable, TypeVar + +# Configuration +PYTHON_VERSIONS = ("3.10", "3.11", "3.12", "3.13", "3.14") +MAX_RETRIES = 3 +RETRY_DELAY_SECONDS = 5 + +# Stable ABI (abi3) wheels built for older Python work on newer versions. +# Most packages build abi3 wheels against 3.7-3.10 for maximum compatibility. +ABI3_PREFIXES = ("cp310-abi3-", "cp39-abi3-", "cp38-abi3-", "cp37-abi3-") + +T = TypeVar("T") + + +@dataclass(frozen=True) +class Platform: + """Platform configuration for generating PEX platform files.""" + + name: str + docker_platform: str + docker_image: str + use_alpine_shell: bool = False + + @property + def shell(self) -> list[str]: + return ["sh", "-c"] if self.use_alpine_shell else ["bash", "-c"] + + +def get_platforms(py_version: str) -> list[Platform]: + """Return platform configurations for a Python version.""" + return [ + Platform("linux-x86_64", "linux/amd64", f"python:{py_version}-slim"), + Platform("linux-aarch64", "linux/arm64", f"python:{py_version}-slim"), + Platform( + "linux-x86_64-musl", + "linux/amd64", + f"python:{py_version}-alpine", + use_alpine_shell=True, + ), + Platform( + "linux-aarch64-musl", + "linux/arm64", + f"python:{py_version}-alpine", + use_alpine_shell=True, + ), + ] + + +def retry( + max_attempts: int = MAX_RETRIES, +) -> Callable[[Callable[[], T]], Callable[[], T]]: + """Decorator for retrying functions with exponential backoff.""" + + def decorator(func: Callable[[], T]) -> Callable[[], T]: + def wrapper() -> T: + last_error: Exception | None = None + for attempt in range(1, max_attempts + 1): + try: + return func() + except subprocess.CalledProcessError as e: + last_error = e + if attempt < max_attempts: + delay = RETRY_DELAY_SECONDS * attempt + print( + f" ⚠ Attempt {attempt} failed, retrying in {delay}s...", + file=sys.stderr, + ) + time.sleep(delay) + if last_error is not None: + raise last_error + raise RuntimeError( + f"Retry failed without capturing a CalledProcessError. " + f"max_attempts={max_attempts!r}" + ) + + return wrapper + + return decorator + + +def is_valid(file_path: Path) -> bool: + """Check if platform file exists with required JSON structure.""" + if not file_path.exists(): + return False + try: + data = json.loads(file_path.read_text()) + return "marker_environment" in data and "compatible_tags" in data + except (json.JSONDecodeError, OSError): + return False + + +def filter_tags(tags: list[str], py_minor: str) -> list[str]: + """Keep only necessary wheel tags for the target Python version.""" + return [ + tag + for tag in tags + if tag.startswith((f"cp{py_minor}-", f"py{py_minor}-", "py3-none-")) + or tag.startswith(ABI3_PREFIXES) + ] + + +def write_platform_json(path: Path, data: dict, py_minor: str) -> None: + """Write platform JSON with filtered tags and consistent key order.""" + if "compatible_tags" in data: + data["compatible_tags"] = filter_tags(data["compatible_tags"], py_minor) + + output = { + k: data[k] for k in ("marker_environment", "compatible_tags") if k in data + } + path.write_text(json.dumps(output, indent=2) + "\n") + + +def run_docker(platform: Platform, command: str) -> str: + """Execute command in Docker container and return stdout.""" + result = subprocess.run( + [ + "docker", + "run", + "--rm", + "--platform", + platform.docker_platform, + platform.docker_image, + *platform.shell, + command, + ], + capture_output=True, + text=True, + check=True, + ) + return result.stdout + + +def generate_docker( + platform: Platform, py_version: str, py_minor: str, output_dir: Path +) -> bool: + """Generate platform file using Docker.""" + output_file = output_dir / f"{platform.name}-py{py_minor}.json" + print(f" - {platform.name}-py{py_minor}.json") + + if is_valid(output_file): + print(" ✓ Already exists") + return True + + try: + + @retry() + def fetch() -> str: + return run_docker( + platform, + "pip install -q pex && pex3 interpreter inspect --markers --tags --indent 4", + ) + + output_file.write_text(fetch()) + write_platform_json(output_file, json.loads(output_file.read_text()), py_minor) + print(" ✓ Generated") + return True + except subprocess.CalledProcessError as e: + output_file.unlink(missing_ok=True) + print(f" ✗ Failed: {e.stderr.strip() if e.stderr else e}", file=sys.stderr) + return False + + +def generate_macos(py_version: str, py_minor: str, output_dir: Path) -> bool: + """Generate macOS platform file using local Python.""" + output_file = output_dir / f"macos-arm64-py{py_minor}.json" + print(f" - macos-arm64-py{py_minor}.json") + + if is_valid(output_file): + print(" ✓ Already exists") + return True + + python_exe = shutil.which(f"python{py_version}") + if not python_exe: + print(f" ⚠ python{py_version} not available") + return False + + with tempfile.TemporaryDirectory() as venv_dir: + venv = Path(venv_dir) + try: + subprocess.run( + [python_exe, "-m", "venv", str(venv)], check=True, capture_output=True + ) + subprocess.run( + [str(venv / "bin/pip"), "install", "-q", "pex"], + check=True, + capture_output=True, + ) + result = subprocess.run( + [ + str(venv / "bin/pex3"), + "interpreter", + "inspect", + "--markers", + "--tags", + "--indent", + "4", + ], + capture_output=True, + text=True, + check=True, + ) + output_file.write_text(result.stdout) + write_platform_json( + output_file, json.loads(output_file.read_text()), py_minor + ) + print(" ✓ Generated") + return True + except subprocess.CalledProcessError as e: + output_file.unlink(missing_ok=True) + print( + f" ✗ Failed: {e.stderr.strip() if e.stderr else e}", file=sys.stderr + ) + return False + + +def generate_windows(py_version: str, py_minor: str, output_dir: Path) -> bool: + """Generate Windows platform file from template.""" + output_file = output_dir / f"windows-x86_64-py{py_minor}.json" + print(f" - windows-x86_64-py{py_minor}.json") + + if is_valid(output_file): + print(" ✓ Already exists") + return True + + data = { + "marker_environment": { + "implementation_name": "cpython", + "implementation_version": f"{py_version}.0", + "os_name": "nt", + "platform_machine": "AMD64", + "platform_python_implementation": "CPython", + "platform_release": "", + "platform_system": "Windows", + "platform_version": "", + "python_full_version": f"{py_version}.0", + "python_version": py_version, + "sys_platform": "win32", + }, + "compatible_tags": [ + f"cp{py_minor}-cp{py_minor}-win_amd64", + f"cp{py_minor}-abi3-win_amd64", + f"cp{py_minor}-none-win_amd64", + "cp310-abi3-win_amd64", + "cp39-abi3-win_amd64", + "cp38-abi3-win_amd64", + "cp37-abi3-win_amd64", + f"py{py_minor}-none-win_amd64", + "py3-none-win_amd64", + f"cp{py_minor}-none-any", + f"py{py_minor}-none-any", + "py3-none-any", + ], + } + output_file.write_text(json.dumps(data, indent=2) + "\n") + print(" ✓ Generated") + return True + + +def main() -> int: + """Generate platform files for all Python versions.""" + output_dir = Path(__file__).parent + + print("PEX Platform Generator") + print("=" * 22) + print(f"Python versions: {', '.join(PYTHON_VERSIONS)}\n") + + total, failed = 0, 0 + + for py_version in PYTHON_VERSIONS: + py_minor = py_version.replace(".", "") + print(f"Python {py_version}:") + + for platform in get_platforms(py_version): + total += 1 + if not generate_docker(platform, py_version, py_minor, output_dir): + failed += 1 + + total += 1 + if not generate_macos(py_version, py_minor, output_dir): + failed += 1 + + total += 1 + if not generate_windows(py_version, py_minor, output_dir): + failed += 1 + + print() + + print(f"Summary\n{'=' * 7}") + print(f"Total: {total} | Failed: {failed}") + print( + "✓ All platform files ready" + if failed == 0 + else "⚠ Some files failed (re-run to retry)" + ) + + return 0 if failed == 0 else 1 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/.github/.platforms/linux-aarch64-musl-py310.json b/.github/.platforms/linux-aarch64-musl-py310.json new file mode 100644 index 00000000..60452e5c --- /dev/null +++ b/.github/.platforms/linux-aarch64-musl-py310.json @@ -0,0 +1,52 @@ +{ + "marker_environment": { + "implementation_name": "cpython", + "implementation_version": "3.10.19", + "os_name": "posix", + "platform_machine": "aarch64", + "platform_python_implementation": "CPython", + "platform_release": "6.12.54-linuxkit", + "platform_system": "Linux", + "platform_version": "#1 SMP Tue Nov 4 21:21:47 UTC 2025", + "python_full_version": "3.10.19", + "python_version": "3.10", + "sys_platform": "linux" + }, + "compatible_tags": [ + "cp310-cp310-musllinux_1_2_aarch64", + "cp310-cp310-musllinux_1_1_aarch64", + "cp310-cp310-musllinux_1_0_aarch64", + "cp310-cp310-linux_aarch64", + "cp310-abi3-musllinux_1_2_aarch64", + "cp310-abi3-musllinux_1_1_aarch64", + "cp310-abi3-musllinux_1_0_aarch64", + "cp310-abi3-linux_aarch64", + "cp310-none-musllinux_1_2_aarch64", + "cp310-none-musllinux_1_1_aarch64", + "cp310-none-musllinux_1_0_aarch64", + "cp310-none-linux_aarch64", + "cp39-abi3-musllinux_1_2_aarch64", + "cp39-abi3-musllinux_1_1_aarch64", + "cp39-abi3-musllinux_1_0_aarch64", + "cp39-abi3-linux_aarch64", + "cp38-abi3-musllinux_1_2_aarch64", + "cp38-abi3-musllinux_1_1_aarch64", + "cp38-abi3-musllinux_1_0_aarch64", + "cp38-abi3-linux_aarch64", + "cp37-abi3-musllinux_1_2_aarch64", + "cp37-abi3-musllinux_1_1_aarch64", + "cp37-abi3-musllinux_1_0_aarch64", + "cp37-abi3-linux_aarch64", + "py310-none-musllinux_1_2_aarch64", + "py310-none-musllinux_1_1_aarch64", + "py310-none-musllinux_1_0_aarch64", + "py310-none-linux_aarch64", + "py3-none-musllinux_1_2_aarch64", + "py3-none-musllinux_1_1_aarch64", + "py3-none-musllinux_1_0_aarch64", + "py3-none-linux_aarch64", + "cp310-none-any", + "py310-none-any", + "py3-none-any" + ] +} diff --git a/.github/.platforms/linux-aarch64-musl-py311.json b/.github/.platforms/linux-aarch64-musl-py311.json new file mode 100644 index 00000000..77d15d22 --- /dev/null +++ b/.github/.platforms/linux-aarch64-musl-py311.json @@ -0,0 +1,56 @@ +{ + "marker_environment": { + "implementation_name": "cpython", + "implementation_version": "3.11.14", + "os_name": "posix", + "platform_machine": "aarch64", + "platform_python_implementation": "CPython", + "platform_release": "6.12.54-linuxkit", + "platform_system": "Linux", + "platform_version": "#1 SMP Tue Nov 4 21:21:47 UTC 2025", + "python_full_version": "3.11.14", + "python_version": "3.11", + "sys_platform": "linux" + }, + "compatible_tags": [ + "cp311-cp311-musllinux_1_2_aarch64", + "cp311-cp311-musllinux_1_1_aarch64", + "cp311-cp311-musllinux_1_0_aarch64", + "cp311-cp311-linux_aarch64", + "cp311-abi3-musllinux_1_2_aarch64", + "cp311-abi3-musllinux_1_1_aarch64", + "cp311-abi3-musllinux_1_0_aarch64", + "cp311-abi3-linux_aarch64", + "cp311-none-musllinux_1_2_aarch64", + "cp311-none-musllinux_1_1_aarch64", + "cp311-none-musllinux_1_0_aarch64", + "cp311-none-linux_aarch64", + "cp310-abi3-musllinux_1_2_aarch64", + "cp310-abi3-musllinux_1_1_aarch64", + "cp310-abi3-musllinux_1_0_aarch64", + "cp310-abi3-linux_aarch64", + "cp39-abi3-musllinux_1_2_aarch64", + "cp39-abi3-musllinux_1_1_aarch64", + "cp39-abi3-musllinux_1_0_aarch64", + "cp39-abi3-linux_aarch64", + "cp38-abi3-musllinux_1_2_aarch64", + "cp38-abi3-musllinux_1_1_aarch64", + "cp38-abi3-musllinux_1_0_aarch64", + "cp38-abi3-linux_aarch64", + "cp37-abi3-musllinux_1_2_aarch64", + "cp37-abi3-musllinux_1_1_aarch64", + "cp37-abi3-musllinux_1_0_aarch64", + "cp37-abi3-linux_aarch64", + "py311-none-musllinux_1_2_aarch64", + "py311-none-musllinux_1_1_aarch64", + "py311-none-musllinux_1_0_aarch64", + "py311-none-linux_aarch64", + "py3-none-musllinux_1_2_aarch64", + "py3-none-musllinux_1_1_aarch64", + "py3-none-musllinux_1_0_aarch64", + "py3-none-linux_aarch64", + "cp311-none-any", + "py311-none-any", + "py3-none-any" + ] +} diff --git a/.github/.platforms/linux-aarch64-musl-py312.json b/.github/.platforms/linux-aarch64-musl-py312.json new file mode 100644 index 00000000..2b18d79e --- /dev/null +++ b/.github/.platforms/linux-aarch64-musl-py312.json @@ -0,0 +1,56 @@ +{ + "marker_environment": { + "implementation_name": "cpython", + "implementation_version": "3.12.12", + "os_name": "posix", + "platform_machine": "aarch64", + "platform_python_implementation": "CPython", + "platform_release": "6.12.54-linuxkit", + "platform_system": "Linux", + "platform_version": "#1 SMP Tue Nov 4 21:21:47 UTC 2025", + "python_full_version": "3.12.12", + "python_version": "3.12", + "sys_platform": "linux" + }, + "compatible_tags": [ + "cp312-cp312-musllinux_1_2_aarch64", + "cp312-cp312-musllinux_1_1_aarch64", + "cp312-cp312-musllinux_1_0_aarch64", + "cp312-cp312-linux_aarch64", + "cp312-abi3-musllinux_1_2_aarch64", + "cp312-abi3-musllinux_1_1_aarch64", + "cp312-abi3-musllinux_1_0_aarch64", + "cp312-abi3-linux_aarch64", + "cp312-none-musllinux_1_2_aarch64", + "cp312-none-musllinux_1_1_aarch64", + "cp312-none-musllinux_1_0_aarch64", + "cp312-none-linux_aarch64", + "cp310-abi3-musllinux_1_2_aarch64", + "cp310-abi3-musllinux_1_1_aarch64", + "cp310-abi3-musllinux_1_0_aarch64", + "cp310-abi3-linux_aarch64", + "cp39-abi3-musllinux_1_2_aarch64", + "cp39-abi3-musllinux_1_1_aarch64", + "cp39-abi3-musllinux_1_0_aarch64", + "cp39-abi3-linux_aarch64", + "cp38-abi3-musllinux_1_2_aarch64", + "cp38-abi3-musllinux_1_1_aarch64", + "cp38-abi3-musllinux_1_0_aarch64", + "cp38-abi3-linux_aarch64", + "cp37-abi3-musllinux_1_2_aarch64", + "cp37-abi3-musllinux_1_1_aarch64", + "cp37-abi3-musllinux_1_0_aarch64", + "cp37-abi3-linux_aarch64", + "py312-none-musllinux_1_2_aarch64", + "py312-none-musllinux_1_1_aarch64", + "py312-none-musllinux_1_0_aarch64", + "py312-none-linux_aarch64", + "py3-none-musllinux_1_2_aarch64", + "py3-none-musllinux_1_1_aarch64", + "py3-none-musllinux_1_0_aarch64", + "py3-none-linux_aarch64", + "cp312-none-any", + "py312-none-any", + "py3-none-any" + ] +} diff --git a/.github/.platforms/linux-aarch64-musl-py313.json b/.github/.platforms/linux-aarch64-musl-py313.json new file mode 100644 index 00000000..bf970ab4 --- /dev/null +++ b/.github/.platforms/linux-aarch64-musl-py313.json @@ -0,0 +1,56 @@ +{ + "marker_environment": { + "implementation_name": "cpython", + "implementation_version": "3.13.11", + "os_name": "posix", + "platform_machine": "aarch64", + "platform_python_implementation": "CPython", + "platform_release": "6.12.54-linuxkit", + "platform_system": "Linux", + "platform_version": "#1 SMP Tue Nov 4 21:21:47 UTC 2025", + "python_full_version": "3.13.11", + "python_version": "3.13", + "sys_platform": "linux" + }, + "compatible_tags": [ + "cp313-cp313-musllinux_1_2_aarch64", + "cp313-cp313-musllinux_1_1_aarch64", + "cp313-cp313-musllinux_1_0_aarch64", + "cp313-cp313-linux_aarch64", + "cp313-abi3-musllinux_1_2_aarch64", + "cp313-abi3-musllinux_1_1_aarch64", + "cp313-abi3-musllinux_1_0_aarch64", + "cp313-abi3-linux_aarch64", + "cp313-none-musllinux_1_2_aarch64", + "cp313-none-musllinux_1_1_aarch64", + "cp313-none-musllinux_1_0_aarch64", + "cp313-none-linux_aarch64", + "cp310-abi3-musllinux_1_2_aarch64", + "cp310-abi3-musllinux_1_1_aarch64", + "cp310-abi3-musllinux_1_0_aarch64", + "cp310-abi3-linux_aarch64", + "cp39-abi3-musllinux_1_2_aarch64", + "cp39-abi3-musllinux_1_1_aarch64", + "cp39-abi3-musllinux_1_0_aarch64", + "cp39-abi3-linux_aarch64", + "cp38-abi3-musllinux_1_2_aarch64", + "cp38-abi3-musllinux_1_1_aarch64", + "cp38-abi3-musllinux_1_0_aarch64", + "cp38-abi3-linux_aarch64", + "cp37-abi3-musllinux_1_2_aarch64", + "cp37-abi3-musllinux_1_1_aarch64", + "cp37-abi3-musllinux_1_0_aarch64", + "cp37-abi3-linux_aarch64", + "py313-none-musllinux_1_2_aarch64", + "py313-none-musllinux_1_1_aarch64", + "py313-none-musllinux_1_0_aarch64", + "py313-none-linux_aarch64", + "py3-none-musllinux_1_2_aarch64", + "py3-none-musllinux_1_1_aarch64", + "py3-none-musllinux_1_0_aarch64", + "py3-none-linux_aarch64", + "cp313-none-any", + "py313-none-any", + "py3-none-any" + ] +} diff --git a/.github/.platforms/linux-aarch64-musl-py314.json b/.github/.platforms/linux-aarch64-musl-py314.json new file mode 100644 index 00000000..f7ec2c9b --- /dev/null +++ b/.github/.platforms/linux-aarch64-musl-py314.json @@ -0,0 +1,56 @@ +{ + "marker_environment": { + "implementation_name": "cpython", + "implementation_version": "3.14.2", + "os_name": "posix", + "platform_machine": "aarch64", + "platform_python_implementation": "CPython", + "platform_release": "6.12.54-linuxkit", + "platform_system": "Linux", + "platform_version": "#1 SMP Tue Nov 4 21:21:47 UTC 2025", + "python_full_version": "3.14.2", + "python_version": "3.14", + "sys_platform": "linux" + }, + "compatible_tags": [ + "cp314-cp314-musllinux_1_2_aarch64", + "cp314-cp314-musllinux_1_1_aarch64", + "cp314-cp314-musllinux_1_0_aarch64", + "cp314-cp314-linux_aarch64", + "cp314-abi3-musllinux_1_2_aarch64", + "cp314-abi3-musllinux_1_1_aarch64", + "cp314-abi3-musllinux_1_0_aarch64", + "cp314-abi3-linux_aarch64", + "cp314-none-musllinux_1_2_aarch64", + "cp314-none-musllinux_1_1_aarch64", + "cp314-none-musllinux_1_0_aarch64", + "cp314-none-linux_aarch64", + "cp310-abi3-musllinux_1_2_aarch64", + "cp310-abi3-musllinux_1_1_aarch64", + "cp310-abi3-musllinux_1_0_aarch64", + "cp310-abi3-linux_aarch64", + "cp39-abi3-musllinux_1_2_aarch64", + "cp39-abi3-musllinux_1_1_aarch64", + "cp39-abi3-musllinux_1_0_aarch64", + "cp39-abi3-linux_aarch64", + "cp38-abi3-musllinux_1_2_aarch64", + "cp38-abi3-musllinux_1_1_aarch64", + "cp38-abi3-musllinux_1_0_aarch64", + "cp38-abi3-linux_aarch64", + "cp37-abi3-musllinux_1_2_aarch64", + "cp37-abi3-musllinux_1_1_aarch64", + "cp37-abi3-musllinux_1_0_aarch64", + "cp37-abi3-linux_aarch64", + "py314-none-musllinux_1_2_aarch64", + "py314-none-musllinux_1_1_aarch64", + "py314-none-musllinux_1_0_aarch64", + "py314-none-linux_aarch64", + "py3-none-musllinux_1_2_aarch64", + "py3-none-musllinux_1_1_aarch64", + "py3-none-musllinux_1_0_aarch64", + "py3-none-linux_aarch64", + "cp314-none-any", + "py314-none-any", + "py3-none-any" + ] +} diff --git a/.github/.platforms/linux-aarch64-py310.json b/.github/.platforms/linux-aarch64-py310.json new file mode 100644 index 00000000..17b8222e --- /dev/null +++ b/.github/.platforms/linux-aarch64-py310.json @@ -0,0 +1,236 @@ +{ + "marker_environment": { + "implementation_name": "cpython", + "implementation_version": "3.10.19", + "os_name": "posix", + "platform_machine": "aarch64", + "platform_python_implementation": "CPython", + "platform_release": "6.12.54-linuxkit", + "platform_system": "Linux", + "platform_version": "#1 SMP Tue Nov 4 21:21:47 UTC 2025", + "python_full_version": "3.10.19", + "python_version": "3.10", + "sys_platform": "linux" + }, + "compatible_tags": [ + "cp310-cp310-manylinux_2_41_aarch64", + "cp310-cp310-manylinux_2_40_aarch64", + "cp310-cp310-manylinux_2_39_aarch64", + "cp310-cp310-manylinux_2_38_aarch64", + "cp310-cp310-manylinux_2_37_aarch64", + "cp310-cp310-manylinux_2_36_aarch64", + "cp310-cp310-manylinux_2_35_aarch64", + "cp310-cp310-manylinux_2_34_aarch64", + "cp310-cp310-manylinux_2_33_aarch64", + "cp310-cp310-manylinux_2_32_aarch64", + "cp310-cp310-manylinux_2_31_aarch64", + "cp310-cp310-manylinux_2_30_aarch64", + "cp310-cp310-manylinux_2_29_aarch64", + "cp310-cp310-manylinux_2_28_aarch64", + "cp310-cp310-manylinux_2_27_aarch64", + "cp310-cp310-manylinux_2_26_aarch64", + "cp310-cp310-manylinux_2_25_aarch64", + "cp310-cp310-manylinux_2_24_aarch64", + "cp310-cp310-manylinux_2_23_aarch64", + "cp310-cp310-manylinux_2_22_aarch64", + "cp310-cp310-manylinux_2_21_aarch64", + "cp310-cp310-manylinux_2_20_aarch64", + "cp310-cp310-manylinux_2_19_aarch64", + "cp310-cp310-manylinux_2_18_aarch64", + "cp310-cp310-manylinux_2_17_aarch64", + "cp310-cp310-manylinux2014_aarch64", + "cp310-cp310-linux_aarch64", + "cp310-abi3-manylinux_2_41_aarch64", + "cp310-abi3-manylinux_2_40_aarch64", + "cp310-abi3-manylinux_2_39_aarch64", + "cp310-abi3-manylinux_2_38_aarch64", + "cp310-abi3-manylinux_2_37_aarch64", + "cp310-abi3-manylinux_2_36_aarch64", + "cp310-abi3-manylinux_2_35_aarch64", + "cp310-abi3-manylinux_2_34_aarch64", + "cp310-abi3-manylinux_2_33_aarch64", + "cp310-abi3-manylinux_2_32_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", + "cp310-none-manylinux_2_41_aarch64", + "cp310-none-manylinux_2_40_aarch64", + "cp310-none-manylinux_2_39_aarch64", + "cp310-none-manylinux_2_38_aarch64", + "cp310-none-manylinux_2_37_aarch64", + "cp310-none-manylinux_2_36_aarch64", + "cp310-none-manylinux_2_35_aarch64", + "cp310-none-manylinux_2_34_aarch64", + "cp310-none-manylinux_2_33_aarch64", + "cp310-none-manylinux_2_32_aarch64", + "cp310-none-manylinux_2_31_aarch64", + "cp310-none-manylinux_2_30_aarch64", + "cp310-none-manylinux_2_29_aarch64", + "cp310-none-manylinux_2_28_aarch64", + "cp310-none-manylinux_2_27_aarch64", + "cp310-none-manylinux_2_26_aarch64", + "cp310-none-manylinux_2_25_aarch64", + "cp310-none-manylinux_2_24_aarch64", + "cp310-none-manylinux_2_23_aarch64", + "cp310-none-manylinux_2_22_aarch64", + "cp310-none-manylinux_2_21_aarch64", + "cp310-none-manylinux_2_20_aarch64", + "cp310-none-manylinux_2_19_aarch64", + "cp310-none-manylinux_2_18_aarch64", + "cp310-none-manylinux_2_17_aarch64", + "cp310-none-manylinux2014_aarch64", + "cp310-none-linux_aarch64", + "cp39-abi3-manylinux_2_41_aarch64", + "cp39-abi3-manylinux_2_40_aarch64", + "cp39-abi3-manylinux_2_39_aarch64", + "cp39-abi3-manylinux_2_38_aarch64", + "cp39-abi3-manylinux_2_37_aarch64", + "cp39-abi3-manylinux_2_36_aarch64", + "cp39-abi3-manylinux_2_35_aarch64", + "cp39-abi3-manylinux_2_34_aarch64", + "cp39-abi3-manylinux_2_33_aarch64", + "cp39-abi3-manylinux_2_32_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_41_aarch64", + "cp38-abi3-manylinux_2_40_aarch64", + "cp38-abi3-manylinux_2_39_aarch64", + "cp38-abi3-manylinux_2_38_aarch64", + "cp38-abi3-manylinux_2_37_aarch64", + "cp38-abi3-manylinux_2_36_aarch64", + "cp38-abi3-manylinux_2_35_aarch64", + "cp38-abi3-manylinux_2_34_aarch64", + "cp38-abi3-manylinux_2_33_aarch64", + "cp38-abi3-manylinux_2_32_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_41_aarch64", + "cp37-abi3-manylinux_2_40_aarch64", + "cp37-abi3-manylinux_2_39_aarch64", + "cp37-abi3-manylinux_2_38_aarch64", + "cp37-abi3-manylinux_2_37_aarch64", + "cp37-abi3-manylinux_2_36_aarch64", + "cp37-abi3-manylinux_2_35_aarch64", + "cp37-abi3-manylinux_2_34_aarch64", + "cp37-abi3-manylinux_2_33_aarch64", + "cp37-abi3-manylinux_2_32_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", + "py310-none-manylinux_2_41_aarch64", + "py310-none-manylinux_2_40_aarch64", + "py310-none-manylinux_2_39_aarch64", + "py310-none-manylinux_2_38_aarch64", + "py310-none-manylinux_2_37_aarch64", + "py310-none-manylinux_2_36_aarch64", + "py310-none-manylinux_2_35_aarch64", + "py310-none-manylinux_2_34_aarch64", + "py310-none-manylinux_2_33_aarch64", + "py310-none-manylinux_2_32_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", + "py3-none-manylinux_2_41_aarch64", + "py3-none-manylinux_2_40_aarch64", + "py3-none-manylinux_2_39_aarch64", + "py3-none-manylinux_2_38_aarch64", + "py3-none-manylinux_2_37_aarch64", + "py3-none-manylinux_2_36_aarch64", + "py3-none-manylinux_2_35_aarch64", + "py3-none-manylinux_2_34_aarch64", + "py3-none-manylinux_2_33_aarch64", + "py3-none-manylinux_2_32_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", + "cp310-none-any", + "py310-none-any", + "py3-none-any" + ] +} diff --git a/.github/.platforms/linux-aarch64-py311.json b/.github/.platforms/linux-aarch64-py311.json new file mode 100644 index 00000000..2fd4308b --- /dev/null +++ b/.github/.platforms/linux-aarch64-py311.json @@ -0,0 +1,263 @@ +{ + "marker_environment": { + "implementation_name": "cpython", + "implementation_version": "3.11.14", + "os_name": "posix", + "platform_machine": "aarch64", + "platform_python_implementation": "CPython", + "platform_release": "6.12.54-linuxkit", + "platform_system": "Linux", + "platform_version": "#1 SMP Tue Nov 4 21:21:47 UTC 2025", + "python_full_version": "3.11.14", + "python_version": "3.11", + "sys_platform": "linux" + }, + "compatible_tags": [ + "cp311-cp311-manylinux_2_41_aarch64", + "cp311-cp311-manylinux_2_40_aarch64", + "cp311-cp311-manylinux_2_39_aarch64", + "cp311-cp311-manylinux_2_38_aarch64", + "cp311-cp311-manylinux_2_37_aarch64", + "cp311-cp311-manylinux_2_36_aarch64", + "cp311-cp311-manylinux_2_35_aarch64", + "cp311-cp311-manylinux_2_34_aarch64", + "cp311-cp311-manylinux_2_33_aarch64", + "cp311-cp311-manylinux_2_32_aarch64", + "cp311-cp311-manylinux_2_31_aarch64", + "cp311-cp311-manylinux_2_30_aarch64", + "cp311-cp311-manylinux_2_29_aarch64", + "cp311-cp311-manylinux_2_28_aarch64", + "cp311-cp311-manylinux_2_27_aarch64", + "cp311-cp311-manylinux_2_26_aarch64", + "cp311-cp311-manylinux_2_25_aarch64", + "cp311-cp311-manylinux_2_24_aarch64", + "cp311-cp311-manylinux_2_23_aarch64", + "cp311-cp311-manylinux_2_22_aarch64", + "cp311-cp311-manylinux_2_21_aarch64", + "cp311-cp311-manylinux_2_20_aarch64", + "cp311-cp311-manylinux_2_19_aarch64", + "cp311-cp311-manylinux_2_18_aarch64", + "cp311-cp311-manylinux_2_17_aarch64", + "cp311-cp311-manylinux2014_aarch64", + "cp311-cp311-linux_aarch64", + "cp311-abi3-manylinux_2_41_aarch64", + "cp311-abi3-manylinux_2_40_aarch64", + "cp311-abi3-manylinux_2_39_aarch64", + "cp311-abi3-manylinux_2_38_aarch64", + "cp311-abi3-manylinux_2_37_aarch64", + "cp311-abi3-manylinux_2_36_aarch64", + "cp311-abi3-manylinux_2_35_aarch64", + "cp311-abi3-manylinux_2_34_aarch64", + "cp311-abi3-manylinux_2_33_aarch64", + "cp311-abi3-manylinux_2_32_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", + "cp311-none-manylinux_2_41_aarch64", + "cp311-none-manylinux_2_40_aarch64", + "cp311-none-manylinux_2_39_aarch64", + "cp311-none-manylinux_2_38_aarch64", + "cp311-none-manylinux_2_37_aarch64", + "cp311-none-manylinux_2_36_aarch64", + "cp311-none-manylinux_2_35_aarch64", + "cp311-none-manylinux_2_34_aarch64", + "cp311-none-manylinux_2_33_aarch64", + "cp311-none-manylinux_2_32_aarch64", + "cp311-none-manylinux_2_31_aarch64", + "cp311-none-manylinux_2_30_aarch64", + "cp311-none-manylinux_2_29_aarch64", + "cp311-none-manylinux_2_28_aarch64", + "cp311-none-manylinux_2_27_aarch64", + "cp311-none-manylinux_2_26_aarch64", + "cp311-none-manylinux_2_25_aarch64", + "cp311-none-manylinux_2_24_aarch64", + "cp311-none-manylinux_2_23_aarch64", + "cp311-none-manylinux_2_22_aarch64", + "cp311-none-manylinux_2_21_aarch64", + "cp311-none-manylinux_2_20_aarch64", + "cp311-none-manylinux_2_19_aarch64", + "cp311-none-manylinux_2_18_aarch64", + "cp311-none-manylinux_2_17_aarch64", + "cp311-none-manylinux2014_aarch64", + "cp311-none-linux_aarch64", + "cp310-abi3-manylinux_2_41_aarch64", + "cp310-abi3-manylinux_2_40_aarch64", + "cp310-abi3-manylinux_2_39_aarch64", + "cp310-abi3-manylinux_2_38_aarch64", + "cp310-abi3-manylinux_2_37_aarch64", + "cp310-abi3-manylinux_2_36_aarch64", + "cp310-abi3-manylinux_2_35_aarch64", + "cp310-abi3-manylinux_2_34_aarch64", + "cp310-abi3-manylinux_2_33_aarch64", + "cp310-abi3-manylinux_2_32_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_41_aarch64", + "cp39-abi3-manylinux_2_40_aarch64", + "cp39-abi3-manylinux_2_39_aarch64", + "cp39-abi3-manylinux_2_38_aarch64", + "cp39-abi3-manylinux_2_37_aarch64", + "cp39-abi3-manylinux_2_36_aarch64", + "cp39-abi3-manylinux_2_35_aarch64", + "cp39-abi3-manylinux_2_34_aarch64", + "cp39-abi3-manylinux_2_33_aarch64", + "cp39-abi3-manylinux_2_32_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_41_aarch64", + "cp38-abi3-manylinux_2_40_aarch64", + "cp38-abi3-manylinux_2_39_aarch64", + "cp38-abi3-manylinux_2_38_aarch64", + "cp38-abi3-manylinux_2_37_aarch64", + "cp38-abi3-manylinux_2_36_aarch64", + "cp38-abi3-manylinux_2_35_aarch64", + "cp38-abi3-manylinux_2_34_aarch64", + "cp38-abi3-manylinux_2_33_aarch64", + "cp38-abi3-manylinux_2_32_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_41_aarch64", + "cp37-abi3-manylinux_2_40_aarch64", + "cp37-abi3-manylinux_2_39_aarch64", + "cp37-abi3-manylinux_2_38_aarch64", + "cp37-abi3-manylinux_2_37_aarch64", + "cp37-abi3-manylinux_2_36_aarch64", + "cp37-abi3-manylinux_2_35_aarch64", + "cp37-abi3-manylinux_2_34_aarch64", + "cp37-abi3-manylinux_2_33_aarch64", + "cp37-abi3-manylinux_2_32_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", + "py311-none-manylinux_2_41_aarch64", + "py311-none-manylinux_2_40_aarch64", + "py311-none-manylinux_2_39_aarch64", + "py311-none-manylinux_2_38_aarch64", + "py311-none-manylinux_2_37_aarch64", + "py311-none-manylinux_2_36_aarch64", + "py311-none-manylinux_2_35_aarch64", + "py311-none-manylinux_2_34_aarch64", + "py311-none-manylinux_2_33_aarch64", + "py311-none-manylinux_2_32_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", + "py3-none-manylinux_2_41_aarch64", + "py3-none-manylinux_2_40_aarch64", + "py3-none-manylinux_2_39_aarch64", + "py3-none-manylinux_2_38_aarch64", + "py3-none-manylinux_2_37_aarch64", + "py3-none-manylinux_2_36_aarch64", + "py3-none-manylinux_2_35_aarch64", + "py3-none-manylinux_2_34_aarch64", + "py3-none-manylinux_2_33_aarch64", + "py3-none-manylinux_2_32_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", + "cp311-none-any", + "py311-none-any", + "py3-none-any" + ] +} diff --git a/.github/.platforms/linux-aarch64-py312.json b/.github/.platforms/linux-aarch64-py312.json new file mode 100644 index 00000000..16f5c367 --- /dev/null +++ b/.github/.platforms/linux-aarch64-py312.json @@ -0,0 +1,263 @@ +{ + "marker_environment": { + "implementation_name": "cpython", + "implementation_version": "3.12.12", + "os_name": "posix", + "platform_machine": "aarch64", + "platform_python_implementation": "CPython", + "platform_release": "6.12.54-linuxkit", + "platform_system": "Linux", + "platform_version": "#1 SMP Tue Nov 4 21:21:47 UTC 2025", + "python_full_version": "3.12.12", + "python_version": "3.12", + "sys_platform": "linux" + }, + "compatible_tags": [ + "cp312-cp312-manylinux_2_41_aarch64", + "cp312-cp312-manylinux_2_40_aarch64", + "cp312-cp312-manylinux_2_39_aarch64", + "cp312-cp312-manylinux_2_38_aarch64", + "cp312-cp312-manylinux_2_37_aarch64", + "cp312-cp312-manylinux_2_36_aarch64", + "cp312-cp312-manylinux_2_35_aarch64", + "cp312-cp312-manylinux_2_34_aarch64", + "cp312-cp312-manylinux_2_33_aarch64", + "cp312-cp312-manylinux_2_32_aarch64", + "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_41_aarch64", + "cp312-abi3-manylinux_2_40_aarch64", + "cp312-abi3-manylinux_2_39_aarch64", + "cp312-abi3-manylinux_2_38_aarch64", + "cp312-abi3-manylinux_2_37_aarch64", + "cp312-abi3-manylinux_2_36_aarch64", + "cp312-abi3-manylinux_2_35_aarch64", + "cp312-abi3-manylinux_2_34_aarch64", + "cp312-abi3-manylinux_2_33_aarch64", + "cp312-abi3-manylinux_2_32_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_41_aarch64", + "cp312-none-manylinux_2_40_aarch64", + "cp312-none-manylinux_2_39_aarch64", + "cp312-none-manylinux_2_38_aarch64", + "cp312-none-manylinux_2_37_aarch64", + "cp312-none-manylinux_2_36_aarch64", + "cp312-none-manylinux_2_35_aarch64", + "cp312-none-manylinux_2_34_aarch64", + "cp312-none-manylinux_2_33_aarch64", + "cp312-none-manylinux_2_32_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", + "cp310-abi3-manylinux_2_41_aarch64", + "cp310-abi3-manylinux_2_40_aarch64", + "cp310-abi3-manylinux_2_39_aarch64", + "cp310-abi3-manylinux_2_38_aarch64", + "cp310-abi3-manylinux_2_37_aarch64", + "cp310-abi3-manylinux_2_36_aarch64", + "cp310-abi3-manylinux_2_35_aarch64", + "cp310-abi3-manylinux_2_34_aarch64", + "cp310-abi3-manylinux_2_33_aarch64", + "cp310-abi3-manylinux_2_32_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_41_aarch64", + "cp39-abi3-manylinux_2_40_aarch64", + "cp39-abi3-manylinux_2_39_aarch64", + "cp39-abi3-manylinux_2_38_aarch64", + "cp39-abi3-manylinux_2_37_aarch64", + "cp39-abi3-manylinux_2_36_aarch64", + "cp39-abi3-manylinux_2_35_aarch64", + "cp39-abi3-manylinux_2_34_aarch64", + "cp39-abi3-manylinux_2_33_aarch64", + "cp39-abi3-manylinux_2_32_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_41_aarch64", + "cp38-abi3-manylinux_2_40_aarch64", + "cp38-abi3-manylinux_2_39_aarch64", + "cp38-abi3-manylinux_2_38_aarch64", + "cp38-abi3-manylinux_2_37_aarch64", + "cp38-abi3-manylinux_2_36_aarch64", + "cp38-abi3-manylinux_2_35_aarch64", + "cp38-abi3-manylinux_2_34_aarch64", + "cp38-abi3-manylinux_2_33_aarch64", + "cp38-abi3-manylinux_2_32_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_41_aarch64", + "cp37-abi3-manylinux_2_40_aarch64", + "cp37-abi3-manylinux_2_39_aarch64", + "cp37-abi3-manylinux_2_38_aarch64", + "cp37-abi3-manylinux_2_37_aarch64", + "cp37-abi3-manylinux_2_36_aarch64", + "cp37-abi3-manylinux_2_35_aarch64", + "cp37-abi3-manylinux_2_34_aarch64", + "cp37-abi3-manylinux_2_33_aarch64", + "cp37-abi3-manylinux_2_32_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", + "py312-none-manylinux_2_41_aarch64", + "py312-none-manylinux_2_40_aarch64", + "py312-none-manylinux_2_39_aarch64", + "py312-none-manylinux_2_38_aarch64", + "py312-none-manylinux_2_37_aarch64", + "py312-none-manylinux_2_36_aarch64", + "py312-none-manylinux_2_35_aarch64", + "py312-none-manylinux_2_34_aarch64", + "py312-none-manylinux_2_33_aarch64", + "py312-none-manylinux_2_32_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_41_aarch64", + "py3-none-manylinux_2_40_aarch64", + "py3-none-manylinux_2_39_aarch64", + "py3-none-manylinux_2_38_aarch64", + "py3-none-manylinux_2_37_aarch64", + "py3-none-manylinux_2_36_aarch64", + "py3-none-manylinux_2_35_aarch64", + "py3-none-manylinux_2_34_aarch64", + "py3-none-manylinux_2_33_aarch64", + "py3-none-manylinux_2_32_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", + "cp312-none-any", + "py312-none-any", + "py3-none-any" + ] +} diff --git a/.github/.platforms/linux-aarch64-py313.json b/.github/.platforms/linux-aarch64-py313.json new file mode 100644 index 00000000..d655ef21 --- /dev/null +++ b/.github/.platforms/linux-aarch64-py313.json @@ -0,0 +1,263 @@ +{ + "marker_environment": { + "implementation_name": "cpython", + "implementation_version": "3.13.11", + "os_name": "posix", + "platform_machine": "aarch64", + "platform_python_implementation": "CPython", + "platform_release": "6.12.54-linuxkit", + "platform_system": "Linux", + "platform_version": "#1 SMP Tue Nov 4 21:21:47 UTC 2025", + "python_full_version": "3.13.11", + "python_version": "3.13", + "sys_platform": "linux" + }, + "compatible_tags": [ + "cp313-cp313-manylinux_2_41_aarch64", + "cp313-cp313-manylinux_2_40_aarch64", + "cp313-cp313-manylinux_2_39_aarch64", + "cp313-cp313-manylinux_2_38_aarch64", + "cp313-cp313-manylinux_2_37_aarch64", + "cp313-cp313-manylinux_2_36_aarch64", + "cp313-cp313-manylinux_2_35_aarch64", + "cp313-cp313-manylinux_2_34_aarch64", + "cp313-cp313-manylinux_2_33_aarch64", + "cp313-cp313-manylinux_2_32_aarch64", + "cp313-cp313-manylinux_2_31_aarch64", + "cp313-cp313-manylinux_2_30_aarch64", + "cp313-cp313-manylinux_2_29_aarch64", + "cp313-cp313-manylinux_2_28_aarch64", + "cp313-cp313-manylinux_2_27_aarch64", + "cp313-cp313-manylinux_2_26_aarch64", + "cp313-cp313-manylinux_2_25_aarch64", + "cp313-cp313-manylinux_2_24_aarch64", + "cp313-cp313-manylinux_2_23_aarch64", + "cp313-cp313-manylinux_2_22_aarch64", + "cp313-cp313-manylinux_2_21_aarch64", + "cp313-cp313-manylinux_2_20_aarch64", + "cp313-cp313-manylinux_2_19_aarch64", + "cp313-cp313-manylinux_2_18_aarch64", + "cp313-cp313-manylinux_2_17_aarch64", + "cp313-cp313-manylinux2014_aarch64", + "cp313-cp313-linux_aarch64", + "cp313-abi3-manylinux_2_41_aarch64", + "cp313-abi3-manylinux_2_40_aarch64", + "cp313-abi3-manylinux_2_39_aarch64", + "cp313-abi3-manylinux_2_38_aarch64", + "cp313-abi3-manylinux_2_37_aarch64", + "cp313-abi3-manylinux_2_36_aarch64", + "cp313-abi3-manylinux_2_35_aarch64", + "cp313-abi3-manylinux_2_34_aarch64", + "cp313-abi3-manylinux_2_33_aarch64", + "cp313-abi3-manylinux_2_32_aarch64", + "cp313-abi3-manylinux_2_31_aarch64", + "cp313-abi3-manylinux_2_30_aarch64", + "cp313-abi3-manylinux_2_29_aarch64", + "cp313-abi3-manylinux_2_28_aarch64", + "cp313-abi3-manylinux_2_27_aarch64", + "cp313-abi3-manylinux_2_26_aarch64", + "cp313-abi3-manylinux_2_25_aarch64", + "cp313-abi3-manylinux_2_24_aarch64", + "cp313-abi3-manylinux_2_23_aarch64", + "cp313-abi3-manylinux_2_22_aarch64", + "cp313-abi3-manylinux_2_21_aarch64", + "cp313-abi3-manylinux_2_20_aarch64", + "cp313-abi3-manylinux_2_19_aarch64", + "cp313-abi3-manylinux_2_18_aarch64", + "cp313-abi3-manylinux_2_17_aarch64", + "cp313-abi3-manylinux2014_aarch64", + "cp313-abi3-linux_aarch64", + "cp313-none-manylinux_2_41_aarch64", + "cp313-none-manylinux_2_40_aarch64", + "cp313-none-manylinux_2_39_aarch64", + "cp313-none-manylinux_2_38_aarch64", + "cp313-none-manylinux_2_37_aarch64", + "cp313-none-manylinux_2_36_aarch64", + "cp313-none-manylinux_2_35_aarch64", + "cp313-none-manylinux_2_34_aarch64", + "cp313-none-manylinux_2_33_aarch64", + "cp313-none-manylinux_2_32_aarch64", + "cp313-none-manylinux_2_31_aarch64", + "cp313-none-manylinux_2_30_aarch64", + "cp313-none-manylinux_2_29_aarch64", + "cp313-none-manylinux_2_28_aarch64", + "cp313-none-manylinux_2_27_aarch64", + "cp313-none-manylinux_2_26_aarch64", + "cp313-none-manylinux_2_25_aarch64", + "cp313-none-manylinux_2_24_aarch64", + "cp313-none-manylinux_2_23_aarch64", + "cp313-none-manylinux_2_22_aarch64", + "cp313-none-manylinux_2_21_aarch64", + "cp313-none-manylinux_2_20_aarch64", + "cp313-none-manylinux_2_19_aarch64", + "cp313-none-manylinux_2_18_aarch64", + "cp313-none-manylinux_2_17_aarch64", + "cp313-none-manylinux2014_aarch64", + "cp313-none-linux_aarch64", + "cp310-abi3-manylinux_2_41_aarch64", + "cp310-abi3-manylinux_2_40_aarch64", + "cp310-abi3-manylinux_2_39_aarch64", + "cp310-abi3-manylinux_2_38_aarch64", + "cp310-abi3-manylinux_2_37_aarch64", + "cp310-abi3-manylinux_2_36_aarch64", + "cp310-abi3-manylinux_2_35_aarch64", + "cp310-abi3-manylinux_2_34_aarch64", + "cp310-abi3-manylinux_2_33_aarch64", + "cp310-abi3-manylinux_2_32_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_41_aarch64", + "cp39-abi3-manylinux_2_40_aarch64", + "cp39-abi3-manylinux_2_39_aarch64", + "cp39-abi3-manylinux_2_38_aarch64", + "cp39-abi3-manylinux_2_37_aarch64", + "cp39-abi3-manylinux_2_36_aarch64", + "cp39-abi3-manylinux_2_35_aarch64", + "cp39-abi3-manylinux_2_34_aarch64", + "cp39-abi3-manylinux_2_33_aarch64", + "cp39-abi3-manylinux_2_32_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_41_aarch64", + "cp38-abi3-manylinux_2_40_aarch64", + "cp38-abi3-manylinux_2_39_aarch64", + "cp38-abi3-manylinux_2_38_aarch64", + "cp38-abi3-manylinux_2_37_aarch64", + "cp38-abi3-manylinux_2_36_aarch64", + "cp38-abi3-manylinux_2_35_aarch64", + "cp38-abi3-manylinux_2_34_aarch64", + "cp38-abi3-manylinux_2_33_aarch64", + "cp38-abi3-manylinux_2_32_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_41_aarch64", + "cp37-abi3-manylinux_2_40_aarch64", + "cp37-abi3-manylinux_2_39_aarch64", + "cp37-abi3-manylinux_2_38_aarch64", + "cp37-abi3-manylinux_2_37_aarch64", + "cp37-abi3-manylinux_2_36_aarch64", + "cp37-abi3-manylinux_2_35_aarch64", + "cp37-abi3-manylinux_2_34_aarch64", + "cp37-abi3-manylinux_2_33_aarch64", + "cp37-abi3-manylinux_2_32_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", + "py313-none-manylinux_2_41_aarch64", + "py313-none-manylinux_2_40_aarch64", + "py313-none-manylinux_2_39_aarch64", + "py313-none-manylinux_2_38_aarch64", + "py313-none-manylinux_2_37_aarch64", + "py313-none-manylinux_2_36_aarch64", + "py313-none-manylinux_2_35_aarch64", + "py313-none-manylinux_2_34_aarch64", + "py313-none-manylinux_2_33_aarch64", + "py313-none-manylinux_2_32_aarch64", + "py313-none-manylinux_2_31_aarch64", + "py313-none-manylinux_2_30_aarch64", + "py313-none-manylinux_2_29_aarch64", + "py313-none-manylinux_2_28_aarch64", + "py313-none-manylinux_2_27_aarch64", + "py313-none-manylinux_2_26_aarch64", + "py313-none-manylinux_2_25_aarch64", + "py313-none-manylinux_2_24_aarch64", + "py313-none-manylinux_2_23_aarch64", + "py313-none-manylinux_2_22_aarch64", + "py313-none-manylinux_2_21_aarch64", + "py313-none-manylinux_2_20_aarch64", + "py313-none-manylinux_2_19_aarch64", + "py313-none-manylinux_2_18_aarch64", + "py313-none-manylinux_2_17_aarch64", + "py313-none-manylinux2014_aarch64", + "py313-none-linux_aarch64", + "py3-none-manylinux_2_41_aarch64", + "py3-none-manylinux_2_40_aarch64", + "py3-none-manylinux_2_39_aarch64", + "py3-none-manylinux_2_38_aarch64", + "py3-none-manylinux_2_37_aarch64", + "py3-none-manylinux_2_36_aarch64", + "py3-none-manylinux_2_35_aarch64", + "py3-none-manylinux_2_34_aarch64", + "py3-none-manylinux_2_33_aarch64", + "py3-none-manylinux_2_32_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", + "cp313-none-any", + "py313-none-any", + "py3-none-any" + ] +} diff --git a/.github/.platforms/linux-aarch64-py314.json b/.github/.platforms/linux-aarch64-py314.json new file mode 100644 index 00000000..8e514971 --- /dev/null +++ b/.github/.platforms/linux-aarch64-py314.json @@ -0,0 +1,263 @@ +{ + "marker_environment": { + "implementation_name": "cpython", + "implementation_version": "3.14.2", + "os_name": "posix", + "platform_machine": "aarch64", + "platform_python_implementation": "CPython", + "platform_release": "6.12.54-linuxkit", + "platform_system": "Linux", + "platform_version": "#1 SMP Tue Nov 4 21:21:47 UTC 2025", + "python_full_version": "3.14.2", + "python_version": "3.14", + "sys_platform": "linux" + }, + "compatible_tags": [ + "cp314-cp314-manylinux_2_41_aarch64", + "cp314-cp314-manylinux_2_40_aarch64", + "cp314-cp314-manylinux_2_39_aarch64", + "cp314-cp314-manylinux_2_38_aarch64", + "cp314-cp314-manylinux_2_37_aarch64", + "cp314-cp314-manylinux_2_36_aarch64", + "cp314-cp314-manylinux_2_35_aarch64", + "cp314-cp314-manylinux_2_34_aarch64", + "cp314-cp314-manylinux_2_33_aarch64", + "cp314-cp314-manylinux_2_32_aarch64", + "cp314-cp314-manylinux_2_31_aarch64", + "cp314-cp314-manylinux_2_30_aarch64", + "cp314-cp314-manylinux_2_29_aarch64", + "cp314-cp314-manylinux_2_28_aarch64", + "cp314-cp314-manylinux_2_27_aarch64", + "cp314-cp314-manylinux_2_26_aarch64", + "cp314-cp314-manylinux_2_25_aarch64", + "cp314-cp314-manylinux_2_24_aarch64", + "cp314-cp314-manylinux_2_23_aarch64", + "cp314-cp314-manylinux_2_22_aarch64", + "cp314-cp314-manylinux_2_21_aarch64", + "cp314-cp314-manylinux_2_20_aarch64", + "cp314-cp314-manylinux_2_19_aarch64", + "cp314-cp314-manylinux_2_18_aarch64", + "cp314-cp314-manylinux_2_17_aarch64", + "cp314-cp314-manylinux2014_aarch64", + "cp314-cp314-linux_aarch64", + "cp314-abi3-manylinux_2_41_aarch64", + "cp314-abi3-manylinux_2_40_aarch64", + "cp314-abi3-manylinux_2_39_aarch64", + "cp314-abi3-manylinux_2_38_aarch64", + "cp314-abi3-manylinux_2_37_aarch64", + "cp314-abi3-manylinux_2_36_aarch64", + "cp314-abi3-manylinux_2_35_aarch64", + "cp314-abi3-manylinux_2_34_aarch64", + "cp314-abi3-manylinux_2_33_aarch64", + "cp314-abi3-manylinux_2_32_aarch64", + "cp314-abi3-manylinux_2_31_aarch64", + "cp314-abi3-manylinux_2_30_aarch64", + "cp314-abi3-manylinux_2_29_aarch64", + "cp314-abi3-manylinux_2_28_aarch64", + "cp314-abi3-manylinux_2_27_aarch64", + "cp314-abi3-manylinux_2_26_aarch64", + "cp314-abi3-manylinux_2_25_aarch64", + "cp314-abi3-manylinux_2_24_aarch64", + "cp314-abi3-manylinux_2_23_aarch64", + "cp314-abi3-manylinux_2_22_aarch64", + "cp314-abi3-manylinux_2_21_aarch64", + "cp314-abi3-manylinux_2_20_aarch64", + "cp314-abi3-manylinux_2_19_aarch64", + "cp314-abi3-manylinux_2_18_aarch64", + "cp314-abi3-manylinux_2_17_aarch64", + "cp314-abi3-manylinux2014_aarch64", + "cp314-abi3-linux_aarch64", + "cp314-none-manylinux_2_41_aarch64", + "cp314-none-manylinux_2_40_aarch64", + "cp314-none-manylinux_2_39_aarch64", + "cp314-none-manylinux_2_38_aarch64", + "cp314-none-manylinux_2_37_aarch64", + "cp314-none-manylinux_2_36_aarch64", + "cp314-none-manylinux_2_35_aarch64", + "cp314-none-manylinux_2_34_aarch64", + "cp314-none-manylinux_2_33_aarch64", + "cp314-none-manylinux_2_32_aarch64", + "cp314-none-manylinux_2_31_aarch64", + "cp314-none-manylinux_2_30_aarch64", + "cp314-none-manylinux_2_29_aarch64", + "cp314-none-manylinux_2_28_aarch64", + "cp314-none-manylinux_2_27_aarch64", + "cp314-none-manylinux_2_26_aarch64", + "cp314-none-manylinux_2_25_aarch64", + "cp314-none-manylinux_2_24_aarch64", + "cp314-none-manylinux_2_23_aarch64", + "cp314-none-manylinux_2_22_aarch64", + "cp314-none-manylinux_2_21_aarch64", + "cp314-none-manylinux_2_20_aarch64", + "cp314-none-manylinux_2_19_aarch64", + "cp314-none-manylinux_2_18_aarch64", + "cp314-none-manylinux_2_17_aarch64", + "cp314-none-manylinux2014_aarch64", + "cp314-none-linux_aarch64", + "cp310-abi3-manylinux_2_41_aarch64", + "cp310-abi3-manylinux_2_40_aarch64", + "cp310-abi3-manylinux_2_39_aarch64", + "cp310-abi3-manylinux_2_38_aarch64", + "cp310-abi3-manylinux_2_37_aarch64", + "cp310-abi3-manylinux_2_36_aarch64", + "cp310-abi3-manylinux_2_35_aarch64", + "cp310-abi3-manylinux_2_34_aarch64", + "cp310-abi3-manylinux_2_33_aarch64", + "cp310-abi3-manylinux_2_32_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_41_aarch64", + "cp39-abi3-manylinux_2_40_aarch64", + "cp39-abi3-manylinux_2_39_aarch64", + "cp39-abi3-manylinux_2_38_aarch64", + "cp39-abi3-manylinux_2_37_aarch64", + "cp39-abi3-manylinux_2_36_aarch64", + "cp39-abi3-manylinux_2_35_aarch64", + "cp39-abi3-manylinux_2_34_aarch64", + "cp39-abi3-manylinux_2_33_aarch64", + "cp39-abi3-manylinux_2_32_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_41_aarch64", + "cp38-abi3-manylinux_2_40_aarch64", + "cp38-abi3-manylinux_2_39_aarch64", + "cp38-abi3-manylinux_2_38_aarch64", + "cp38-abi3-manylinux_2_37_aarch64", + "cp38-abi3-manylinux_2_36_aarch64", + "cp38-abi3-manylinux_2_35_aarch64", + "cp38-abi3-manylinux_2_34_aarch64", + "cp38-abi3-manylinux_2_33_aarch64", + "cp38-abi3-manylinux_2_32_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_41_aarch64", + "cp37-abi3-manylinux_2_40_aarch64", + "cp37-abi3-manylinux_2_39_aarch64", + "cp37-abi3-manylinux_2_38_aarch64", + "cp37-abi3-manylinux_2_37_aarch64", + "cp37-abi3-manylinux_2_36_aarch64", + "cp37-abi3-manylinux_2_35_aarch64", + "cp37-abi3-manylinux_2_34_aarch64", + "cp37-abi3-manylinux_2_33_aarch64", + "cp37-abi3-manylinux_2_32_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", + "py314-none-manylinux_2_41_aarch64", + "py314-none-manylinux_2_40_aarch64", + "py314-none-manylinux_2_39_aarch64", + "py314-none-manylinux_2_38_aarch64", + "py314-none-manylinux_2_37_aarch64", + "py314-none-manylinux_2_36_aarch64", + "py314-none-manylinux_2_35_aarch64", + "py314-none-manylinux_2_34_aarch64", + "py314-none-manylinux_2_33_aarch64", + "py314-none-manylinux_2_32_aarch64", + "py314-none-manylinux_2_31_aarch64", + "py314-none-manylinux_2_30_aarch64", + "py314-none-manylinux_2_29_aarch64", + "py314-none-manylinux_2_28_aarch64", + "py314-none-manylinux_2_27_aarch64", + "py314-none-manylinux_2_26_aarch64", + "py314-none-manylinux_2_25_aarch64", + "py314-none-manylinux_2_24_aarch64", + "py314-none-manylinux_2_23_aarch64", + "py314-none-manylinux_2_22_aarch64", + "py314-none-manylinux_2_21_aarch64", + "py314-none-manylinux_2_20_aarch64", + "py314-none-manylinux_2_19_aarch64", + "py314-none-manylinux_2_18_aarch64", + "py314-none-manylinux_2_17_aarch64", + "py314-none-manylinux2014_aarch64", + "py314-none-linux_aarch64", + "py3-none-manylinux_2_41_aarch64", + "py3-none-manylinux_2_40_aarch64", + "py3-none-manylinux_2_39_aarch64", + "py3-none-manylinux_2_38_aarch64", + "py3-none-manylinux_2_37_aarch64", + "py3-none-manylinux_2_36_aarch64", + "py3-none-manylinux_2_35_aarch64", + "py3-none-manylinux_2_34_aarch64", + "py3-none-manylinux_2_33_aarch64", + "py3-none-manylinux_2_32_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", + "cp314-none-any", + "py314-none-any", + "py3-none-any" + ] +} diff --git a/.github/.platforms/linux-x86_64-musl-py310.json b/.github/.platforms/linux-x86_64-musl-py310.json new file mode 100644 index 00000000..fcbd8f72 --- /dev/null +++ b/.github/.platforms/linux-x86_64-musl-py310.json @@ -0,0 +1,52 @@ +{ + "marker_environment": { + "implementation_name": "cpython", + "implementation_version": "3.10.19", + "os_name": "posix", + "platform_machine": "x86_64", + "platform_python_implementation": "CPython", + "platform_release": "6.12.54-linuxkit", + "platform_system": "Linux", + "platform_version": "#1 SMP Tue Nov 4 21:21:47 UTC 2025", + "python_full_version": "3.10.19", + "python_version": "3.10", + "sys_platform": "linux" + }, + "compatible_tags": [ + "cp310-cp310-musllinux_1_2_x86_64", + "cp310-cp310-musllinux_1_1_x86_64", + "cp310-cp310-musllinux_1_0_x86_64", + "cp310-cp310-linux_x86_64", + "cp310-abi3-musllinux_1_2_x86_64", + "cp310-abi3-musllinux_1_1_x86_64", + "cp310-abi3-musllinux_1_0_x86_64", + "cp310-abi3-linux_x86_64", + "cp310-none-musllinux_1_2_x86_64", + "cp310-none-musllinux_1_1_x86_64", + "cp310-none-musllinux_1_0_x86_64", + "cp310-none-linux_x86_64", + "cp39-abi3-musllinux_1_2_x86_64", + "cp39-abi3-musllinux_1_1_x86_64", + "cp39-abi3-musllinux_1_0_x86_64", + "cp39-abi3-linux_x86_64", + "cp38-abi3-musllinux_1_2_x86_64", + "cp38-abi3-musllinux_1_1_x86_64", + "cp38-abi3-musllinux_1_0_x86_64", + "cp38-abi3-linux_x86_64", + "cp37-abi3-musllinux_1_2_x86_64", + "cp37-abi3-musllinux_1_1_x86_64", + "cp37-abi3-musllinux_1_0_x86_64", + "cp37-abi3-linux_x86_64", + "py310-none-musllinux_1_2_x86_64", + "py310-none-musllinux_1_1_x86_64", + "py310-none-musllinux_1_0_x86_64", + "py310-none-linux_x86_64", + "py3-none-musllinux_1_2_x86_64", + "py3-none-musllinux_1_1_x86_64", + "py3-none-musllinux_1_0_x86_64", + "py3-none-linux_x86_64", + "cp310-none-any", + "py310-none-any", + "py3-none-any" + ] +} diff --git a/.github/.platforms/linux-x86_64-musl-py311.json b/.github/.platforms/linux-x86_64-musl-py311.json new file mode 100644 index 00000000..303669c3 --- /dev/null +++ b/.github/.platforms/linux-x86_64-musl-py311.json @@ -0,0 +1,56 @@ +{ + "marker_environment": { + "implementation_name": "cpython", + "implementation_version": "3.11.14", + "os_name": "posix", + "platform_machine": "x86_64", + "platform_python_implementation": "CPython", + "platform_release": "6.12.54-linuxkit", + "platform_system": "Linux", + "platform_version": "#1 SMP Tue Nov 4 21:21:47 UTC 2025", + "python_full_version": "3.11.14", + "python_version": "3.11", + "sys_platform": "linux" + }, + "compatible_tags": [ + "cp311-cp311-musllinux_1_2_x86_64", + "cp311-cp311-musllinux_1_1_x86_64", + "cp311-cp311-musllinux_1_0_x86_64", + "cp311-cp311-linux_x86_64", + "cp311-abi3-musllinux_1_2_x86_64", + "cp311-abi3-musllinux_1_1_x86_64", + "cp311-abi3-musllinux_1_0_x86_64", + "cp311-abi3-linux_x86_64", + "cp311-none-musllinux_1_2_x86_64", + "cp311-none-musllinux_1_1_x86_64", + "cp311-none-musllinux_1_0_x86_64", + "cp311-none-linux_x86_64", + "cp310-abi3-musllinux_1_2_x86_64", + "cp310-abi3-musllinux_1_1_x86_64", + "cp310-abi3-musllinux_1_0_x86_64", + "cp310-abi3-linux_x86_64", + "cp39-abi3-musllinux_1_2_x86_64", + "cp39-abi3-musllinux_1_1_x86_64", + "cp39-abi3-musllinux_1_0_x86_64", + "cp39-abi3-linux_x86_64", + "cp38-abi3-musllinux_1_2_x86_64", + "cp38-abi3-musllinux_1_1_x86_64", + "cp38-abi3-musllinux_1_0_x86_64", + "cp38-abi3-linux_x86_64", + "cp37-abi3-musllinux_1_2_x86_64", + "cp37-abi3-musllinux_1_1_x86_64", + "cp37-abi3-musllinux_1_0_x86_64", + "cp37-abi3-linux_x86_64", + "py311-none-musllinux_1_2_x86_64", + "py311-none-musllinux_1_1_x86_64", + "py311-none-musllinux_1_0_x86_64", + "py311-none-linux_x86_64", + "py3-none-musllinux_1_2_x86_64", + "py3-none-musllinux_1_1_x86_64", + "py3-none-musllinux_1_0_x86_64", + "py3-none-linux_x86_64", + "cp311-none-any", + "py311-none-any", + "py3-none-any" + ] +} diff --git a/.github/.platforms/linux-x86_64-musl-py312.json b/.github/.platforms/linux-x86_64-musl-py312.json new file mode 100644 index 00000000..3ec55f01 --- /dev/null +++ b/.github/.platforms/linux-x86_64-musl-py312.json @@ -0,0 +1,56 @@ +{ + "marker_environment": { + "implementation_name": "cpython", + "implementation_version": "3.12.12", + "os_name": "posix", + "platform_machine": "x86_64", + "platform_python_implementation": "CPython", + "platform_release": "6.12.54-linuxkit", + "platform_system": "Linux", + "platform_version": "#1 SMP Tue Nov 4 21:21:47 UTC 2025", + "python_full_version": "3.12.12", + "python_version": "3.12", + "sys_platform": "linux" + }, + "compatible_tags": [ + "cp312-cp312-musllinux_1_2_x86_64", + "cp312-cp312-musllinux_1_1_x86_64", + "cp312-cp312-musllinux_1_0_x86_64", + "cp312-cp312-linux_x86_64", + "cp312-abi3-musllinux_1_2_x86_64", + "cp312-abi3-musllinux_1_1_x86_64", + "cp312-abi3-musllinux_1_0_x86_64", + "cp312-abi3-linux_x86_64", + "cp312-none-musllinux_1_2_x86_64", + "cp312-none-musllinux_1_1_x86_64", + "cp312-none-musllinux_1_0_x86_64", + "cp312-none-linux_x86_64", + "cp310-abi3-musllinux_1_2_x86_64", + "cp310-abi3-musllinux_1_1_x86_64", + "cp310-abi3-musllinux_1_0_x86_64", + "cp310-abi3-linux_x86_64", + "cp39-abi3-musllinux_1_2_x86_64", + "cp39-abi3-musllinux_1_1_x86_64", + "cp39-abi3-musllinux_1_0_x86_64", + "cp39-abi3-linux_x86_64", + "cp38-abi3-musllinux_1_2_x86_64", + "cp38-abi3-musllinux_1_1_x86_64", + "cp38-abi3-musllinux_1_0_x86_64", + "cp38-abi3-linux_x86_64", + "cp37-abi3-musllinux_1_2_x86_64", + "cp37-abi3-musllinux_1_1_x86_64", + "cp37-abi3-musllinux_1_0_x86_64", + "cp37-abi3-linux_x86_64", + "py312-none-musllinux_1_2_x86_64", + "py312-none-musllinux_1_1_x86_64", + "py312-none-musllinux_1_0_x86_64", + "py312-none-linux_x86_64", + "py3-none-musllinux_1_2_x86_64", + "py3-none-musllinux_1_1_x86_64", + "py3-none-musllinux_1_0_x86_64", + "py3-none-linux_x86_64", + "cp312-none-any", + "py312-none-any", + "py3-none-any" + ] +} diff --git a/.github/.platforms/linux-x86_64-musl-py313.json b/.github/.platforms/linux-x86_64-musl-py313.json new file mode 100644 index 00000000..114d964e --- /dev/null +++ b/.github/.platforms/linux-x86_64-musl-py313.json @@ -0,0 +1,56 @@ +{ + "marker_environment": { + "implementation_name": "cpython", + "implementation_version": "3.13.11", + "os_name": "posix", + "platform_machine": "x86_64", + "platform_python_implementation": "CPython", + "platform_release": "6.12.54-linuxkit", + "platform_system": "Linux", + "platform_version": "#1 SMP Tue Nov 4 21:21:47 UTC 2025", + "python_full_version": "3.13.11", + "python_version": "3.13", + "sys_platform": "linux" + }, + "compatible_tags": [ + "cp313-cp313-musllinux_1_2_x86_64", + "cp313-cp313-musllinux_1_1_x86_64", + "cp313-cp313-musllinux_1_0_x86_64", + "cp313-cp313-linux_x86_64", + "cp313-abi3-musllinux_1_2_x86_64", + "cp313-abi3-musllinux_1_1_x86_64", + "cp313-abi3-musllinux_1_0_x86_64", + "cp313-abi3-linux_x86_64", + "cp313-none-musllinux_1_2_x86_64", + "cp313-none-musllinux_1_1_x86_64", + "cp313-none-musllinux_1_0_x86_64", + "cp313-none-linux_x86_64", + "cp310-abi3-musllinux_1_2_x86_64", + "cp310-abi3-musllinux_1_1_x86_64", + "cp310-abi3-musllinux_1_0_x86_64", + "cp310-abi3-linux_x86_64", + "cp39-abi3-musllinux_1_2_x86_64", + "cp39-abi3-musllinux_1_1_x86_64", + "cp39-abi3-musllinux_1_0_x86_64", + "cp39-abi3-linux_x86_64", + "cp38-abi3-musllinux_1_2_x86_64", + "cp38-abi3-musllinux_1_1_x86_64", + "cp38-abi3-musllinux_1_0_x86_64", + "cp38-abi3-linux_x86_64", + "cp37-abi3-musllinux_1_2_x86_64", + "cp37-abi3-musllinux_1_1_x86_64", + "cp37-abi3-musllinux_1_0_x86_64", + "cp37-abi3-linux_x86_64", + "py313-none-musllinux_1_2_x86_64", + "py313-none-musllinux_1_1_x86_64", + "py313-none-musllinux_1_0_x86_64", + "py313-none-linux_x86_64", + "py3-none-musllinux_1_2_x86_64", + "py3-none-musllinux_1_1_x86_64", + "py3-none-musllinux_1_0_x86_64", + "py3-none-linux_x86_64", + "cp313-none-any", + "py313-none-any", + "py3-none-any" + ] +} diff --git a/.github/.platforms/linux-x86_64-musl-py314.json b/.github/.platforms/linux-x86_64-musl-py314.json new file mode 100644 index 00000000..ae92b677 --- /dev/null +++ b/.github/.platforms/linux-x86_64-musl-py314.json @@ -0,0 +1,56 @@ +{ + "marker_environment": { + "implementation_name": "cpython", + "implementation_version": "3.14.2", + "os_name": "posix", + "platform_machine": "x86_64", + "platform_python_implementation": "CPython", + "platform_release": "6.12.54-linuxkit", + "platform_system": "Linux", + "platform_version": "#1 SMP Tue Nov 4 21:21:47 UTC 2025", + "python_full_version": "3.14.2", + "python_version": "3.14", + "sys_platform": "linux" + }, + "compatible_tags": [ + "cp314-cp314-musllinux_1_2_x86_64", + "cp314-cp314-musllinux_1_1_x86_64", + "cp314-cp314-musllinux_1_0_x86_64", + "cp314-cp314-linux_x86_64", + "cp314-abi3-musllinux_1_2_x86_64", + "cp314-abi3-musllinux_1_1_x86_64", + "cp314-abi3-musllinux_1_0_x86_64", + "cp314-abi3-linux_x86_64", + "cp314-none-musllinux_1_2_x86_64", + "cp314-none-musllinux_1_1_x86_64", + "cp314-none-musllinux_1_0_x86_64", + "cp314-none-linux_x86_64", + "cp310-abi3-musllinux_1_2_x86_64", + "cp310-abi3-musllinux_1_1_x86_64", + "cp310-abi3-musllinux_1_0_x86_64", + "cp310-abi3-linux_x86_64", + "cp39-abi3-musllinux_1_2_x86_64", + "cp39-abi3-musllinux_1_1_x86_64", + "cp39-abi3-musllinux_1_0_x86_64", + "cp39-abi3-linux_x86_64", + "cp38-abi3-musllinux_1_2_x86_64", + "cp38-abi3-musllinux_1_1_x86_64", + "cp38-abi3-musllinux_1_0_x86_64", + "cp38-abi3-linux_x86_64", + "cp37-abi3-musllinux_1_2_x86_64", + "cp37-abi3-musllinux_1_1_x86_64", + "cp37-abi3-musllinux_1_0_x86_64", + "cp37-abi3-linux_x86_64", + "py314-none-musllinux_1_2_x86_64", + "py314-none-musllinux_1_1_x86_64", + "py314-none-musllinux_1_0_x86_64", + "py314-none-linux_x86_64", + "py3-none-musllinux_1_2_x86_64", + "py3-none-musllinux_1_1_x86_64", + "py3-none-musllinux_1_0_x86_64", + "py3-none-linux_x86_64", + "cp314-none-any", + "py314-none-any", + "py3-none-any" + ] +} diff --git a/.github/.platforms/linux-x86_64-py310.json b/.github/.platforms/linux-x86_64-py310.json new file mode 100644 index 00000000..621f2a81 --- /dev/null +++ b/.github/.platforms/linux-x86_64-py310.json @@ -0,0 +1,348 @@ +{ + "marker_environment": { + "implementation_name": "cpython", + "implementation_version": "3.10.19", + "os_name": "posix", + "platform_machine": "x86_64", + "platform_python_implementation": "CPython", + "platform_release": "6.12.54-linuxkit", + "platform_system": "Linux", + "platform_version": "#1 SMP Tue Nov 4 21:21:47 UTC 2025", + "python_full_version": "3.10.19", + "python_version": "3.10", + "sys_platform": "linux" + }, + "compatible_tags": [ + "cp310-cp310-manylinux_2_41_x86_64", + "cp310-cp310-manylinux_2_40_x86_64", + "cp310-cp310-manylinux_2_39_x86_64", + "cp310-cp310-manylinux_2_38_x86_64", + "cp310-cp310-manylinux_2_37_x86_64", + "cp310-cp310-manylinux_2_36_x86_64", + "cp310-cp310-manylinux_2_35_x86_64", + "cp310-cp310-manylinux_2_34_x86_64", + "cp310-cp310-manylinux_2_33_x86_64", + "cp310-cp310-manylinux_2_32_x86_64", + "cp310-cp310-manylinux_2_31_x86_64", + "cp310-cp310-manylinux_2_30_x86_64", + "cp310-cp310-manylinux_2_29_x86_64", + "cp310-cp310-manylinux_2_28_x86_64", + "cp310-cp310-manylinux_2_27_x86_64", + "cp310-cp310-manylinux_2_26_x86_64", + "cp310-cp310-manylinux_2_25_x86_64", + "cp310-cp310-manylinux_2_24_x86_64", + "cp310-cp310-manylinux_2_23_x86_64", + "cp310-cp310-manylinux_2_22_x86_64", + "cp310-cp310-manylinux_2_21_x86_64", + "cp310-cp310-manylinux_2_20_x86_64", + "cp310-cp310-manylinux_2_19_x86_64", + "cp310-cp310-manylinux_2_18_x86_64", + "cp310-cp310-manylinux_2_17_x86_64", + "cp310-cp310-manylinux2014_x86_64", + "cp310-cp310-manylinux_2_16_x86_64", + "cp310-cp310-manylinux_2_15_x86_64", + "cp310-cp310-manylinux_2_14_x86_64", + "cp310-cp310-manylinux_2_13_x86_64", + "cp310-cp310-manylinux_2_12_x86_64", + "cp310-cp310-manylinux2010_x86_64", + "cp310-cp310-manylinux_2_11_x86_64", + "cp310-cp310-manylinux_2_10_x86_64", + "cp310-cp310-manylinux_2_9_x86_64", + "cp310-cp310-manylinux_2_8_x86_64", + "cp310-cp310-manylinux_2_7_x86_64", + "cp310-cp310-manylinux_2_6_x86_64", + "cp310-cp310-manylinux_2_5_x86_64", + "cp310-cp310-manylinux1_x86_64", + "cp310-cp310-linux_x86_64", + "cp310-abi3-manylinux_2_41_x86_64", + "cp310-abi3-manylinux_2_40_x86_64", + "cp310-abi3-manylinux_2_39_x86_64", + "cp310-abi3-manylinux_2_38_x86_64", + "cp310-abi3-manylinux_2_37_x86_64", + "cp310-abi3-manylinux_2_36_x86_64", + "cp310-abi3-manylinux_2_35_x86_64", + "cp310-abi3-manylinux_2_34_x86_64", + "cp310-abi3-manylinux_2_33_x86_64", + "cp310-abi3-manylinux_2_32_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", + "cp310-none-manylinux_2_41_x86_64", + "cp310-none-manylinux_2_40_x86_64", + "cp310-none-manylinux_2_39_x86_64", + "cp310-none-manylinux_2_38_x86_64", + "cp310-none-manylinux_2_37_x86_64", + "cp310-none-manylinux_2_36_x86_64", + "cp310-none-manylinux_2_35_x86_64", + "cp310-none-manylinux_2_34_x86_64", + "cp310-none-manylinux_2_33_x86_64", + "cp310-none-manylinux_2_32_x86_64", + "cp310-none-manylinux_2_31_x86_64", + "cp310-none-manylinux_2_30_x86_64", + "cp310-none-manylinux_2_29_x86_64", + "cp310-none-manylinux_2_28_x86_64", + "cp310-none-manylinux_2_27_x86_64", + "cp310-none-manylinux_2_26_x86_64", + "cp310-none-manylinux_2_25_x86_64", + "cp310-none-manylinux_2_24_x86_64", + "cp310-none-manylinux_2_23_x86_64", + "cp310-none-manylinux_2_22_x86_64", + "cp310-none-manylinux_2_21_x86_64", + "cp310-none-manylinux_2_20_x86_64", + "cp310-none-manylinux_2_19_x86_64", + "cp310-none-manylinux_2_18_x86_64", + "cp310-none-manylinux_2_17_x86_64", + "cp310-none-manylinux2014_x86_64", + "cp310-none-manylinux_2_16_x86_64", + "cp310-none-manylinux_2_15_x86_64", + "cp310-none-manylinux_2_14_x86_64", + "cp310-none-manylinux_2_13_x86_64", + "cp310-none-manylinux_2_12_x86_64", + "cp310-none-manylinux2010_x86_64", + "cp310-none-manylinux_2_11_x86_64", + "cp310-none-manylinux_2_10_x86_64", + "cp310-none-manylinux_2_9_x86_64", + "cp310-none-manylinux_2_8_x86_64", + "cp310-none-manylinux_2_7_x86_64", + "cp310-none-manylinux_2_6_x86_64", + "cp310-none-manylinux_2_5_x86_64", + "cp310-none-manylinux1_x86_64", + "cp310-none-linux_x86_64", + "cp39-abi3-manylinux_2_41_x86_64", + "cp39-abi3-manylinux_2_40_x86_64", + "cp39-abi3-manylinux_2_39_x86_64", + "cp39-abi3-manylinux_2_38_x86_64", + "cp39-abi3-manylinux_2_37_x86_64", + "cp39-abi3-manylinux_2_36_x86_64", + "cp39-abi3-manylinux_2_35_x86_64", + "cp39-abi3-manylinux_2_34_x86_64", + "cp39-abi3-manylinux_2_33_x86_64", + "cp39-abi3-manylinux_2_32_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_41_x86_64", + "cp38-abi3-manylinux_2_40_x86_64", + "cp38-abi3-manylinux_2_39_x86_64", + "cp38-abi3-manylinux_2_38_x86_64", + "cp38-abi3-manylinux_2_37_x86_64", + "cp38-abi3-manylinux_2_36_x86_64", + "cp38-abi3-manylinux_2_35_x86_64", + "cp38-abi3-manylinux_2_34_x86_64", + "cp38-abi3-manylinux_2_33_x86_64", + "cp38-abi3-manylinux_2_32_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_41_x86_64", + "cp37-abi3-manylinux_2_40_x86_64", + "cp37-abi3-manylinux_2_39_x86_64", + "cp37-abi3-manylinux_2_38_x86_64", + "cp37-abi3-manylinux_2_37_x86_64", + "cp37-abi3-manylinux_2_36_x86_64", + "cp37-abi3-manylinux_2_35_x86_64", + "cp37-abi3-manylinux_2_34_x86_64", + "cp37-abi3-manylinux_2_33_x86_64", + "cp37-abi3-manylinux_2_32_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", + "py310-none-manylinux_2_41_x86_64", + "py310-none-manylinux_2_40_x86_64", + "py310-none-manylinux_2_39_x86_64", + "py310-none-manylinux_2_38_x86_64", + "py310-none-manylinux_2_37_x86_64", + "py310-none-manylinux_2_36_x86_64", + "py310-none-manylinux_2_35_x86_64", + "py310-none-manylinux_2_34_x86_64", + "py310-none-manylinux_2_33_x86_64", + "py310-none-manylinux_2_32_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", + "py3-none-manylinux_2_41_x86_64", + "py3-none-manylinux_2_40_x86_64", + "py3-none-manylinux_2_39_x86_64", + "py3-none-manylinux_2_38_x86_64", + "py3-none-manylinux_2_37_x86_64", + "py3-none-manylinux_2_36_x86_64", + "py3-none-manylinux_2_35_x86_64", + "py3-none-manylinux_2_34_x86_64", + "py3-none-manylinux_2_33_x86_64", + "py3-none-manylinux_2_32_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", + "cp310-none-any", + "py310-none-any", + "py3-none-any" + ] +} diff --git a/.github/.platforms/linux-x86_64-py311.json b/.github/.platforms/linux-x86_64-py311.json new file mode 100644 index 00000000..fe97c5a3 --- /dev/null +++ b/.github/.platforms/linux-x86_64-py311.json @@ -0,0 +1,389 @@ +{ + "marker_environment": { + "implementation_name": "cpython", + "implementation_version": "3.11.14", + "os_name": "posix", + "platform_machine": "x86_64", + "platform_python_implementation": "CPython", + "platform_release": "6.12.54-linuxkit", + "platform_system": "Linux", + "platform_version": "#1 SMP Tue Nov 4 21:21:47 UTC 2025", + "python_full_version": "3.11.14", + "python_version": "3.11", + "sys_platform": "linux" + }, + "compatible_tags": [ + "cp311-cp311-manylinux_2_41_x86_64", + "cp311-cp311-manylinux_2_40_x86_64", + "cp311-cp311-manylinux_2_39_x86_64", + "cp311-cp311-manylinux_2_38_x86_64", + "cp311-cp311-manylinux_2_37_x86_64", + "cp311-cp311-manylinux_2_36_x86_64", + "cp311-cp311-manylinux_2_35_x86_64", + "cp311-cp311-manylinux_2_34_x86_64", + "cp311-cp311-manylinux_2_33_x86_64", + "cp311-cp311-manylinux_2_32_x86_64", + "cp311-cp311-manylinux_2_31_x86_64", + "cp311-cp311-manylinux_2_30_x86_64", + "cp311-cp311-manylinux_2_29_x86_64", + "cp311-cp311-manylinux_2_28_x86_64", + "cp311-cp311-manylinux_2_27_x86_64", + "cp311-cp311-manylinux_2_26_x86_64", + "cp311-cp311-manylinux_2_25_x86_64", + "cp311-cp311-manylinux_2_24_x86_64", + "cp311-cp311-manylinux_2_23_x86_64", + "cp311-cp311-manylinux_2_22_x86_64", + "cp311-cp311-manylinux_2_21_x86_64", + "cp311-cp311-manylinux_2_20_x86_64", + "cp311-cp311-manylinux_2_19_x86_64", + "cp311-cp311-manylinux_2_18_x86_64", + "cp311-cp311-manylinux_2_17_x86_64", + "cp311-cp311-manylinux2014_x86_64", + "cp311-cp311-manylinux_2_16_x86_64", + "cp311-cp311-manylinux_2_15_x86_64", + "cp311-cp311-manylinux_2_14_x86_64", + "cp311-cp311-manylinux_2_13_x86_64", + "cp311-cp311-manylinux_2_12_x86_64", + "cp311-cp311-manylinux2010_x86_64", + "cp311-cp311-manylinux_2_11_x86_64", + "cp311-cp311-manylinux_2_10_x86_64", + "cp311-cp311-manylinux_2_9_x86_64", + "cp311-cp311-manylinux_2_8_x86_64", + "cp311-cp311-manylinux_2_7_x86_64", + "cp311-cp311-manylinux_2_6_x86_64", + "cp311-cp311-manylinux_2_5_x86_64", + "cp311-cp311-manylinux1_x86_64", + "cp311-cp311-linux_x86_64", + "cp311-abi3-manylinux_2_41_x86_64", + "cp311-abi3-manylinux_2_40_x86_64", + "cp311-abi3-manylinux_2_39_x86_64", + "cp311-abi3-manylinux_2_38_x86_64", + "cp311-abi3-manylinux_2_37_x86_64", + "cp311-abi3-manylinux_2_36_x86_64", + "cp311-abi3-manylinux_2_35_x86_64", + "cp311-abi3-manylinux_2_34_x86_64", + "cp311-abi3-manylinux_2_33_x86_64", + "cp311-abi3-manylinux_2_32_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", + "cp311-none-manylinux_2_41_x86_64", + "cp311-none-manylinux_2_40_x86_64", + "cp311-none-manylinux_2_39_x86_64", + "cp311-none-manylinux_2_38_x86_64", + "cp311-none-manylinux_2_37_x86_64", + "cp311-none-manylinux_2_36_x86_64", + "cp311-none-manylinux_2_35_x86_64", + "cp311-none-manylinux_2_34_x86_64", + "cp311-none-manylinux_2_33_x86_64", + "cp311-none-manylinux_2_32_x86_64", + "cp311-none-manylinux_2_31_x86_64", + "cp311-none-manylinux_2_30_x86_64", + "cp311-none-manylinux_2_29_x86_64", + "cp311-none-manylinux_2_28_x86_64", + "cp311-none-manylinux_2_27_x86_64", + "cp311-none-manylinux_2_26_x86_64", + "cp311-none-manylinux_2_25_x86_64", + "cp311-none-manylinux_2_24_x86_64", + "cp311-none-manylinux_2_23_x86_64", + "cp311-none-manylinux_2_22_x86_64", + "cp311-none-manylinux_2_21_x86_64", + "cp311-none-manylinux_2_20_x86_64", + "cp311-none-manylinux_2_19_x86_64", + "cp311-none-manylinux_2_18_x86_64", + "cp311-none-manylinux_2_17_x86_64", + "cp311-none-manylinux2014_x86_64", + "cp311-none-manylinux_2_16_x86_64", + "cp311-none-manylinux_2_15_x86_64", + "cp311-none-manylinux_2_14_x86_64", + "cp311-none-manylinux_2_13_x86_64", + "cp311-none-manylinux_2_12_x86_64", + "cp311-none-manylinux2010_x86_64", + "cp311-none-manylinux_2_11_x86_64", + "cp311-none-manylinux_2_10_x86_64", + "cp311-none-manylinux_2_9_x86_64", + "cp311-none-manylinux_2_8_x86_64", + "cp311-none-manylinux_2_7_x86_64", + "cp311-none-manylinux_2_6_x86_64", + "cp311-none-manylinux_2_5_x86_64", + "cp311-none-manylinux1_x86_64", + "cp311-none-linux_x86_64", + "cp310-abi3-manylinux_2_41_x86_64", + "cp310-abi3-manylinux_2_40_x86_64", + "cp310-abi3-manylinux_2_39_x86_64", + "cp310-abi3-manylinux_2_38_x86_64", + "cp310-abi3-manylinux_2_37_x86_64", + "cp310-abi3-manylinux_2_36_x86_64", + "cp310-abi3-manylinux_2_35_x86_64", + "cp310-abi3-manylinux_2_34_x86_64", + "cp310-abi3-manylinux_2_33_x86_64", + "cp310-abi3-manylinux_2_32_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_41_x86_64", + "cp39-abi3-manylinux_2_40_x86_64", + "cp39-abi3-manylinux_2_39_x86_64", + "cp39-abi3-manylinux_2_38_x86_64", + "cp39-abi3-manylinux_2_37_x86_64", + "cp39-abi3-manylinux_2_36_x86_64", + "cp39-abi3-manylinux_2_35_x86_64", + "cp39-abi3-manylinux_2_34_x86_64", + "cp39-abi3-manylinux_2_33_x86_64", + "cp39-abi3-manylinux_2_32_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_41_x86_64", + "cp38-abi3-manylinux_2_40_x86_64", + "cp38-abi3-manylinux_2_39_x86_64", + "cp38-abi3-manylinux_2_38_x86_64", + "cp38-abi3-manylinux_2_37_x86_64", + "cp38-abi3-manylinux_2_36_x86_64", + "cp38-abi3-manylinux_2_35_x86_64", + "cp38-abi3-manylinux_2_34_x86_64", + "cp38-abi3-manylinux_2_33_x86_64", + "cp38-abi3-manylinux_2_32_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_41_x86_64", + "cp37-abi3-manylinux_2_40_x86_64", + "cp37-abi3-manylinux_2_39_x86_64", + "cp37-abi3-manylinux_2_38_x86_64", + "cp37-abi3-manylinux_2_37_x86_64", + "cp37-abi3-manylinux_2_36_x86_64", + "cp37-abi3-manylinux_2_35_x86_64", + "cp37-abi3-manylinux_2_34_x86_64", + "cp37-abi3-manylinux_2_33_x86_64", + "cp37-abi3-manylinux_2_32_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", + "py311-none-manylinux_2_41_x86_64", + "py311-none-manylinux_2_40_x86_64", + "py311-none-manylinux_2_39_x86_64", + "py311-none-manylinux_2_38_x86_64", + "py311-none-manylinux_2_37_x86_64", + "py311-none-manylinux_2_36_x86_64", + "py311-none-manylinux_2_35_x86_64", + "py311-none-manylinux_2_34_x86_64", + "py311-none-manylinux_2_33_x86_64", + "py311-none-manylinux_2_32_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", + "py3-none-manylinux_2_41_x86_64", + "py3-none-manylinux_2_40_x86_64", + "py3-none-manylinux_2_39_x86_64", + "py3-none-manylinux_2_38_x86_64", + "py3-none-manylinux_2_37_x86_64", + "py3-none-manylinux_2_36_x86_64", + "py3-none-manylinux_2_35_x86_64", + "py3-none-manylinux_2_34_x86_64", + "py3-none-manylinux_2_33_x86_64", + "py3-none-manylinux_2_32_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", + "cp311-none-any", + "py311-none-any", + "py3-none-any" + ] +} diff --git a/.github/.platforms/linux-x86_64-py312.json b/.github/.platforms/linux-x86_64-py312.json new file mode 100644 index 00000000..8aa1a6cf --- /dev/null +++ b/.github/.platforms/linux-x86_64-py312.json @@ -0,0 +1,389 @@ +{ + "marker_environment": { + "implementation_name": "cpython", + "implementation_version": "3.12.12", + "os_name": "posix", + "platform_machine": "x86_64", + "platform_python_implementation": "CPython", + "platform_release": "6.12.54-linuxkit", + "platform_system": "Linux", + "platform_version": "#1 SMP Tue Nov 4 21:21:47 UTC 2025", + "python_full_version": "3.12.12", + "python_version": "3.12", + "sys_platform": "linux" + }, + "compatible_tags": [ + "cp312-cp312-manylinux_2_41_x86_64", + "cp312-cp312-manylinux_2_40_x86_64", + "cp312-cp312-manylinux_2_39_x86_64", + "cp312-cp312-manylinux_2_38_x86_64", + "cp312-cp312-manylinux_2_37_x86_64", + "cp312-cp312-manylinux_2_36_x86_64", + "cp312-cp312-manylinux_2_35_x86_64", + "cp312-cp312-manylinux_2_34_x86_64", + "cp312-cp312-manylinux_2_33_x86_64", + "cp312-cp312-manylinux_2_32_x86_64", + "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_41_x86_64", + "cp312-abi3-manylinux_2_40_x86_64", + "cp312-abi3-manylinux_2_39_x86_64", + "cp312-abi3-manylinux_2_38_x86_64", + "cp312-abi3-manylinux_2_37_x86_64", + "cp312-abi3-manylinux_2_36_x86_64", + "cp312-abi3-manylinux_2_35_x86_64", + "cp312-abi3-manylinux_2_34_x86_64", + "cp312-abi3-manylinux_2_33_x86_64", + "cp312-abi3-manylinux_2_32_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_41_x86_64", + "cp312-none-manylinux_2_40_x86_64", + "cp312-none-manylinux_2_39_x86_64", + "cp312-none-manylinux_2_38_x86_64", + "cp312-none-manylinux_2_37_x86_64", + "cp312-none-manylinux_2_36_x86_64", + "cp312-none-manylinux_2_35_x86_64", + "cp312-none-manylinux_2_34_x86_64", + "cp312-none-manylinux_2_33_x86_64", + "cp312-none-manylinux_2_32_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", + "cp310-abi3-manylinux_2_41_x86_64", + "cp310-abi3-manylinux_2_40_x86_64", + "cp310-abi3-manylinux_2_39_x86_64", + "cp310-abi3-manylinux_2_38_x86_64", + "cp310-abi3-manylinux_2_37_x86_64", + "cp310-abi3-manylinux_2_36_x86_64", + "cp310-abi3-manylinux_2_35_x86_64", + "cp310-abi3-manylinux_2_34_x86_64", + "cp310-abi3-manylinux_2_33_x86_64", + "cp310-abi3-manylinux_2_32_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_41_x86_64", + "cp39-abi3-manylinux_2_40_x86_64", + "cp39-abi3-manylinux_2_39_x86_64", + "cp39-abi3-manylinux_2_38_x86_64", + "cp39-abi3-manylinux_2_37_x86_64", + "cp39-abi3-manylinux_2_36_x86_64", + "cp39-abi3-manylinux_2_35_x86_64", + "cp39-abi3-manylinux_2_34_x86_64", + "cp39-abi3-manylinux_2_33_x86_64", + "cp39-abi3-manylinux_2_32_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_41_x86_64", + "cp38-abi3-manylinux_2_40_x86_64", + "cp38-abi3-manylinux_2_39_x86_64", + "cp38-abi3-manylinux_2_38_x86_64", + "cp38-abi3-manylinux_2_37_x86_64", + "cp38-abi3-manylinux_2_36_x86_64", + "cp38-abi3-manylinux_2_35_x86_64", + "cp38-abi3-manylinux_2_34_x86_64", + "cp38-abi3-manylinux_2_33_x86_64", + "cp38-abi3-manylinux_2_32_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_41_x86_64", + "cp37-abi3-manylinux_2_40_x86_64", + "cp37-abi3-manylinux_2_39_x86_64", + "cp37-abi3-manylinux_2_38_x86_64", + "cp37-abi3-manylinux_2_37_x86_64", + "cp37-abi3-manylinux_2_36_x86_64", + "cp37-abi3-manylinux_2_35_x86_64", + "cp37-abi3-manylinux_2_34_x86_64", + "cp37-abi3-manylinux_2_33_x86_64", + "cp37-abi3-manylinux_2_32_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", + "py312-none-manylinux_2_41_x86_64", + "py312-none-manylinux_2_40_x86_64", + "py312-none-manylinux_2_39_x86_64", + "py312-none-manylinux_2_38_x86_64", + "py312-none-manylinux_2_37_x86_64", + "py312-none-manylinux_2_36_x86_64", + "py312-none-manylinux_2_35_x86_64", + "py312-none-manylinux_2_34_x86_64", + "py312-none-manylinux_2_33_x86_64", + "py312-none-manylinux_2_32_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_41_x86_64", + "py3-none-manylinux_2_40_x86_64", + "py3-none-manylinux_2_39_x86_64", + "py3-none-manylinux_2_38_x86_64", + "py3-none-manylinux_2_37_x86_64", + "py3-none-manylinux_2_36_x86_64", + "py3-none-manylinux_2_35_x86_64", + "py3-none-manylinux_2_34_x86_64", + "py3-none-manylinux_2_33_x86_64", + "py3-none-manylinux_2_32_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", + "cp312-none-any", + "py312-none-any", + "py3-none-any" + ] +} diff --git a/.github/.platforms/linux-x86_64-py313.json b/.github/.platforms/linux-x86_64-py313.json new file mode 100644 index 00000000..02ca85d2 --- /dev/null +++ b/.github/.platforms/linux-x86_64-py313.json @@ -0,0 +1,389 @@ +{ + "marker_environment": { + "implementation_name": "cpython", + "implementation_version": "3.13.11", + "os_name": "posix", + "platform_machine": "x86_64", + "platform_python_implementation": "CPython", + "platform_release": "6.12.54-linuxkit", + "platform_system": "Linux", + "platform_version": "#1 SMP Tue Nov 4 21:21:47 UTC 2025", + "python_full_version": "3.13.11", + "python_version": "3.13", + "sys_platform": "linux" + }, + "compatible_tags": [ + "cp313-cp313-manylinux_2_41_x86_64", + "cp313-cp313-manylinux_2_40_x86_64", + "cp313-cp313-manylinux_2_39_x86_64", + "cp313-cp313-manylinux_2_38_x86_64", + "cp313-cp313-manylinux_2_37_x86_64", + "cp313-cp313-manylinux_2_36_x86_64", + "cp313-cp313-manylinux_2_35_x86_64", + "cp313-cp313-manylinux_2_34_x86_64", + "cp313-cp313-manylinux_2_33_x86_64", + "cp313-cp313-manylinux_2_32_x86_64", + "cp313-cp313-manylinux_2_31_x86_64", + "cp313-cp313-manylinux_2_30_x86_64", + "cp313-cp313-manylinux_2_29_x86_64", + "cp313-cp313-manylinux_2_28_x86_64", + "cp313-cp313-manylinux_2_27_x86_64", + "cp313-cp313-manylinux_2_26_x86_64", + "cp313-cp313-manylinux_2_25_x86_64", + "cp313-cp313-manylinux_2_24_x86_64", + "cp313-cp313-manylinux_2_23_x86_64", + "cp313-cp313-manylinux_2_22_x86_64", + "cp313-cp313-manylinux_2_21_x86_64", + "cp313-cp313-manylinux_2_20_x86_64", + "cp313-cp313-manylinux_2_19_x86_64", + "cp313-cp313-manylinux_2_18_x86_64", + "cp313-cp313-manylinux_2_17_x86_64", + "cp313-cp313-manylinux2014_x86_64", + "cp313-cp313-manylinux_2_16_x86_64", + "cp313-cp313-manylinux_2_15_x86_64", + "cp313-cp313-manylinux_2_14_x86_64", + "cp313-cp313-manylinux_2_13_x86_64", + "cp313-cp313-manylinux_2_12_x86_64", + "cp313-cp313-manylinux2010_x86_64", + "cp313-cp313-manylinux_2_11_x86_64", + "cp313-cp313-manylinux_2_10_x86_64", + "cp313-cp313-manylinux_2_9_x86_64", + "cp313-cp313-manylinux_2_8_x86_64", + "cp313-cp313-manylinux_2_7_x86_64", + "cp313-cp313-manylinux_2_6_x86_64", + "cp313-cp313-manylinux_2_5_x86_64", + "cp313-cp313-manylinux1_x86_64", + "cp313-cp313-linux_x86_64", + "cp313-abi3-manylinux_2_41_x86_64", + "cp313-abi3-manylinux_2_40_x86_64", + "cp313-abi3-manylinux_2_39_x86_64", + "cp313-abi3-manylinux_2_38_x86_64", + "cp313-abi3-manylinux_2_37_x86_64", + "cp313-abi3-manylinux_2_36_x86_64", + "cp313-abi3-manylinux_2_35_x86_64", + "cp313-abi3-manylinux_2_34_x86_64", + "cp313-abi3-manylinux_2_33_x86_64", + "cp313-abi3-manylinux_2_32_x86_64", + "cp313-abi3-manylinux_2_31_x86_64", + "cp313-abi3-manylinux_2_30_x86_64", + "cp313-abi3-manylinux_2_29_x86_64", + "cp313-abi3-manylinux_2_28_x86_64", + "cp313-abi3-manylinux_2_27_x86_64", + "cp313-abi3-manylinux_2_26_x86_64", + "cp313-abi3-manylinux_2_25_x86_64", + "cp313-abi3-manylinux_2_24_x86_64", + "cp313-abi3-manylinux_2_23_x86_64", + "cp313-abi3-manylinux_2_22_x86_64", + "cp313-abi3-manylinux_2_21_x86_64", + "cp313-abi3-manylinux_2_20_x86_64", + "cp313-abi3-manylinux_2_19_x86_64", + "cp313-abi3-manylinux_2_18_x86_64", + "cp313-abi3-manylinux_2_17_x86_64", + "cp313-abi3-manylinux2014_x86_64", + "cp313-abi3-manylinux_2_16_x86_64", + "cp313-abi3-manylinux_2_15_x86_64", + "cp313-abi3-manylinux_2_14_x86_64", + "cp313-abi3-manylinux_2_13_x86_64", + "cp313-abi3-manylinux_2_12_x86_64", + "cp313-abi3-manylinux2010_x86_64", + "cp313-abi3-manylinux_2_11_x86_64", + "cp313-abi3-manylinux_2_10_x86_64", + "cp313-abi3-manylinux_2_9_x86_64", + "cp313-abi3-manylinux_2_8_x86_64", + "cp313-abi3-manylinux_2_7_x86_64", + "cp313-abi3-manylinux_2_6_x86_64", + "cp313-abi3-manylinux_2_5_x86_64", + "cp313-abi3-manylinux1_x86_64", + "cp313-abi3-linux_x86_64", + "cp313-none-manylinux_2_41_x86_64", + "cp313-none-manylinux_2_40_x86_64", + "cp313-none-manylinux_2_39_x86_64", + "cp313-none-manylinux_2_38_x86_64", + "cp313-none-manylinux_2_37_x86_64", + "cp313-none-manylinux_2_36_x86_64", + "cp313-none-manylinux_2_35_x86_64", + "cp313-none-manylinux_2_34_x86_64", + "cp313-none-manylinux_2_33_x86_64", + "cp313-none-manylinux_2_32_x86_64", + "cp313-none-manylinux_2_31_x86_64", + "cp313-none-manylinux_2_30_x86_64", + "cp313-none-manylinux_2_29_x86_64", + "cp313-none-manylinux_2_28_x86_64", + "cp313-none-manylinux_2_27_x86_64", + "cp313-none-manylinux_2_26_x86_64", + "cp313-none-manylinux_2_25_x86_64", + "cp313-none-manylinux_2_24_x86_64", + "cp313-none-manylinux_2_23_x86_64", + "cp313-none-manylinux_2_22_x86_64", + "cp313-none-manylinux_2_21_x86_64", + "cp313-none-manylinux_2_20_x86_64", + "cp313-none-manylinux_2_19_x86_64", + "cp313-none-manylinux_2_18_x86_64", + "cp313-none-manylinux_2_17_x86_64", + "cp313-none-manylinux2014_x86_64", + "cp313-none-manylinux_2_16_x86_64", + "cp313-none-manylinux_2_15_x86_64", + "cp313-none-manylinux_2_14_x86_64", + "cp313-none-manylinux_2_13_x86_64", + "cp313-none-manylinux_2_12_x86_64", + "cp313-none-manylinux2010_x86_64", + "cp313-none-manylinux_2_11_x86_64", + "cp313-none-manylinux_2_10_x86_64", + "cp313-none-manylinux_2_9_x86_64", + "cp313-none-manylinux_2_8_x86_64", + "cp313-none-manylinux_2_7_x86_64", + "cp313-none-manylinux_2_6_x86_64", + "cp313-none-manylinux_2_5_x86_64", + "cp313-none-manylinux1_x86_64", + "cp313-none-linux_x86_64", + "cp310-abi3-manylinux_2_41_x86_64", + "cp310-abi3-manylinux_2_40_x86_64", + "cp310-abi3-manylinux_2_39_x86_64", + "cp310-abi3-manylinux_2_38_x86_64", + "cp310-abi3-manylinux_2_37_x86_64", + "cp310-abi3-manylinux_2_36_x86_64", + "cp310-abi3-manylinux_2_35_x86_64", + "cp310-abi3-manylinux_2_34_x86_64", + "cp310-abi3-manylinux_2_33_x86_64", + "cp310-abi3-manylinux_2_32_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_41_x86_64", + "cp39-abi3-manylinux_2_40_x86_64", + "cp39-abi3-manylinux_2_39_x86_64", + "cp39-abi3-manylinux_2_38_x86_64", + "cp39-abi3-manylinux_2_37_x86_64", + "cp39-abi3-manylinux_2_36_x86_64", + "cp39-abi3-manylinux_2_35_x86_64", + "cp39-abi3-manylinux_2_34_x86_64", + "cp39-abi3-manylinux_2_33_x86_64", + "cp39-abi3-manylinux_2_32_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_41_x86_64", + "cp38-abi3-manylinux_2_40_x86_64", + "cp38-abi3-manylinux_2_39_x86_64", + "cp38-abi3-manylinux_2_38_x86_64", + "cp38-abi3-manylinux_2_37_x86_64", + "cp38-abi3-manylinux_2_36_x86_64", + "cp38-abi3-manylinux_2_35_x86_64", + "cp38-abi3-manylinux_2_34_x86_64", + "cp38-abi3-manylinux_2_33_x86_64", + "cp38-abi3-manylinux_2_32_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_41_x86_64", + "cp37-abi3-manylinux_2_40_x86_64", + "cp37-abi3-manylinux_2_39_x86_64", + "cp37-abi3-manylinux_2_38_x86_64", + "cp37-abi3-manylinux_2_37_x86_64", + "cp37-abi3-manylinux_2_36_x86_64", + "cp37-abi3-manylinux_2_35_x86_64", + "cp37-abi3-manylinux_2_34_x86_64", + "cp37-abi3-manylinux_2_33_x86_64", + "cp37-abi3-manylinux_2_32_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", + "py313-none-manylinux_2_41_x86_64", + "py313-none-manylinux_2_40_x86_64", + "py313-none-manylinux_2_39_x86_64", + "py313-none-manylinux_2_38_x86_64", + "py313-none-manylinux_2_37_x86_64", + "py313-none-manylinux_2_36_x86_64", + "py313-none-manylinux_2_35_x86_64", + "py313-none-manylinux_2_34_x86_64", + "py313-none-manylinux_2_33_x86_64", + "py313-none-manylinux_2_32_x86_64", + "py313-none-manylinux_2_31_x86_64", + "py313-none-manylinux_2_30_x86_64", + "py313-none-manylinux_2_29_x86_64", + "py313-none-manylinux_2_28_x86_64", + "py313-none-manylinux_2_27_x86_64", + "py313-none-manylinux_2_26_x86_64", + "py313-none-manylinux_2_25_x86_64", + "py313-none-manylinux_2_24_x86_64", + "py313-none-manylinux_2_23_x86_64", + "py313-none-manylinux_2_22_x86_64", + "py313-none-manylinux_2_21_x86_64", + "py313-none-manylinux_2_20_x86_64", + "py313-none-manylinux_2_19_x86_64", + "py313-none-manylinux_2_18_x86_64", + "py313-none-manylinux_2_17_x86_64", + "py313-none-manylinux2014_x86_64", + "py313-none-manylinux_2_16_x86_64", + "py313-none-manylinux_2_15_x86_64", + "py313-none-manylinux_2_14_x86_64", + "py313-none-manylinux_2_13_x86_64", + "py313-none-manylinux_2_12_x86_64", + "py313-none-manylinux2010_x86_64", + "py313-none-manylinux_2_11_x86_64", + "py313-none-manylinux_2_10_x86_64", + "py313-none-manylinux_2_9_x86_64", + "py313-none-manylinux_2_8_x86_64", + "py313-none-manylinux_2_7_x86_64", + "py313-none-manylinux_2_6_x86_64", + "py313-none-manylinux_2_5_x86_64", + "py313-none-manylinux1_x86_64", + "py313-none-linux_x86_64", + "py3-none-manylinux_2_41_x86_64", + "py3-none-manylinux_2_40_x86_64", + "py3-none-manylinux_2_39_x86_64", + "py3-none-manylinux_2_38_x86_64", + "py3-none-manylinux_2_37_x86_64", + "py3-none-manylinux_2_36_x86_64", + "py3-none-manylinux_2_35_x86_64", + "py3-none-manylinux_2_34_x86_64", + "py3-none-manylinux_2_33_x86_64", + "py3-none-manylinux_2_32_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", + "cp313-none-any", + "py313-none-any", + "py3-none-any" + ] +} diff --git a/.github/.platforms/linux-x86_64-py314.json b/.github/.platforms/linux-x86_64-py314.json new file mode 100644 index 00000000..080b3a2e --- /dev/null +++ b/.github/.platforms/linux-x86_64-py314.json @@ -0,0 +1,389 @@ +{ + "marker_environment": { + "implementation_name": "cpython", + "implementation_version": "3.14.2", + "os_name": "posix", + "platform_machine": "x86_64", + "platform_python_implementation": "CPython", + "platform_release": "6.12.54-linuxkit", + "platform_system": "Linux", + "platform_version": "#1 SMP Tue Nov 4 21:21:47 UTC 2025", + "python_full_version": "3.14.2", + "python_version": "3.14", + "sys_platform": "linux" + }, + "compatible_tags": [ + "cp314-cp314-manylinux_2_41_x86_64", + "cp314-cp314-manylinux_2_40_x86_64", + "cp314-cp314-manylinux_2_39_x86_64", + "cp314-cp314-manylinux_2_38_x86_64", + "cp314-cp314-manylinux_2_37_x86_64", + "cp314-cp314-manylinux_2_36_x86_64", + "cp314-cp314-manylinux_2_35_x86_64", + "cp314-cp314-manylinux_2_34_x86_64", + "cp314-cp314-manylinux_2_33_x86_64", + "cp314-cp314-manylinux_2_32_x86_64", + "cp314-cp314-manylinux_2_31_x86_64", + "cp314-cp314-manylinux_2_30_x86_64", + "cp314-cp314-manylinux_2_29_x86_64", + "cp314-cp314-manylinux_2_28_x86_64", + "cp314-cp314-manylinux_2_27_x86_64", + "cp314-cp314-manylinux_2_26_x86_64", + "cp314-cp314-manylinux_2_25_x86_64", + "cp314-cp314-manylinux_2_24_x86_64", + "cp314-cp314-manylinux_2_23_x86_64", + "cp314-cp314-manylinux_2_22_x86_64", + "cp314-cp314-manylinux_2_21_x86_64", + "cp314-cp314-manylinux_2_20_x86_64", + "cp314-cp314-manylinux_2_19_x86_64", + "cp314-cp314-manylinux_2_18_x86_64", + "cp314-cp314-manylinux_2_17_x86_64", + "cp314-cp314-manylinux2014_x86_64", + "cp314-cp314-manylinux_2_16_x86_64", + "cp314-cp314-manylinux_2_15_x86_64", + "cp314-cp314-manylinux_2_14_x86_64", + "cp314-cp314-manylinux_2_13_x86_64", + "cp314-cp314-manylinux_2_12_x86_64", + "cp314-cp314-manylinux2010_x86_64", + "cp314-cp314-manylinux_2_11_x86_64", + "cp314-cp314-manylinux_2_10_x86_64", + "cp314-cp314-manylinux_2_9_x86_64", + "cp314-cp314-manylinux_2_8_x86_64", + "cp314-cp314-manylinux_2_7_x86_64", + "cp314-cp314-manylinux_2_6_x86_64", + "cp314-cp314-manylinux_2_5_x86_64", + "cp314-cp314-manylinux1_x86_64", + "cp314-cp314-linux_x86_64", + "cp314-abi3-manylinux_2_41_x86_64", + "cp314-abi3-manylinux_2_40_x86_64", + "cp314-abi3-manylinux_2_39_x86_64", + "cp314-abi3-manylinux_2_38_x86_64", + "cp314-abi3-manylinux_2_37_x86_64", + "cp314-abi3-manylinux_2_36_x86_64", + "cp314-abi3-manylinux_2_35_x86_64", + "cp314-abi3-manylinux_2_34_x86_64", + "cp314-abi3-manylinux_2_33_x86_64", + "cp314-abi3-manylinux_2_32_x86_64", + "cp314-abi3-manylinux_2_31_x86_64", + "cp314-abi3-manylinux_2_30_x86_64", + "cp314-abi3-manylinux_2_29_x86_64", + "cp314-abi3-manylinux_2_28_x86_64", + "cp314-abi3-manylinux_2_27_x86_64", + "cp314-abi3-manylinux_2_26_x86_64", + "cp314-abi3-manylinux_2_25_x86_64", + "cp314-abi3-manylinux_2_24_x86_64", + "cp314-abi3-manylinux_2_23_x86_64", + "cp314-abi3-manylinux_2_22_x86_64", + "cp314-abi3-manylinux_2_21_x86_64", + "cp314-abi3-manylinux_2_20_x86_64", + "cp314-abi3-manylinux_2_19_x86_64", + "cp314-abi3-manylinux_2_18_x86_64", + "cp314-abi3-manylinux_2_17_x86_64", + "cp314-abi3-manylinux2014_x86_64", + "cp314-abi3-manylinux_2_16_x86_64", + "cp314-abi3-manylinux_2_15_x86_64", + "cp314-abi3-manylinux_2_14_x86_64", + "cp314-abi3-manylinux_2_13_x86_64", + "cp314-abi3-manylinux_2_12_x86_64", + "cp314-abi3-manylinux2010_x86_64", + "cp314-abi3-manylinux_2_11_x86_64", + "cp314-abi3-manylinux_2_10_x86_64", + "cp314-abi3-manylinux_2_9_x86_64", + "cp314-abi3-manylinux_2_8_x86_64", + "cp314-abi3-manylinux_2_7_x86_64", + "cp314-abi3-manylinux_2_6_x86_64", + "cp314-abi3-manylinux_2_5_x86_64", + "cp314-abi3-manylinux1_x86_64", + "cp314-abi3-linux_x86_64", + "cp314-none-manylinux_2_41_x86_64", + "cp314-none-manylinux_2_40_x86_64", + "cp314-none-manylinux_2_39_x86_64", + "cp314-none-manylinux_2_38_x86_64", + "cp314-none-manylinux_2_37_x86_64", + "cp314-none-manylinux_2_36_x86_64", + "cp314-none-manylinux_2_35_x86_64", + "cp314-none-manylinux_2_34_x86_64", + "cp314-none-manylinux_2_33_x86_64", + "cp314-none-manylinux_2_32_x86_64", + "cp314-none-manylinux_2_31_x86_64", + "cp314-none-manylinux_2_30_x86_64", + "cp314-none-manylinux_2_29_x86_64", + "cp314-none-manylinux_2_28_x86_64", + "cp314-none-manylinux_2_27_x86_64", + "cp314-none-manylinux_2_26_x86_64", + "cp314-none-manylinux_2_25_x86_64", + "cp314-none-manylinux_2_24_x86_64", + "cp314-none-manylinux_2_23_x86_64", + "cp314-none-manylinux_2_22_x86_64", + "cp314-none-manylinux_2_21_x86_64", + "cp314-none-manylinux_2_20_x86_64", + "cp314-none-manylinux_2_19_x86_64", + "cp314-none-manylinux_2_18_x86_64", + "cp314-none-manylinux_2_17_x86_64", + "cp314-none-manylinux2014_x86_64", + "cp314-none-manylinux_2_16_x86_64", + "cp314-none-manylinux_2_15_x86_64", + "cp314-none-manylinux_2_14_x86_64", + "cp314-none-manylinux_2_13_x86_64", + "cp314-none-manylinux_2_12_x86_64", + "cp314-none-manylinux2010_x86_64", + "cp314-none-manylinux_2_11_x86_64", + "cp314-none-manylinux_2_10_x86_64", + "cp314-none-manylinux_2_9_x86_64", + "cp314-none-manylinux_2_8_x86_64", + "cp314-none-manylinux_2_7_x86_64", + "cp314-none-manylinux_2_6_x86_64", + "cp314-none-manylinux_2_5_x86_64", + "cp314-none-manylinux1_x86_64", + "cp314-none-linux_x86_64", + "cp310-abi3-manylinux_2_41_x86_64", + "cp310-abi3-manylinux_2_40_x86_64", + "cp310-abi3-manylinux_2_39_x86_64", + "cp310-abi3-manylinux_2_38_x86_64", + "cp310-abi3-manylinux_2_37_x86_64", + "cp310-abi3-manylinux_2_36_x86_64", + "cp310-abi3-manylinux_2_35_x86_64", + "cp310-abi3-manylinux_2_34_x86_64", + "cp310-abi3-manylinux_2_33_x86_64", + "cp310-abi3-manylinux_2_32_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_41_x86_64", + "cp39-abi3-manylinux_2_40_x86_64", + "cp39-abi3-manylinux_2_39_x86_64", + "cp39-abi3-manylinux_2_38_x86_64", + "cp39-abi3-manylinux_2_37_x86_64", + "cp39-abi3-manylinux_2_36_x86_64", + "cp39-abi3-manylinux_2_35_x86_64", + "cp39-abi3-manylinux_2_34_x86_64", + "cp39-abi3-manylinux_2_33_x86_64", + "cp39-abi3-manylinux_2_32_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_41_x86_64", + "cp38-abi3-manylinux_2_40_x86_64", + "cp38-abi3-manylinux_2_39_x86_64", + "cp38-abi3-manylinux_2_38_x86_64", + "cp38-abi3-manylinux_2_37_x86_64", + "cp38-abi3-manylinux_2_36_x86_64", + "cp38-abi3-manylinux_2_35_x86_64", + "cp38-abi3-manylinux_2_34_x86_64", + "cp38-abi3-manylinux_2_33_x86_64", + "cp38-abi3-manylinux_2_32_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_41_x86_64", + "cp37-abi3-manylinux_2_40_x86_64", + "cp37-abi3-manylinux_2_39_x86_64", + "cp37-abi3-manylinux_2_38_x86_64", + "cp37-abi3-manylinux_2_37_x86_64", + "cp37-abi3-manylinux_2_36_x86_64", + "cp37-abi3-manylinux_2_35_x86_64", + "cp37-abi3-manylinux_2_34_x86_64", + "cp37-abi3-manylinux_2_33_x86_64", + "cp37-abi3-manylinux_2_32_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", + "py314-none-manylinux_2_41_x86_64", + "py314-none-manylinux_2_40_x86_64", + "py314-none-manylinux_2_39_x86_64", + "py314-none-manylinux_2_38_x86_64", + "py314-none-manylinux_2_37_x86_64", + "py314-none-manylinux_2_36_x86_64", + "py314-none-manylinux_2_35_x86_64", + "py314-none-manylinux_2_34_x86_64", + "py314-none-manylinux_2_33_x86_64", + "py314-none-manylinux_2_32_x86_64", + "py314-none-manylinux_2_31_x86_64", + "py314-none-manylinux_2_30_x86_64", + "py314-none-manylinux_2_29_x86_64", + "py314-none-manylinux_2_28_x86_64", + "py314-none-manylinux_2_27_x86_64", + "py314-none-manylinux_2_26_x86_64", + "py314-none-manylinux_2_25_x86_64", + "py314-none-manylinux_2_24_x86_64", + "py314-none-manylinux_2_23_x86_64", + "py314-none-manylinux_2_22_x86_64", + "py314-none-manylinux_2_21_x86_64", + "py314-none-manylinux_2_20_x86_64", + "py314-none-manylinux_2_19_x86_64", + "py314-none-manylinux_2_18_x86_64", + "py314-none-manylinux_2_17_x86_64", + "py314-none-manylinux2014_x86_64", + "py314-none-manylinux_2_16_x86_64", + "py314-none-manylinux_2_15_x86_64", + "py314-none-manylinux_2_14_x86_64", + "py314-none-manylinux_2_13_x86_64", + "py314-none-manylinux_2_12_x86_64", + "py314-none-manylinux2010_x86_64", + "py314-none-manylinux_2_11_x86_64", + "py314-none-manylinux_2_10_x86_64", + "py314-none-manylinux_2_9_x86_64", + "py314-none-manylinux_2_8_x86_64", + "py314-none-manylinux_2_7_x86_64", + "py314-none-manylinux_2_6_x86_64", + "py314-none-manylinux_2_5_x86_64", + "py314-none-manylinux1_x86_64", + "py314-none-linux_x86_64", + "py3-none-manylinux_2_41_x86_64", + "py3-none-manylinux_2_40_x86_64", + "py3-none-manylinux_2_39_x86_64", + "py3-none-manylinux_2_38_x86_64", + "py3-none-manylinux_2_37_x86_64", + "py3-none-manylinux_2_36_x86_64", + "py3-none-manylinux_2_35_x86_64", + "py3-none-manylinux_2_34_x86_64", + "py3-none-manylinux_2_33_x86_64", + "py3-none-manylinux_2_32_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", + "cp314-none-any", + "py314-none-any", + "py3-none-any" + ] +} diff --git a/.github/.platforms/macos-arm64-py310.json b/.github/.platforms/macos-arm64-py310.json new file mode 100644 index 00000000..904ad36f --- /dev/null +++ b/.github/.platforms/macos-arm64-py310.json @@ -0,0 +1,380 @@ +{ + "marker_environment": { + "implementation_name": "cpython", + "implementation_version": "3.10.19", + "os_name": "posix", + "platform_machine": "arm64", + "platform_python_implementation": "CPython", + "platform_release": "25.1.0", + "platform_system": "Darwin", + "platform_version": "Darwin Kernel Version 25.1.0: Mon Oct 20 19:30:01 PDT 2025; root:xnu-12377.41.6~2/RELEASE_ARM64_T6031", + "python_full_version": "3.10.19", + "python_version": "3.10", + "sys_platform": "darwin" + }, + "compatible_tags": [ + "cp310-cp310-macosx_26_0_arm64", + "cp310-cp310-macosx_26_0_universal2", + "cp310-cp310-macosx_25_0_arm64", + "cp310-cp310-macosx_25_0_universal2", + "cp310-cp310-macosx_24_0_arm64", + "cp310-cp310-macosx_24_0_universal2", + "cp310-cp310-macosx_23_0_arm64", + "cp310-cp310-macosx_23_0_universal2", + "cp310-cp310-macosx_22_0_arm64", + "cp310-cp310-macosx_22_0_universal2", + "cp310-cp310-macosx_21_0_arm64", + "cp310-cp310-macosx_21_0_universal2", + "cp310-cp310-macosx_20_0_arm64", + "cp310-cp310-macosx_20_0_universal2", + "cp310-cp310-macosx_19_0_arm64", + "cp310-cp310-macosx_19_0_universal2", + "cp310-cp310-macosx_18_0_arm64", + "cp310-cp310-macosx_18_0_universal2", + "cp310-cp310-macosx_17_0_arm64", + "cp310-cp310-macosx_17_0_universal2", + "cp310-cp310-macosx_16_0_arm64", + "cp310-cp310-macosx_16_0_universal2", + "cp310-cp310-macosx_15_0_arm64", + "cp310-cp310-macosx_15_0_universal2", + "cp310-cp310-macosx_14_0_arm64", + "cp310-cp310-macosx_14_0_universal2", + "cp310-cp310-macosx_13_0_arm64", + "cp310-cp310-macosx_13_0_universal2", + "cp310-cp310-macosx_12_0_arm64", + "cp310-cp310-macosx_12_0_universal2", + "cp310-cp310-macosx_11_0_arm64", + "cp310-cp310-macosx_11_0_universal2", + "cp310-cp310-macosx_10_16_universal2", + "cp310-cp310-macosx_10_15_universal2", + "cp310-cp310-macosx_10_14_universal2", + "cp310-cp310-macosx_10_13_universal2", + "cp310-cp310-macosx_10_12_universal2", + "cp310-cp310-macosx_10_11_universal2", + "cp310-cp310-macosx_10_10_universal2", + "cp310-cp310-macosx_10_9_universal2", + "cp310-cp310-macosx_10_8_universal2", + "cp310-cp310-macosx_10_7_universal2", + "cp310-cp310-macosx_10_6_universal2", + "cp310-cp310-macosx_10_5_universal2", + "cp310-cp310-macosx_10_4_universal2", + "cp310-abi3-macosx_26_0_arm64", + "cp310-abi3-macosx_26_0_universal2", + "cp310-abi3-macosx_25_0_arm64", + "cp310-abi3-macosx_25_0_universal2", + "cp310-abi3-macosx_24_0_arm64", + "cp310-abi3-macosx_24_0_universal2", + "cp310-abi3-macosx_23_0_arm64", + "cp310-abi3-macosx_23_0_universal2", + "cp310-abi3-macosx_22_0_arm64", + "cp310-abi3-macosx_22_0_universal2", + "cp310-abi3-macosx_21_0_arm64", + "cp310-abi3-macosx_21_0_universal2", + "cp310-abi3-macosx_20_0_arm64", + "cp310-abi3-macosx_20_0_universal2", + "cp310-abi3-macosx_19_0_arm64", + "cp310-abi3-macosx_19_0_universal2", + "cp310-abi3-macosx_18_0_arm64", + "cp310-abi3-macosx_18_0_universal2", + "cp310-abi3-macosx_17_0_arm64", + "cp310-abi3-macosx_17_0_universal2", + "cp310-abi3-macosx_16_0_arm64", + "cp310-abi3-macosx_16_0_universal2", + "cp310-abi3-macosx_15_0_arm64", + "cp310-abi3-macosx_15_0_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", + "cp310-none-macosx_26_0_arm64", + "cp310-none-macosx_26_0_universal2", + "cp310-none-macosx_25_0_arm64", + "cp310-none-macosx_25_0_universal2", + "cp310-none-macosx_24_0_arm64", + "cp310-none-macosx_24_0_universal2", + "cp310-none-macosx_23_0_arm64", + "cp310-none-macosx_23_0_universal2", + "cp310-none-macosx_22_0_arm64", + "cp310-none-macosx_22_0_universal2", + "cp310-none-macosx_21_0_arm64", + "cp310-none-macosx_21_0_universal2", + "cp310-none-macosx_20_0_arm64", + "cp310-none-macosx_20_0_universal2", + "cp310-none-macosx_19_0_arm64", + "cp310-none-macosx_19_0_universal2", + "cp310-none-macosx_18_0_arm64", + "cp310-none-macosx_18_0_universal2", + "cp310-none-macosx_17_0_arm64", + "cp310-none-macosx_17_0_universal2", + "cp310-none-macosx_16_0_arm64", + "cp310-none-macosx_16_0_universal2", + "cp310-none-macosx_15_0_arm64", + "cp310-none-macosx_15_0_universal2", + "cp310-none-macosx_14_0_arm64", + "cp310-none-macosx_14_0_universal2", + "cp310-none-macosx_13_0_arm64", + "cp310-none-macosx_13_0_universal2", + "cp310-none-macosx_12_0_arm64", + "cp310-none-macosx_12_0_universal2", + "cp310-none-macosx_11_0_arm64", + "cp310-none-macosx_11_0_universal2", + "cp310-none-macosx_10_16_universal2", + "cp310-none-macosx_10_15_universal2", + "cp310-none-macosx_10_14_universal2", + "cp310-none-macosx_10_13_universal2", + "cp310-none-macosx_10_12_universal2", + "cp310-none-macosx_10_11_universal2", + "cp310-none-macosx_10_10_universal2", + "cp310-none-macosx_10_9_universal2", + "cp310-none-macosx_10_8_universal2", + "cp310-none-macosx_10_7_universal2", + "cp310-none-macosx_10_6_universal2", + "cp310-none-macosx_10_5_universal2", + "cp310-none-macosx_10_4_universal2", + "cp39-abi3-macosx_26_0_arm64", + "cp39-abi3-macosx_26_0_universal2", + "cp39-abi3-macosx_25_0_arm64", + "cp39-abi3-macosx_25_0_universal2", + "cp39-abi3-macosx_24_0_arm64", + "cp39-abi3-macosx_24_0_universal2", + "cp39-abi3-macosx_23_0_arm64", + "cp39-abi3-macosx_23_0_universal2", + "cp39-abi3-macosx_22_0_arm64", + "cp39-abi3-macosx_22_0_universal2", + "cp39-abi3-macosx_21_0_arm64", + "cp39-abi3-macosx_21_0_universal2", + "cp39-abi3-macosx_20_0_arm64", + "cp39-abi3-macosx_20_0_universal2", + "cp39-abi3-macosx_19_0_arm64", + "cp39-abi3-macosx_19_0_universal2", + "cp39-abi3-macosx_18_0_arm64", + "cp39-abi3-macosx_18_0_universal2", + "cp39-abi3-macosx_17_0_arm64", + "cp39-abi3-macosx_17_0_universal2", + "cp39-abi3-macosx_16_0_arm64", + "cp39-abi3-macosx_16_0_universal2", + "cp39-abi3-macosx_15_0_arm64", + "cp39-abi3-macosx_15_0_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_26_0_arm64", + "cp38-abi3-macosx_26_0_universal2", + "cp38-abi3-macosx_25_0_arm64", + "cp38-abi3-macosx_25_0_universal2", + "cp38-abi3-macosx_24_0_arm64", + "cp38-abi3-macosx_24_0_universal2", + "cp38-abi3-macosx_23_0_arm64", + "cp38-abi3-macosx_23_0_universal2", + "cp38-abi3-macosx_22_0_arm64", + "cp38-abi3-macosx_22_0_universal2", + "cp38-abi3-macosx_21_0_arm64", + "cp38-abi3-macosx_21_0_universal2", + "cp38-abi3-macosx_20_0_arm64", + "cp38-abi3-macosx_20_0_universal2", + "cp38-abi3-macosx_19_0_arm64", + "cp38-abi3-macosx_19_0_universal2", + "cp38-abi3-macosx_18_0_arm64", + "cp38-abi3-macosx_18_0_universal2", + "cp38-abi3-macosx_17_0_arm64", + "cp38-abi3-macosx_17_0_universal2", + "cp38-abi3-macosx_16_0_arm64", + "cp38-abi3-macosx_16_0_universal2", + "cp38-abi3-macosx_15_0_arm64", + "cp38-abi3-macosx_15_0_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_26_0_arm64", + "cp37-abi3-macosx_26_0_universal2", + "cp37-abi3-macosx_25_0_arm64", + "cp37-abi3-macosx_25_0_universal2", + "cp37-abi3-macosx_24_0_arm64", + "cp37-abi3-macosx_24_0_universal2", + "cp37-abi3-macosx_23_0_arm64", + "cp37-abi3-macosx_23_0_universal2", + "cp37-abi3-macosx_22_0_arm64", + "cp37-abi3-macosx_22_0_universal2", + "cp37-abi3-macosx_21_0_arm64", + "cp37-abi3-macosx_21_0_universal2", + "cp37-abi3-macosx_20_0_arm64", + "cp37-abi3-macosx_20_0_universal2", + "cp37-abi3-macosx_19_0_arm64", + "cp37-abi3-macosx_19_0_universal2", + "cp37-abi3-macosx_18_0_arm64", + "cp37-abi3-macosx_18_0_universal2", + "cp37-abi3-macosx_17_0_arm64", + "cp37-abi3-macosx_17_0_universal2", + "cp37-abi3-macosx_16_0_arm64", + "cp37-abi3-macosx_16_0_universal2", + "cp37-abi3-macosx_15_0_arm64", + "cp37-abi3-macosx_15_0_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", + "py310-none-macosx_26_0_arm64", + "py310-none-macosx_26_0_universal2", + "py310-none-macosx_25_0_arm64", + "py310-none-macosx_25_0_universal2", + "py310-none-macosx_24_0_arm64", + "py310-none-macosx_24_0_universal2", + "py310-none-macosx_23_0_arm64", + "py310-none-macosx_23_0_universal2", + "py310-none-macosx_22_0_arm64", + "py310-none-macosx_22_0_universal2", + "py310-none-macosx_21_0_arm64", + "py310-none-macosx_21_0_universal2", + "py310-none-macosx_20_0_arm64", + "py310-none-macosx_20_0_universal2", + "py310-none-macosx_19_0_arm64", + "py310-none-macosx_19_0_universal2", + "py310-none-macosx_18_0_arm64", + "py310-none-macosx_18_0_universal2", + "py310-none-macosx_17_0_arm64", + "py310-none-macosx_17_0_universal2", + "py310-none-macosx_16_0_arm64", + "py310-none-macosx_16_0_universal2", + "py310-none-macosx_15_0_arm64", + "py310-none-macosx_15_0_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", + "py3-none-macosx_26_0_arm64", + "py3-none-macosx_26_0_universal2", + "py3-none-macosx_25_0_arm64", + "py3-none-macosx_25_0_universal2", + "py3-none-macosx_24_0_arm64", + "py3-none-macosx_24_0_universal2", + "py3-none-macosx_23_0_arm64", + "py3-none-macosx_23_0_universal2", + "py3-none-macosx_22_0_arm64", + "py3-none-macosx_22_0_universal2", + "py3-none-macosx_21_0_arm64", + "py3-none-macosx_21_0_universal2", + "py3-none-macosx_20_0_arm64", + "py3-none-macosx_20_0_universal2", + "py3-none-macosx_19_0_arm64", + "py3-none-macosx_19_0_universal2", + "py3-none-macosx_18_0_arm64", + "py3-none-macosx_18_0_universal2", + "py3-none-macosx_17_0_arm64", + "py3-none-macosx_17_0_universal2", + "py3-none-macosx_16_0_arm64", + "py3-none-macosx_16_0_universal2", + "py3-none-macosx_15_0_arm64", + "py3-none-macosx_15_0_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", + "cp310-none-any", + "py310-none-any", + "py3-none-any" + ] +} diff --git a/.github/.platforms/macos-arm64-py311.json b/.github/.platforms/macos-arm64-py311.json new file mode 100644 index 00000000..857fcd3b --- /dev/null +++ b/.github/.platforms/macos-arm64-py311.json @@ -0,0 +1,425 @@ +{ + "marker_environment": { + "implementation_name": "cpython", + "implementation_version": "3.11.14", + "os_name": "posix", + "platform_machine": "arm64", + "platform_python_implementation": "CPython", + "platform_release": "25.1.0", + "platform_system": "Darwin", + "platform_version": "Darwin Kernel Version 25.1.0: Mon Oct 20 19:30:01 PDT 2025; root:xnu-12377.41.6~2/RELEASE_ARM64_T6031", + "python_full_version": "3.11.14", + "python_version": "3.11", + "sys_platform": "darwin" + }, + "compatible_tags": [ + "cp311-cp311-macosx_26_0_arm64", + "cp311-cp311-macosx_26_0_universal2", + "cp311-cp311-macosx_25_0_arm64", + "cp311-cp311-macosx_25_0_universal2", + "cp311-cp311-macosx_24_0_arm64", + "cp311-cp311-macosx_24_0_universal2", + "cp311-cp311-macosx_23_0_arm64", + "cp311-cp311-macosx_23_0_universal2", + "cp311-cp311-macosx_22_0_arm64", + "cp311-cp311-macosx_22_0_universal2", + "cp311-cp311-macosx_21_0_arm64", + "cp311-cp311-macosx_21_0_universal2", + "cp311-cp311-macosx_20_0_arm64", + "cp311-cp311-macosx_20_0_universal2", + "cp311-cp311-macosx_19_0_arm64", + "cp311-cp311-macosx_19_0_universal2", + "cp311-cp311-macosx_18_0_arm64", + "cp311-cp311-macosx_18_0_universal2", + "cp311-cp311-macosx_17_0_arm64", + "cp311-cp311-macosx_17_0_universal2", + "cp311-cp311-macosx_16_0_arm64", + "cp311-cp311-macosx_16_0_universal2", + "cp311-cp311-macosx_15_0_arm64", + "cp311-cp311-macosx_15_0_universal2", + "cp311-cp311-macosx_14_0_arm64", + "cp311-cp311-macosx_14_0_universal2", + "cp311-cp311-macosx_13_0_arm64", + "cp311-cp311-macosx_13_0_universal2", + "cp311-cp311-macosx_12_0_arm64", + "cp311-cp311-macosx_12_0_universal2", + "cp311-cp311-macosx_11_0_arm64", + "cp311-cp311-macosx_11_0_universal2", + "cp311-cp311-macosx_10_16_universal2", + "cp311-cp311-macosx_10_15_universal2", + "cp311-cp311-macosx_10_14_universal2", + "cp311-cp311-macosx_10_13_universal2", + "cp311-cp311-macosx_10_12_universal2", + "cp311-cp311-macosx_10_11_universal2", + "cp311-cp311-macosx_10_10_universal2", + "cp311-cp311-macosx_10_9_universal2", + "cp311-cp311-macosx_10_8_universal2", + "cp311-cp311-macosx_10_7_universal2", + "cp311-cp311-macosx_10_6_universal2", + "cp311-cp311-macosx_10_5_universal2", + "cp311-cp311-macosx_10_4_universal2", + "cp311-abi3-macosx_26_0_arm64", + "cp311-abi3-macosx_26_0_universal2", + "cp311-abi3-macosx_25_0_arm64", + "cp311-abi3-macosx_25_0_universal2", + "cp311-abi3-macosx_24_0_arm64", + "cp311-abi3-macosx_24_0_universal2", + "cp311-abi3-macosx_23_0_arm64", + "cp311-abi3-macosx_23_0_universal2", + "cp311-abi3-macosx_22_0_arm64", + "cp311-abi3-macosx_22_0_universal2", + "cp311-abi3-macosx_21_0_arm64", + "cp311-abi3-macosx_21_0_universal2", + "cp311-abi3-macosx_20_0_arm64", + "cp311-abi3-macosx_20_0_universal2", + "cp311-abi3-macosx_19_0_arm64", + "cp311-abi3-macosx_19_0_universal2", + "cp311-abi3-macosx_18_0_arm64", + "cp311-abi3-macosx_18_0_universal2", + "cp311-abi3-macosx_17_0_arm64", + "cp311-abi3-macosx_17_0_universal2", + "cp311-abi3-macosx_16_0_arm64", + "cp311-abi3-macosx_16_0_universal2", + "cp311-abi3-macosx_15_0_arm64", + "cp311-abi3-macosx_15_0_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", + "cp311-none-macosx_26_0_arm64", + "cp311-none-macosx_26_0_universal2", + "cp311-none-macosx_25_0_arm64", + "cp311-none-macosx_25_0_universal2", + "cp311-none-macosx_24_0_arm64", + "cp311-none-macosx_24_0_universal2", + "cp311-none-macosx_23_0_arm64", + "cp311-none-macosx_23_0_universal2", + "cp311-none-macosx_22_0_arm64", + "cp311-none-macosx_22_0_universal2", + "cp311-none-macosx_21_0_arm64", + "cp311-none-macosx_21_0_universal2", + "cp311-none-macosx_20_0_arm64", + "cp311-none-macosx_20_0_universal2", + "cp311-none-macosx_19_0_arm64", + "cp311-none-macosx_19_0_universal2", + "cp311-none-macosx_18_0_arm64", + "cp311-none-macosx_18_0_universal2", + "cp311-none-macosx_17_0_arm64", + "cp311-none-macosx_17_0_universal2", + "cp311-none-macosx_16_0_arm64", + "cp311-none-macosx_16_0_universal2", + "cp311-none-macosx_15_0_arm64", + "cp311-none-macosx_15_0_universal2", + "cp311-none-macosx_14_0_arm64", + "cp311-none-macosx_14_0_universal2", + "cp311-none-macosx_13_0_arm64", + "cp311-none-macosx_13_0_universal2", + "cp311-none-macosx_12_0_arm64", + "cp311-none-macosx_12_0_universal2", + "cp311-none-macosx_11_0_arm64", + "cp311-none-macosx_11_0_universal2", + "cp311-none-macosx_10_16_universal2", + "cp311-none-macosx_10_15_universal2", + "cp311-none-macosx_10_14_universal2", + "cp311-none-macosx_10_13_universal2", + "cp311-none-macosx_10_12_universal2", + "cp311-none-macosx_10_11_universal2", + "cp311-none-macosx_10_10_universal2", + "cp311-none-macosx_10_9_universal2", + "cp311-none-macosx_10_8_universal2", + "cp311-none-macosx_10_7_universal2", + "cp311-none-macosx_10_6_universal2", + "cp311-none-macosx_10_5_universal2", + "cp311-none-macosx_10_4_universal2", + "cp310-abi3-macosx_26_0_arm64", + "cp310-abi3-macosx_26_0_universal2", + "cp310-abi3-macosx_25_0_arm64", + "cp310-abi3-macosx_25_0_universal2", + "cp310-abi3-macosx_24_0_arm64", + "cp310-abi3-macosx_24_0_universal2", + "cp310-abi3-macosx_23_0_arm64", + "cp310-abi3-macosx_23_0_universal2", + "cp310-abi3-macosx_22_0_arm64", + "cp310-abi3-macosx_22_0_universal2", + "cp310-abi3-macosx_21_0_arm64", + "cp310-abi3-macosx_21_0_universal2", + "cp310-abi3-macosx_20_0_arm64", + "cp310-abi3-macosx_20_0_universal2", + "cp310-abi3-macosx_19_0_arm64", + "cp310-abi3-macosx_19_0_universal2", + "cp310-abi3-macosx_18_0_arm64", + "cp310-abi3-macosx_18_0_universal2", + "cp310-abi3-macosx_17_0_arm64", + "cp310-abi3-macosx_17_0_universal2", + "cp310-abi3-macosx_16_0_arm64", + "cp310-abi3-macosx_16_0_universal2", + "cp310-abi3-macosx_15_0_arm64", + "cp310-abi3-macosx_15_0_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_26_0_arm64", + "cp39-abi3-macosx_26_0_universal2", + "cp39-abi3-macosx_25_0_arm64", + "cp39-abi3-macosx_25_0_universal2", + "cp39-abi3-macosx_24_0_arm64", + "cp39-abi3-macosx_24_0_universal2", + "cp39-abi3-macosx_23_0_arm64", + "cp39-abi3-macosx_23_0_universal2", + "cp39-abi3-macosx_22_0_arm64", + "cp39-abi3-macosx_22_0_universal2", + "cp39-abi3-macosx_21_0_arm64", + "cp39-abi3-macosx_21_0_universal2", + "cp39-abi3-macosx_20_0_arm64", + "cp39-abi3-macosx_20_0_universal2", + "cp39-abi3-macosx_19_0_arm64", + "cp39-abi3-macosx_19_0_universal2", + "cp39-abi3-macosx_18_0_arm64", + "cp39-abi3-macosx_18_0_universal2", + "cp39-abi3-macosx_17_0_arm64", + "cp39-abi3-macosx_17_0_universal2", + "cp39-abi3-macosx_16_0_arm64", + "cp39-abi3-macosx_16_0_universal2", + "cp39-abi3-macosx_15_0_arm64", + "cp39-abi3-macosx_15_0_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_26_0_arm64", + "cp38-abi3-macosx_26_0_universal2", + "cp38-abi3-macosx_25_0_arm64", + "cp38-abi3-macosx_25_0_universal2", + "cp38-abi3-macosx_24_0_arm64", + "cp38-abi3-macosx_24_0_universal2", + "cp38-abi3-macosx_23_0_arm64", + "cp38-abi3-macosx_23_0_universal2", + "cp38-abi3-macosx_22_0_arm64", + "cp38-abi3-macosx_22_0_universal2", + "cp38-abi3-macosx_21_0_arm64", + "cp38-abi3-macosx_21_0_universal2", + "cp38-abi3-macosx_20_0_arm64", + "cp38-abi3-macosx_20_0_universal2", + "cp38-abi3-macosx_19_0_arm64", + "cp38-abi3-macosx_19_0_universal2", + "cp38-abi3-macosx_18_0_arm64", + "cp38-abi3-macosx_18_0_universal2", + "cp38-abi3-macosx_17_0_arm64", + "cp38-abi3-macosx_17_0_universal2", + "cp38-abi3-macosx_16_0_arm64", + "cp38-abi3-macosx_16_0_universal2", + "cp38-abi3-macosx_15_0_arm64", + "cp38-abi3-macosx_15_0_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_26_0_arm64", + "cp37-abi3-macosx_26_0_universal2", + "cp37-abi3-macosx_25_0_arm64", + "cp37-abi3-macosx_25_0_universal2", + "cp37-abi3-macosx_24_0_arm64", + "cp37-abi3-macosx_24_0_universal2", + "cp37-abi3-macosx_23_0_arm64", + "cp37-abi3-macosx_23_0_universal2", + "cp37-abi3-macosx_22_0_arm64", + "cp37-abi3-macosx_22_0_universal2", + "cp37-abi3-macosx_21_0_arm64", + "cp37-abi3-macosx_21_0_universal2", + "cp37-abi3-macosx_20_0_arm64", + "cp37-abi3-macosx_20_0_universal2", + "cp37-abi3-macosx_19_0_arm64", + "cp37-abi3-macosx_19_0_universal2", + "cp37-abi3-macosx_18_0_arm64", + "cp37-abi3-macosx_18_0_universal2", + "cp37-abi3-macosx_17_0_arm64", + "cp37-abi3-macosx_17_0_universal2", + "cp37-abi3-macosx_16_0_arm64", + "cp37-abi3-macosx_16_0_universal2", + "cp37-abi3-macosx_15_0_arm64", + "cp37-abi3-macosx_15_0_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", + "py311-none-macosx_26_0_arm64", + "py311-none-macosx_26_0_universal2", + "py311-none-macosx_25_0_arm64", + "py311-none-macosx_25_0_universal2", + "py311-none-macosx_24_0_arm64", + "py311-none-macosx_24_0_universal2", + "py311-none-macosx_23_0_arm64", + "py311-none-macosx_23_0_universal2", + "py311-none-macosx_22_0_arm64", + "py311-none-macosx_22_0_universal2", + "py311-none-macosx_21_0_arm64", + "py311-none-macosx_21_0_universal2", + "py311-none-macosx_20_0_arm64", + "py311-none-macosx_20_0_universal2", + "py311-none-macosx_19_0_arm64", + "py311-none-macosx_19_0_universal2", + "py311-none-macosx_18_0_arm64", + "py311-none-macosx_18_0_universal2", + "py311-none-macosx_17_0_arm64", + "py311-none-macosx_17_0_universal2", + "py311-none-macosx_16_0_arm64", + "py311-none-macosx_16_0_universal2", + "py311-none-macosx_15_0_arm64", + "py311-none-macosx_15_0_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", + "py3-none-macosx_26_0_arm64", + "py3-none-macosx_26_0_universal2", + "py3-none-macosx_25_0_arm64", + "py3-none-macosx_25_0_universal2", + "py3-none-macosx_24_0_arm64", + "py3-none-macosx_24_0_universal2", + "py3-none-macosx_23_0_arm64", + "py3-none-macosx_23_0_universal2", + "py3-none-macosx_22_0_arm64", + "py3-none-macosx_22_0_universal2", + "py3-none-macosx_21_0_arm64", + "py3-none-macosx_21_0_universal2", + "py3-none-macosx_20_0_arm64", + "py3-none-macosx_20_0_universal2", + "py3-none-macosx_19_0_arm64", + "py3-none-macosx_19_0_universal2", + "py3-none-macosx_18_0_arm64", + "py3-none-macosx_18_0_universal2", + "py3-none-macosx_17_0_arm64", + "py3-none-macosx_17_0_universal2", + "py3-none-macosx_16_0_arm64", + "py3-none-macosx_16_0_universal2", + "py3-none-macosx_15_0_arm64", + "py3-none-macosx_15_0_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", + "cp311-none-any", + "py311-none-any", + "py3-none-any" + ] +} diff --git a/.github/.platforms/macos-arm64-py312.json b/.github/.platforms/macos-arm64-py312.json new file mode 100644 index 00000000..448e28b0 --- /dev/null +++ b/.github/.platforms/macos-arm64-py312.json @@ -0,0 +1,425 @@ +{ + "marker_environment": { + "implementation_name": "cpython", + "implementation_version": "3.12.12", + "os_name": "posix", + "platform_machine": "arm64", + "platform_python_implementation": "CPython", + "platform_release": "25.1.0", + "platform_system": "Darwin", + "platform_version": "Darwin Kernel Version 25.1.0: Mon Oct 20 19:30:01 PDT 2025; root:xnu-12377.41.6~2/RELEASE_ARM64_T6031", + "python_full_version": "3.12.12", + "python_version": "3.12", + "sys_platform": "darwin" + }, + "compatible_tags": [ + "cp312-cp312-macosx_26_0_arm64", + "cp312-cp312-macosx_26_0_universal2", + "cp312-cp312-macosx_25_0_arm64", + "cp312-cp312-macosx_25_0_universal2", + "cp312-cp312-macosx_24_0_arm64", + "cp312-cp312-macosx_24_0_universal2", + "cp312-cp312-macosx_23_0_arm64", + "cp312-cp312-macosx_23_0_universal2", + "cp312-cp312-macosx_22_0_arm64", + "cp312-cp312-macosx_22_0_universal2", + "cp312-cp312-macosx_21_0_arm64", + "cp312-cp312-macosx_21_0_universal2", + "cp312-cp312-macosx_20_0_arm64", + "cp312-cp312-macosx_20_0_universal2", + "cp312-cp312-macosx_19_0_arm64", + "cp312-cp312-macosx_19_0_universal2", + "cp312-cp312-macosx_18_0_arm64", + "cp312-cp312-macosx_18_0_universal2", + "cp312-cp312-macosx_17_0_arm64", + "cp312-cp312-macosx_17_0_universal2", + "cp312-cp312-macosx_16_0_arm64", + "cp312-cp312-macosx_16_0_universal2", + "cp312-cp312-macosx_15_0_arm64", + "cp312-cp312-macosx_15_0_universal2", + "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_26_0_arm64", + "cp312-abi3-macosx_26_0_universal2", + "cp312-abi3-macosx_25_0_arm64", + "cp312-abi3-macosx_25_0_universal2", + "cp312-abi3-macosx_24_0_arm64", + "cp312-abi3-macosx_24_0_universal2", + "cp312-abi3-macosx_23_0_arm64", + "cp312-abi3-macosx_23_0_universal2", + "cp312-abi3-macosx_22_0_arm64", + "cp312-abi3-macosx_22_0_universal2", + "cp312-abi3-macosx_21_0_arm64", + "cp312-abi3-macosx_21_0_universal2", + "cp312-abi3-macosx_20_0_arm64", + "cp312-abi3-macosx_20_0_universal2", + "cp312-abi3-macosx_19_0_arm64", + "cp312-abi3-macosx_19_0_universal2", + "cp312-abi3-macosx_18_0_arm64", + "cp312-abi3-macosx_18_0_universal2", + "cp312-abi3-macosx_17_0_arm64", + "cp312-abi3-macosx_17_0_universal2", + "cp312-abi3-macosx_16_0_arm64", + "cp312-abi3-macosx_16_0_universal2", + "cp312-abi3-macosx_15_0_arm64", + "cp312-abi3-macosx_15_0_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_26_0_arm64", + "cp312-none-macosx_26_0_universal2", + "cp312-none-macosx_25_0_arm64", + "cp312-none-macosx_25_0_universal2", + "cp312-none-macosx_24_0_arm64", + "cp312-none-macosx_24_0_universal2", + "cp312-none-macosx_23_0_arm64", + "cp312-none-macosx_23_0_universal2", + "cp312-none-macosx_22_0_arm64", + "cp312-none-macosx_22_0_universal2", + "cp312-none-macosx_21_0_arm64", + "cp312-none-macosx_21_0_universal2", + "cp312-none-macosx_20_0_arm64", + "cp312-none-macosx_20_0_universal2", + "cp312-none-macosx_19_0_arm64", + "cp312-none-macosx_19_0_universal2", + "cp312-none-macosx_18_0_arm64", + "cp312-none-macosx_18_0_universal2", + "cp312-none-macosx_17_0_arm64", + "cp312-none-macosx_17_0_universal2", + "cp312-none-macosx_16_0_arm64", + "cp312-none-macosx_16_0_universal2", + "cp312-none-macosx_15_0_arm64", + "cp312-none-macosx_15_0_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", + "cp310-abi3-macosx_26_0_arm64", + "cp310-abi3-macosx_26_0_universal2", + "cp310-abi3-macosx_25_0_arm64", + "cp310-abi3-macosx_25_0_universal2", + "cp310-abi3-macosx_24_0_arm64", + "cp310-abi3-macosx_24_0_universal2", + "cp310-abi3-macosx_23_0_arm64", + "cp310-abi3-macosx_23_0_universal2", + "cp310-abi3-macosx_22_0_arm64", + "cp310-abi3-macosx_22_0_universal2", + "cp310-abi3-macosx_21_0_arm64", + "cp310-abi3-macosx_21_0_universal2", + "cp310-abi3-macosx_20_0_arm64", + "cp310-abi3-macosx_20_0_universal2", + "cp310-abi3-macosx_19_0_arm64", + "cp310-abi3-macosx_19_0_universal2", + "cp310-abi3-macosx_18_0_arm64", + "cp310-abi3-macosx_18_0_universal2", + "cp310-abi3-macosx_17_0_arm64", + "cp310-abi3-macosx_17_0_universal2", + "cp310-abi3-macosx_16_0_arm64", + "cp310-abi3-macosx_16_0_universal2", + "cp310-abi3-macosx_15_0_arm64", + "cp310-abi3-macosx_15_0_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_26_0_arm64", + "cp39-abi3-macosx_26_0_universal2", + "cp39-abi3-macosx_25_0_arm64", + "cp39-abi3-macosx_25_0_universal2", + "cp39-abi3-macosx_24_0_arm64", + "cp39-abi3-macosx_24_0_universal2", + "cp39-abi3-macosx_23_0_arm64", + "cp39-abi3-macosx_23_0_universal2", + "cp39-abi3-macosx_22_0_arm64", + "cp39-abi3-macosx_22_0_universal2", + "cp39-abi3-macosx_21_0_arm64", + "cp39-abi3-macosx_21_0_universal2", + "cp39-abi3-macosx_20_0_arm64", + "cp39-abi3-macosx_20_0_universal2", + "cp39-abi3-macosx_19_0_arm64", + "cp39-abi3-macosx_19_0_universal2", + "cp39-abi3-macosx_18_0_arm64", + "cp39-abi3-macosx_18_0_universal2", + "cp39-abi3-macosx_17_0_arm64", + "cp39-abi3-macosx_17_0_universal2", + "cp39-abi3-macosx_16_0_arm64", + "cp39-abi3-macosx_16_0_universal2", + "cp39-abi3-macosx_15_0_arm64", + "cp39-abi3-macosx_15_0_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_26_0_arm64", + "cp38-abi3-macosx_26_0_universal2", + "cp38-abi3-macosx_25_0_arm64", + "cp38-abi3-macosx_25_0_universal2", + "cp38-abi3-macosx_24_0_arm64", + "cp38-abi3-macosx_24_0_universal2", + "cp38-abi3-macosx_23_0_arm64", + "cp38-abi3-macosx_23_0_universal2", + "cp38-abi3-macosx_22_0_arm64", + "cp38-abi3-macosx_22_0_universal2", + "cp38-abi3-macosx_21_0_arm64", + "cp38-abi3-macosx_21_0_universal2", + "cp38-abi3-macosx_20_0_arm64", + "cp38-abi3-macosx_20_0_universal2", + "cp38-abi3-macosx_19_0_arm64", + "cp38-abi3-macosx_19_0_universal2", + "cp38-abi3-macosx_18_0_arm64", + "cp38-abi3-macosx_18_0_universal2", + "cp38-abi3-macosx_17_0_arm64", + "cp38-abi3-macosx_17_0_universal2", + "cp38-abi3-macosx_16_0_arm64", + "cp38-abi3-macosx_16_0_universal2", + "cp38-abi3-macosx_15_0_arm64", + "cp38-abi3-macosx_15_0_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_26_0_arm64", + "cp37-abi3-macosx_26_0_universal2", + "cp37-abi3-macosx_25_0_arm64", + "cp37-abi3-macosx_25_0_universal2", + "cp37-abi3-macosx_24_0_arm64", + "cp37-abi3-macosx_24_0_universal2", + "cp37-abi3-macosx_23_0_arm64", + "cp37-abi3-macosx_23_0_universal2", + "cp37-abi3-macosx_22_0_arm64", + "cp37-abi3-macosx_22_0_universal2", + "cp37-abi3-macosx_21_0_arm64", + "cp37-abi3-macosx_21_0_universal2", + "cp37-abi3-macosx_20_0_arm64", + "cp37-abi3-macosx_20_0_universal2", + "cp37-abi3-macosx_19_0_arm64", + "cp37-abi3-macosx_19_0_universal2", + "cp37-abi3-macosx_18_0_arm64", + "cp37-abi3-macosx_18_0_universal2", + "cp37-abi3-macosx_17_0_arm64", + "cp37-abi3-macosx_17_0_universal2", + "cp37-abi3-macosx_16_0_arm64", + "cp37-abi3-macosx_16_0_universal2", + "cp37-abi3-macosx_15_0_arm64", + "cp37-abi3-macosx_15_0_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", + "py312-none-macosx_26_0_arm64", + "py312-none-macosx_26_0_universal2", + "py312-none-macosx_25_0_arm64", + "py312-none-macosx_25_0_universal2", + "py312-none-macosx_24_0_arm64", + "py312-none-macosx_24_0_universal2", + "py312-none-macosx_23_0_arm64", + "py312-none-macosx_23_0_universal2", + "py312-none-macosx_22_0_arm64", + "py312-none-macosx_22_0_universal2", + "py312-none-macosx_21_0_arm64", + "py312-none-macosx_21_0_universal2", + "py312-none-macosx_20_0_arm64", + "py312-none-macosx_20_0_universal2", + "py312-none-macosx_19_0_arm64", + "py312-none-macosx_19_0_universal2", + "py312-none-macosx_18_0_arm64", + "py312-none-macosx_18_0_universal2", + "py312-none-macosx_17_0_arm64", + "py312-none-macosx_17_0_universal2", + "py312-none-macosx_16_0_arm64", + "py312-none-macosx_16_0_universal2", + "py312-none-macosx_15_0_arm64", + "py312-none-macosx_15_0_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_26_0_arm64", + "py3-none-macosx_26_0_universal2", + "py3-none-macosx_25_0_arm64", + "py3-none-macosx_25_0_universal2", + "py3-none-macosx_24_0_arm64", + "py3-none-macosx_24_0_universal2", + "py3-none-macosx_23_0_arm64", + "py3-none-macosx_23_0_universal2", + "py3-none-macosx_22_0_arm64", + "py3-none-macosx_22_0_universal2", + "py3-none-macosx_21_0_arm64", + "py3-none-macosx_21_0_universal2", + "py3-none-macosx_20_0_arm64", + "py3-none-macosx_20_0_universal2", + "py3-none-macosx_19_0_arm64", + "py3-none-macosx_19_0_universal2", + "py3-none-macosx_18_0_arm64", + "py3-none-macosx_18_0_universal2", + "py3-none-macosx_17_0_arm64", + "py3-none-macosx_17_0_universal2", + "py3-none-macosx_16_0_arm64", + "py3-none-macosx_16_0_universal2", + "py3-none-macosx_15_0_arm64", + "py3-none-macosx_15_0_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", + "cp312-none-any", + "py312-none-any", + "py3-none-any" + ] +} diff --git a/.github/.platforms/macos-arm64-py313.json b/.github/.platforms/macos-arm64-py313.json new file mode 100644 index 00000000..fb0026ad --- /dev/null +++ b/.github/.platforms/macos-arm64-py313.json @@ -0,0 +1,425 @@ +{ + "marker_environment": { + "implementation_name": "cpython", + "implementation_version": "3.13.11", + "os_name": "posix", + "platform_machine": "arm64", + "platform_python_implementation": "CPython", + "platform_release": "25.1.0", + "platform_system": "Darwin", + "platform_version": "Darwin Kernel Version 25.1.0: Mon Oct 20 19:30:01 PDT 2025; root:xnu-12377.41.6~2/RELEASE_ARM64_T6031", + "python_full_version": "3.13.11", + "python_version": "3.13", + "sys_platform": "darwin" + }, + "compatible_tags": [ + "cp313-cp313-macosx_26_0_arm64", + "cp313-cp313-macosx_26_0_universal2", + "cp313-cp313-macosx_25_0_arm64", + "cp313-cp313-macosx_25_0_universal2", + "cp313-cp313-macosx_24_0_arm64", + "cp313-cp313-macosx_24_0_universal2", + "cp313-cp313-macosx_23_0_arm64", + "cp313-cp313-macosx_23_0_universal2", + "cp313-cp313-macosx_22_0_arm64", + "cp313-cp313-macosx_22_0_universal2", + "cp313-cp313-macosx_21_0_arm64", + "cp313-cp313-macosx_21_0_universal2", + "cp313-cp313-macosx_20_0_arm64", + "cp313-cp313-macosx_20_0_universal2", + "cp313-cp313-macosx_19_0_arm64", + "cp313-cp313-macosx_19_0_universal2", + "cp313-cp313-macosx_18_0_arm64", + "cp313-cp313-macosx_18_0_universal2", + "cp313-cp313-macosx_17_0_arm64", + "cp313-cp313-macosx_17_0_universal2", + "cp313-cp313-macosx_16_0_arm64", + "cp313-cp313-macosx_16_0_universal2", + "cp313-cp313-macosx_15_0_arm64", + "cp313-cp313-macosx_15_0_universal2", + "cp313-cp313-macosx_14_0_arm64", + "cp313-cp313-macosx_14_0_universal2", + "cp313-cp313-macosx_13_0_arm64", + "cp313-cp313-macosx_13_0_universal2", + "cp313-cp313-macosx_12_0_arm64", + "cp313-cp313-macosx_12_0_universal2", + "cp313-cp313-macosx_11_0_arm64", + "cp313-cp313-macosx_11_0_universal2", + "cp313-cp313-macosx_10_16_universal2", + "cp313-cp313-macosx_10_15_universal2", + "cp313-cp313-macosx_10_14_universal2", + "cp313-cp313-macosx_10_13_universal2", + "cp313-cp313-macosx_10_12_universal2", + "cp313-cp313-macosx_10_11_universal2", + "cp313-cp313-macosx_10_10_universal2", + "cp313-cp313-macosx_10_9_universal2", + "cp313-cp313-macosx_10_8_universal2", + "cp313-cp313-macosx_10_7_universal2", + "cp313-cp313-macosx_10_6_universal2", + "cp313-cp313-macosx_10_5_universal2", + "cp313-cp313-macosx_10_4_universal2", + "cp313-abi3-macosx_26_0_arm64", + "cp313-abi3-macosx_26_0_universal2", + "cp313-abi3-macosx_25_0_arm64", + "cp313-abi3-macosx_25_0_universal2", + "cp313-abi3-macosx_24_0_arm64", + "cp313-abi3-macosx_24_0_universal2", + "cp313-abi3-macosx_23_0_arm64", + "cp313-abi3-macosx_23_0_universal2", + "cp313-abi3-macosx_22_0_arm64", + "cp313-abi3-macosx_22_0_universal2", + "cp313-abi3-macosx_21_0_arm64", + "cp313-abi3-macosx_21_0_universal2", + "cp313-abi3-macosx_20_0_arm64", + "cp313-abi3-macosx_20_0_universal2", + "cp313-abi3-macosx_19_0_arm64", + "cp313-abi3-macosx_19_0_universal2", + "cp313-abi3-macosx_18_0_arm64", + "cp313-abi3-macosx_18_0_universal2", + "cp313-abi3-macosx_17_0_arm64", + "cp313-abi3-macosx_17_0_universal2", + "cp313-abi3-macosx_16_0_arm64", + "cp313-abi3-macosx_16_0_universal2", + "cp313-abi3-macosx_15_0_arm64", + "cp313-abi3-macosx_15_0_universal2", + "cp313-abi3-macosx_14_0_arm64", + "cp313-abi3-macosx_14_0_universal2", + "cp313-abi3-macosx_13_0_arm64", + "cp313-abi3-macosx_13_0_universal2", + "cp313-abi3-macosx_12_0_arm64", + "cp313-abi3-macosx_12_0_universal2", + "cp313-abi3-macosx_11_0_arm64", + "cp313-abi3-macosx_11_0_universal2", + "cp313-abi3-macosx_10_16_universal2", + "cp313-abi3-macosx_10_15_universal2", + "cp313-abi3-macosx_10_14_universal2", + "cp313-abi3-macosx_10_13_universal2", + "cp313-abi3-macosx_10_12_universal2", + "cp313-abi3-macosx_10_11_universal2", + "cp313-abi3-macosx_10_10_universal2", + "cp313-abi3-macosx_10_9_universal2", + "cp313-abi3-macosx_10_8_universal2", + "cp313-abi3-macosx_10_7_universal2", + "cp313-abi3-macosx_10_6_universal2", + "cp313-abi3-macosx_10_5_universal2", + "cp313-abi3-macosx_10_4_universal2", + "cp313-none-macosx_26_0_arm64", + "cp313-none-macosx_26_0_universal2", + "cp313-none-macosx_25_0_arm64", + "cp313-none-macosx_25_0_universal2", + "cp313-none-macosx_24_0_arm64", + "cp313-none-macosx_24_0_universal2", + "cp313-none-macosx_23_0_arm64", + "cp313-none-macosx_23_0_universal2", + "cp313-none-macosx_22_0_arm64", + "cp313-none-macosx_22_0_universal2", + "cp313-none-macosx_21_0_arm64", + "cp313-none-macosx_21_0_universal2", + "cp313-none-macosx_20_0_arm64", + "cp313-none-macosx_20_0_universal2", + "cp313-none-macosx_19_0_arm64", + "cp313-none-macosx_19_0_universal2", + "cp313-none-macosx_18_0_arm64", + "cp313-none-macosx_18_0_universal2", + "cp313-none-macosx_17_0_arm64", + "cp313-none-macosx_17_0_universal2", + "cp313-none-macosx_16_0_arm64", + "cp313-none-macosx_16_0_universal2", + "cp313-none-macosx_15_0_arm64", + "cp313-none-macosx_15_0_universal2", + "cp313-none-macosx_14_0_arm64", + "cp313-none-macosx_14_0_universal2", + "cp313-none-macosx_13_0_arm64", + "cp313-none-macosx_13_0_universal2", + "cp313-none-macosx_12_0_arm64", + "cp313-none-macosx_12_0_universal2", + "cp313-none-macosx_11_0_arm64", + "cp313-none-macosx_11_0_universal2", + "cp313-none-macosx_10_16_universal2", + "cp313-none-macosx_10_15_universal2", + "cp313-none-macosx_10_14_universal2", + "cp313-none-macosx_10_13_universal2", + "cp313-none-macosx_10_12_universal2", + "cp313-none-macosx_10_11_universal2", + "cp313-none-macosx_10_10_universal2", + "cp313-none-macosx_10_9_universal2", + "cp313-none-macosx_10_8_universal2", + "cp313-none-macosx_10_7_universal2", + "cp313-none-macosx_10_6_universal2", + "cp313-none-macosx_10_5_universal2", + "cp313-none-macosx_10_4_universal2", + "cp310-abi3-macosx_26_0_arm64", + "cp310-abi3-macosx_26_0_universal2", + "cp310-abi3-macosx_25_0_arm64", + "cp310-abi3-macosx_25_0_universal2", + "cp310-abi3-macosx_24_0_arm64", + "cp310-abi3-macosx_24_0_universal2", + "cp310-abi3-macosx_23_0_arm64", + "cp310-abi3-macosx_23_0_universal2", + "cp310-abi3-macosx_22_0_arm64", + "cp310-abi3-macosx_22_0_universal2", + "cp310-abi3-macosx_21_0_arm64", + "cp310-abi3-macosx_21_0_universal2", + "cp310-abi3-macosx_20_0_arm64", + "cp310-abi3-macosx_20_0_universal2", + "cp310-abi3-macosx_19_0_arm64", + "cp310-abi3-macosx_19_0_universal2", + "cp310-abi3-macosx_18_0_arm64", + "cp310-abi3-macosx_18_0_universal2", + "cp310-abi3-macosx_17_0_arm64", + "cp310-abi3-macosx_17_0_universal2", + "cp310-abi3-macosx_16_0_arm64", + "cp310-abi3-macosx_16_0_universal2", + "cp310-abi3-macosx_15_0_arm64", + "cp310-abi3-macosx_15_0_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_26_0_arm64", + "cp39-abi3-macosx_26_0_universal2", + "cp39-abi3-macosx_25_0_arm64", + "cp39-abi3-macosx_25_0_universal2", + "cp39-abi3-macosx_24_0_arm64", + "cp39-abi3-macosx_24_0_universal2", + "cp39-abi3-macosx_23_0_arm64", + "cp39-abi3-macosx_23_0_universal2", + "cp39-abi3-macosx_22_0_arm64", + "cp39-abi3-macosx_22_0_universal2", + "cp39-abi3-macosx_21_0_arm64", + "cp39-abi3-macosx_21_0_universal2", + "cp39-abi3-macosx_20_0_arm64", + "cp39-abi3-macosx_20_0_universal2", + "cp39-abi3-macosx_19_0_arm64", + "cp39-abi3-macosx_19_0_universal2", + "cp39-abi3-macosx_18_0_arm64", + "cp39-abi3-macosx_18_0_universal2", + "cp39-abi3-macosx_17_0_arm64", + "cp39-abi3-macosx_17_0_universal2", + "cp39-abi3-macosx_16_0_arm64", + "cp39-abi3-macosx_16_0_universal2", + "cp39-abi3-macosx_15_0_arm64", + "cp39-abi3-macosx_15_0_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_26_0_arm64", + "cp38-abi3-macosx_26_0_universal2", + "cp38-abi3-macosx_25_0_arm64", + "cp38-abi3-macosx_25_0_universal2", + "cp38-abi3-macosx_24_0_arm64", + "cp38-abi3-macosx_24_0_universal2", + "cp38-abi3-macosx_23_0_arm64", + "cp38-abi3-macosx_23_0_universal2", + "cp38-abi3-macosx_22_0_arm64", + "cp38-abi3-macosx_22_0_universal2", + "cp38-abi3-macosx_21_0_arm64", + "cp38-abi3-macosx_21_0_universal2", + "cp38-abi3-macosx_20_0_arm64", + "cp38-abi3-macosx_20_0_universal2", + "cp38-abi3-macosx_19_0_arm64", + "cp38-abi3-macosx_19_0_universal2", + "cp38-abi3-macosx_18_0_arm64", + "cp38-abi3-macosx_18_0_universal2", + "cp38-abi3-macosx_17_0_arm64", + "cp38-abi3-macosx_17_0_universal2", + "cp38-abi3-macosx_16_0_arm64", + "cp38-abi3-macosx_16_0_universal2", + "cp38-abi3-macosx_15_0_arm64", + "cp38-abi3-macosx_15_0_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_26_0_arm64", + "cp37-abi3-macosx_26_0_universal2", + "cp37-abi3-macosx_25_0_arm64", + "cp37-abi3-macosx_25_0_universal2", + "cp37-abi3-macosx_24_0_arm64", + "cp37-abi3-macosx_24_0_universal2", + "cp37-abi3-macosx_23_0_arm64", + "cp37-abi3-macosx_23_0_universal2", + "cp37-abi3-macosx_22_0_arm64", + "cp37-abi3-macosx_22_0_universal2", + "cp37-abi3-macosx_21_0_arm64", + "cp37-abi3-macosx_21_0_universal2", + "cp37-abi3-macosx_20_0_arm64", + "cp37-abi3-macosx_20_0_universal2", + "cp37-abi3-macosx_19_0_arm64", + "cp37-abi3-macosx_19_0_universal2", + "cp37-abi3-macosx_18_0_arm64", + "cp37-abi3-macosx_18_0_universal2", + "cp37-abi3-macosx_17_0_arm64", + "cp37-abi3-macosx_17_0_universal2", + "cp37-abi3-macosx_16_0_arm64", + "cp37-abi3-macosx_16_0_universal2", + "cp37-abi3-macosx_15_0_arm64", + "cp37-abi3-macosx_15_0_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", + "py313-none-macosx_26_0_arm64", + "py313-none-macosx_26_0_universal2", + "py313-none-macosx_25_0_arm64", + "py313-none-macosx_25_0_universal2", + "py313-none-macosx_24_0_arm64", + "py313-none-macosx_24_0_universal2", + "py313-none-macosx_23_0_arm64", + "py313-none-macosx_23_0_universal2", + "py313-none-macosx_22_0_arm64", + "py313-none-macosx_22_0_universal2", + "py313-none-macosx_21_0_arm64", + "py313-none-macosx_21_0_universal2", + "py313-none-macosx_20_0_arm64", + "py313-none-macosx_20_0_universal2", + "py313-none-macosx_19_0_arm64", + "py313-none-macosx_19_0_universal2", + "py313-none-macosx_18_0_arm64", + "py313-none-macosx_18_0_universal2", + "py313-none-macosx_17_0_arm64", + "py313-none-macosx_17_0_universal2", + "py313-none-macosx_16_0_arm64", + "py313-none-macosx_16_0_universal2", + "py313-none-macosx_15_0_arm64", + "py313-none-macosx_15_0_universal2", + "py313-none-macosx_14_0_arm64", + "py313-none-macosx_14_0_universal2", + "py313-none-macosx_13_0_arm64", + "py313-none-macosx_13_0_universal2", + "py313-none-macosx_12_0_arm64", + "py313-none-macosx_12_0_universal2", + "py313-none-macosx_11_0_arm64", + "py313-none-macosx_11_0_universal2", + "py313-none-macosx_10_16_universal2", + "py313-none-macosx_10_15_universal2", + "py313-none-macosx_10_14_universal2", + "py313-none-macosx_10_13_universal2", + "py313-none-macosx_10_12_universal2", + "py313-none-macosx_10_11_universal2", + "py313-none-macosx_10_10_universal2", + "py313-none-macosx_10_9_universal2", + "py313-none-macosx_10_8_universal2", + "py313-none-macosx_10_7_universal2", + "py313-none-macosx_10_6_universal2", + "py313-none-macosx_10_5_universal2", + "py313-none-macosx_10_4_universal2", + "py3-none-macosx_26_0_arm64", + "py3-none-macosx_26_0_universal2", + "py3-none-macosx_25_0_arm64", + "py3-none-macosx_25_0_universal2", + "py3-none-macosx_24_0_arm64", + "py3-none-macosx_24_0_universal2", + "py3-none-macosx_23_0_arm64", + "py3-none-macosx_23_0_universal2", + "py3-none-macosx_22_0_arm64", + "py3-none-macosx_22_0_universal2", + "py3-none-macosx_21_0_arm64", + "py3-none-macosx_21_0_universal2", + "py3-none-macosx_20_0_arm64", + "py3-none-macosx_20_0_universal2", + "py3-none-macosx_19_0_arm64", + "py3-none-macosx_19_0_universal2", + "py3-none-macosx_18_0_arm64", + "py3-none-macosx_18_0_universal2", + "py3-none-macosx_17_0_arm64", + "py3-none-macosx_17_0_universal2", + "py3-none-macosx_16_0_arm64", + "py3-none-macosx_16_0_universal2", + "py3-none-macosx_15_0_arm64", + "py3-none-macosx_15_0_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", + "cp313-none-any", + "py313-none-any", + "py3-none-any" + ] +} diff --git a/.github/.platforms/macos-arm64-py314.json b/.github/.platforms/macos-arm64-py314.json new file mode 100644 index 00000000..cc8aafd4 --- /dev/null +++ b/.github/.platforms/macos-arm64-py314.json @@ -0,0 +1,425 @@ +{ + "marker_environment": { + "implementation_name": "cpython", + "implementation_version": "3.14.2", + "os_name": "posix", + "platform_machine": "arm64", + "platform_python_implementation": "CPython", + "platform_release": "25.1.0", + "platform_system": "Darwin", + "platform_version": "Darwin Kernel Version 25.1.0: Mon Oct 20 19:30:01 PDT 2025; root:xnu-12377.41.6~2/RELEASE_ARM64_T6031", + "python_full_version": "3.14.2", + "python_version": "3.14", + "sys_platform": "darwin" + }, + "compatible_tags": [ + "cp314-cp314-macosx_26_0_arm64", + "cp314-cp314-macosx_26_0_universal2", + "cp314-cp314-macosx_25_0_arm64", + "cp314-cp314-macosx_25_0_universal2", + "cp314-cp314-macosx_24_0_arm64", + "cp314-cp314-macosx_24_0_universal2", + "cp314-cp314-macosx_23_0_arm64", + "cp314-cp314-macosx_23_0_universal2", + "cp314-cp314-macosx_22_0_arm64", + "cp314-cp314-macosx_22_0_universal2", + "cp314-cp314-macosx_21_0_arm64", + "cp314-cp314-macosx_21_0_universal2", + "cp314-cp314-macosx_20_0_arm64", + "cp314-cp314-macosx_20_0_universal2", + "cp314-cp314-macosx_19_0_arm64", + "cp314-cp314-macosx_19_0_universal2", + "cp314-cp314-macosx_18_0_arm64", + "cp314-cp314-macosx_18_0_universal2", + "cp314-cp314-macosx_17_0_arm64", + "cp314-cp314-macosx_17_0_universal2", + "cp314-cp314-macosx_16_0_arm64", + "cp314-cp314-macosx_16_0_universal2", + "cp314-cp314-macosx_15_0_arm64", + "cp314-cp314-macosx_15_0_universal2", + "cp314-cp314-macosx_14_0_arm64", + "cp314-cp314-macosx_14_0_universal2", + "cp314-cp314-macosx_13_0_arm64", + "cp314-cp314-macosx_13_0_universal2", + "cp314-cp314-macosx_12_0_arm64", + "cp314-cp314-macosx_12_0_universal2", + "cp314-cp314-macosx_11_0_arm64", + "cp314-cp314-macosx_11_0_universal2", + "cp314-cp314-macosx_10_16_universal2", + "cp314-cp314-macosx_10_15_universal2", + "cp314-cp314-macosx_10_14_universal2", + "cp314-cp314-macosx_10_13_universal2", + "cp314-cp314-macosx_10_12_universal2", + "cp314-cp314-macosx_10_11_universal2", + "cp314-cp314-macosx_10_10_universal2", + "cp314-cp314-macosx_10_9_universal2", + "cp314-cp314-macosx_10_8_universal2", + "cp314-cp314-macosx_10_7_universal2", + "cp314-cp314-macosx_10_6_universal2", + "cp314-cp314-macosx_10_5_universal2", + "cp314-cp314-macosx_10_4_universal2", + "cp314-abi3-macosx_26_0_arm64", + "cp314-abi3-macosx_26_0_universal2", + "cp314-abi3-macosx_25_0_arm64", + "cp314-abi3-macosx_25_0_universal2", + "cp314-abi3-macosx_24_0_arm64", + "cp314-abi3-macosx_24_0_universal2", + "cp314-abi3-macosx_23_0_arm64", + "cp314-abi3-macosx_23_0_universal2", + "cp314-abi3-macosx_22_0_arm64", + "cp314-abi3-macosx_22_0_universal2", + "cp314-abi3-macosx_21_0_arm64", + "cp314-abi3-macosx_21_0_universal2", + "cp314-abi3-macosx_20_0_arm64", + "cp314-abi3-macosx_20_0_universal2", + "cp314-abi3-macosx_19_0_arm64", + "cp314-abi3-macosx_19_0_universal2", + "cp314-abi3-macosx_18_0_arm64", + "cp314-abi3-macosx_18_0_universal2", + "cp314-abi3-macosx_17_0_arm64", + "cp314-abi3-macosx_17_0_universal2", + "cp314-abi3-macosx_16_0_arm64", + "cp314-abi3-macosx_16_0_universal2", + "cp314-abi3-macosx_15_0_arm64", + "cp314-abi3-macosx_15_0_universal2", + "cp314-abi3-macosx_14_0_arm64", + "cp314-abi3-macosx_14_0_universal2", + "cp314-abi3-macosx_13_0_arm64", + "cp314-abi3-macosx_13_0_universal2", + "cp314-abi3-macosx_12_0_arm64", + "cp314-abi3-macosx_12_0_universal2", + "cp314-abi3-macosx_11_0_arm64", + "cp314-abi3-macosx_11_0_universal2", + "cp314-abi3-macosx_10_16_universal2", + "cp314-abi3-macosx_10_15_universal2", + "cp314-abi3-macosx_10_14_universal2", + "cp314-abi3-macosx_10_13_universal2", + "cp314-abi3-macosx_10_12_universal2", + "cp314-abi3-macosx_10_11_universal2", + "cp314-abi3-macosx_10_10_universal2", + "cp314-abi3-macosx_10_9_universal2", + "cp314-abi3-macosx_10_8_universal2", + "cp314-abi3-macosx_10_7_universal2", + "cp314-abi3-macosx_10_6_universal2", + "cp314-abi3-macosx_10_5_universal2", + "cp314-abi3-macosx_10_4_universal2", + "cp314-none-macosx_26_0_arm64", + "cp314-none-macosx_26_0_universal2", + "cp314-none-macosx_25_0_arm64", + "cp314-none-macosx_25_0_universal2", + "cp314-none-macosx_24_0_arm64", + "cp314-none-macosx_24_0_universal2", + "cp314-none-macosx_23_0_arm64", + "cp314-none-macosx_23_0_universal2", + "cp314-none-macosx_22_0_arm64", + "cp314-none-macosx_22_0_universal2", + "cp314-none-macosx_21_0_arm64", + "cp314-none-macosx_21_0_universal2", + "cp314-none-macosx_20_0_arm64", + "cp314-none-macosx_20_0_universal2", + "cp314-none-macosx_19_0_arm64", + "cp314-none-macosx_19_0_universal2", + "cp314-none-macosx_18_0_arm64", + "cp314-none-macosx_18_0_universal2", + "cp314-none-macosx_17_0_arm64", + "cp314-none-macosx_17_0_universal2", + "cp314-none-macosx_16_0_arm64", + "cp314-none-macosx_16_0_universal2", + "cp314-none-macosx_15_0_arm64", + "cp314-none-macosx_15_0_universal2", + "cp314-none-macosx_14_0_arm64", + "cp314-none-macosx_14_0_universal2", + "cp314-none-macosx_13_0_arm64", + "cp314-none-macosx_13_0_universal2", + "cp314-none-macosx_12_0_arm64", + "cp314-none-macosx_12_0_universal2", + "cp314-none-macosx_11_0_arm64", + "cp314-none-macosx_11_0_universal2", + "cp314-none-macosx_10_16_universal2", + "cp314-none-macosx_10_15_universal2", + "cp314-none-macosx_10_14_universal2", + "cp314-none-macosx_10_13_universal2", + "cp314-none-macosx_10_12_universal2", + "cp314-none-macosx_10_11_universal2", + "cp314-none-macosx_10_10_universal2", + "cp314-none-macosx_10_9_universal2", + "cp314-none-macosx_10_8_universal2", + "cp314-none-macosx_10_7_universal2", + "cp314-none-macosx_10_6_universal2", + "cp314-none-macosx_10_5_universal2", + "cp314-none-macosx_10_4_universal2", + "cp310-abi3-macosx_26_0_arm64", + "cp310-abi3-macosx_26_0_universal2", + "cp310-abi3-macosx_25_0_arm64", + "cp310-abi3-macosx_25_0_universal2", + "cp310-abi3-macosx_24_0_arm64", + "cp310-abi3-macosx_24_0_universal2", + "cp310-abi3-macosx_23_0_arm64", + "cp310-abi3-macosx_23_0_universal2", + "cp310-abi3-macosx_22_0_arm64", + "cp310-abi3-macosx_22_0_universal2", + "cp310-abi3-macosx_21_0_arm64", + "cp310-abi3-macosx_21_0_universal2", + "cp310-abi3-macosx_20_0_arm64", + "cp310-abi3-macosx_20_0_universal2", + "cp310-abi3-macosx_19_0_arm64", + "cp310-abi3-macosx_19_0_universal2", + "cp310-abi3-macosx_18_0_arm64", + "cp310-abi3-macosx_18_0_universal2", + "cp310-abi3-macosx_17_0_arm64", + "cp310-abi3-macosx_17_0_universal2", + "cp310-abi3-macosx_16_0_arm64", + "cp310-abi3-macosx_16_0_universal2", + "cp310-abi3-macosx_15_0_arm64", + "cp310-abi3-macosx_15_0_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_26_0_arm64", + "cp39-abi3-macosx_26_0_universal2", + "cp39-abi3-macosx_25_0_arm64", + "cp39-abi3-macosx_25_0_universal2", + "cp39-abi3-macosx_24_0_arm64", + "cp39-abi3-macosx_24_0_universal2", + "cp39-abi3-macosx_23_0_arm64", + "cp39-abi3-macosx_23_0_universal2", + "cp39-abi3-macosx_22_0_arm64", + "cp39-abi3-macosx_22_0_universal2", + "cp39-abi3-macosx_21_0_arm64", + "cp39-abi3-macosx_21_0_universal2", + "cp39-abi3-macosx_20_0_arm64", + "cp39-abi3-macosx_20_0_universal2", + "cp39-abi3-macosx_19_0_arm64", + "cp39-abi3-macosx_19_0_universal2", + "cp39-abi3-macosx_18_0_arm64", + "cp39-abi3-macosx_18_0_universal2", + "cp39-abi3-macosx_17_0_arm64", + "cp39-abi3-macosx_17_0_universal2", + "cp39-abi3-macosx_16_0_arm64", + "cp39-abi3-macosx_16_0_universal2", + "cp39-abi3-macosx_15_0_arm64", + "cp39-abi3-macosx_15_0_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_26_0_arm64", + "cp38-abi3-macosx_26_0_universal2", + "cp38-abi3-macosx_25_0_arm64", + "cp38-abi3-macosx_25_0_universal2", + "cp38-abi3-macosx_24_0_arm64", + "cp38-abi3-macosx_24_0_universal2", + "cp38-abi3-macosx_23_0_arm64", + "cp38-abi3-macosx_23_0_universal2", + "cp38-abi3-macosx_22_0_arm64", + "cp38-abi3-macosx_22_0_universal2", + "cp38-abi3-macosx_21_0_arm64", + "cp38-abi3-macosx_21_0_universal2", + "cp38-abi3-macosx_20_0_arm64", + "cp38-abi3-macosx_20_0_universal2", + "cp38-abi3-macosx_19_0_arm64", + "cp38-abi3-macosx_19_0_universal2", + "cp38-abi3-macosx_18_0_arm64", + "cp38-abi3-macosx_18_0_universal2", + "cp38-abi3-macosx_17_0_arm64", + "cp38-abi3-macosx_17_0_universal2", + "cp38-abi3-macosx_16_0_arm64", + "cp38-abi3-macosx_16_0_universal2", + "cp38-abi3-macosx_15_0_arm64", + "cp38-abi3-macosx_15_0_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_26_0_arm64", + "cp37-abi3-macosx_26_0_universal2", + "cp37-abi3-macosx_25_0_arm64", + "cp37-abi3-macosx_25_0_universal2", + "cp37-abi3-macosx_24_0_arm64", + "cp37-abi3-macosx_24_0_universal2", + "cp37-abi3-macosx_23_0_arm64", + "cp37-abi3-macosx_23_0_universal2", + "cp37-abi3-macosx_22_0_arm64", + "cp37-abi3-macosx_22_0_universal2", + "cp37-abi3-macosx_21_0_arm64", + "cp37-abi3-macosx_21_0_universal2", + "cp37-abi3-macosx_20_0_arm64", + "cp37-abi3-macosx_20_0_universal2", + "cp37-abi3-macosx_19_0_arm64", + "cp37-abi3-macosx_19_0_universal2", + "cp37-abi3-macosx_18_0_arm64", + "cp37-abi3-macosx_18_0_universal2", + "cp37-abi3-macosx_17_0_arm64", + "cp37-abi3-macosx_17_0_universal2", + "cp37-abi3-macosx_16_0_arm64", + "cp37-abi3-macosx_16_0_universal2", + "cp37-abi3-macosx_15_0_arm64", + "cp37-abi3-macosx_15_0_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", + "py314-none-macosx_26_0_arm64", + "py314-none-macosx_26_0_universal2", + "py314-none-macosx_25_0_arm64", + "py314-none-macosx_25_0_universal2", + "py314-none-macosx_24_0_arm64", + "py314-none-macosx_24_0_universal2", + "py314-none-macosx_23_0_arm64", + "py314-none-macosx_23_0_universal2", + "py314-none-macosx_22_0_arm64", + "py314-none-macosx_22_0_universal2", + "py314-none-macosx_21_0_arm64", + "py314-none-macosx_21_0_universal2", + "py314-none-macosx_20_0_arm64", + "py314-none-macosx_20_0_universal2", + "py314-none-macosx_19_0_arm64", + "py314-none-macosx_19_0_universal2", + "py314-none-macosx_18_0_arm64", + "py314-none-macosx_18_0_universal2", + "py314-none-macosx_17_0_arm64", + "py314-none-macosx_17_0_universal2", + "py314-none-macosx_16_0_arm64", + "py314-none-macosx_16_0_universal2", + "py314-none-macosx_15_0_arm64", + "py314-none-macosx_15_0_universal2", + "py314-none-macosx_14_0_arm64", + "py314-none-macosx_14_0_universal2", + "py314-none-macosx_13_0_arm64", + "py314-none-macosx_13_0_universal2", + "py314-none-macosx_12_0_arm64", + "py314-none-macosx_12_0_universal2", + "py314-none-macosx_11_0_arm64", + "py314-none-macosx_11_0_universal2", + "py314-none-macosx_10_16_universal2", + "py314-none-macosx_10_15_universal2", + "py314-none-macosx_10_14_universal2", + "py314-none-macosx_10_13_universal2", + "py314-none-macosx_10_12_universal2", + "py314-none-macosx_10_11_universal2", + "py314-none-macosx_10_10_universal2", + "py314-none-macosx_10_9_universal2", + "py314-none-macosx_10_8_universal2", + "py314-none-macosx_10_7_universal2", + "py314-none-macosx_10_6_universal2", + "py314-none-macosx_10_5_universal2", + "py314-none-macosx_10_4_universal2", + "py3-none-macosx_26_0_arm64", + "py3-none-macosx_26_0_universal2", + "py3-none-macosx_25_0_arm64", + "py3-none-macosx_25_0_universal2", + "py3-none-macosx_24_0_arm64", + "py3-none-macosx_24_0_universal2", + "py3-none-macosx_23_0_arm64", + "py3-none-macosx_23_0_universal2", + "py3-none-macosx_22_0_arm64", + "py3-none-macosx_22_0_universal2", + "py3-none-macosx_21_0_arm64", + "py3-none-macosx_21_0_universal2", + "py3-none-macosx_20_0_arm64", + "py3-none-macosx_20_0_universal2", + "py3-none-macosx_19_0_arm64", + "py3-none-macosx_19_0_universal2", + "py3-none-macosx_18_0_arm64", + "py3-none-macosx_18_0_universal2", + "py3-none-macosx_17_0_arm64", + "py3-none-macosx_17_0_universal2", + "py3-none-macosx_16_0_arm64", + "py3-none-macosx_16_0_universal2", + "py3-none-macosx_15_0_arm64", + "py3-none-macosx_15_0_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", + "cp314-none-any", + "py314-none-any", + "py3-none-any" + ] +} diff --git a/.github/.platforms/windows-x86_64-py310.json b/.github/.platforms/windows-x86_64-py310.json new file mode 100644 index 00000000..8c2dded4 --- /dev/null +++ b/.github/.platforms/windows-x86_64-py310.json @@ -0,0 +1,28 @@ +{ + "marker_environment": { + "implementation_name": "cpython", + "implementation_version": "3.10.0", + "os_name": "nt", + "platform_machine": "AMD64", + "platform_python_implementation": "CPython", + "platform_release": "", + "platform_system": "Windows", + "platform_version": "", + "python_full_version": "3.10.0", + "python_version": "3.10", + "sys_platform": "win32" + }, + "compatible_tags": [ + "cp310-cp310-win_amd64", + "cp310-abi3-win_amd64", + "cp310-none-win_amd64", + "cp39-abi3-win_amd64", + "cp38-abi3-win_amd64", + "cp37-abi3-win_amd64", + "py310-none-win_amd64", + "py3-none-win_amd64", + "cp310-none-any", + "py310-none-any", + "py3-none-any" + ] +} diff --git a/.github/.platforms/windows-x86_64-py311.json b/.github/.platforms/windows-x86_64-py311.json new file mode 100644 index 00000000..b0327fab --- /dev/null +++ b/.github/.platforms/windows-x86_64-py311.json @@ -0,0 +1,29 @@ +{ + "marker_environment": { + "implementation_name": "cpython", + "implementation_version": "3.11.0", + "os_name": "nt", + "platform_machine": "AMD64", + "platform_python_implementation": "CPython", + "platform_release": "", + "platform_system": "Windows", + "platform_version": "", + "python_full_version": "3.11.0", + "python_version": "3.11", + "sys_platform": "win32" + }, + "compatible_tags": [ + "cp311-cp311-win_amd64", + "cp311-abi3-win_amd64", + "cp311-none-win_amd64", + "cp310-abi3-win_amd64", + "cp39-abi3-win_amd64", + "cp38-abi3-win_amd64", + "cp37-abi3-win_amd64", + "py311-none-win_amd64", + "py3-none-win_amd64", + "cp311-none-any", + "py311-none-any", + "py3-none-any" + ] +} diff --git a/.github/.platforms/windows-x86_64-py312.json b/.github/.platforms/windows-x86_64-py312.json new file mode 100644 index 00000000..85e10f65 --- /dev/null +++ b/.github/.platforms/windows-x86_64-py312.json @@ -0,0 +1,29 @@ +{ + "marker_environment": { + "implementation_name": "cpython", + "implementation_version": "3.12.0", + "os_name": "nt", + "platform_machine": "AMD64", + "platform_python_implementation": "CPython", + "platform_release": "", + "platform_system": "Windows", + "platform_version": "", + "python_full_version": "3.12.0", + "python_version": "3.12", + "sys_platform": "win32" + }, + "compatible_tags": [ + "cp312-cp312-win_amd64", + "cp312-abi3-win_amd64", + "cp312-none-win_amd64", + "cp310-abi3-win_amd64", + "cp39-abi3-win_amd64", + "cp38-abi3-win_amd64", + "cp37-abi3-win_amd64", + "py312-none-win_amd64", + "py3-none-win_amd64", + "cp312-none-any", + "py312-none-any", + "py3-none-any" + ] +} diff --git a/.github/.platforms/windows-x86_64-py313.json b/.github/.platforms/windows-x86_64-py313.json new file mode 100644 index 00000000..6451986e --- /dev/null +++ b/.github/.platforms/windows-x86_64-py313.json @@ -0,0 +1,29 @@ +{ + "marker_environment": { + "implementation_name": "cpython", + "implementation_version": "3.13.0", + "os_name": "nt", + "platform_machine": "AMD64", + "platform_python_implementation": "CPython", + "platform_release": "", + "platform_system": "Windows", + "platform_version": "", + "python_full_version": "3.13.0", + "python_version": "3.13", + "sys_platform": "win32" + }, + "compatible_tags": [ + "cp313-cp313-win_amd64", + "cp313-abi3-win_amd64", + "cp313-none-win_amd64", + "cp310-abi3-win_amd64", + "cp39-abi3-win_amd64", + "cp38-abi3-win_amd64", + "cp37-abi3-win_amd64", + "py313-none-win_amd64", + "py3-none-win_amd64", + "cp313-none-any", + "py313-none-any", + "py3-none-any" + ] +} diff --git a/.github/.platforms/windows-x86_64-py314.json b/.github/.platforms/windows-x86_64-py314.json new file mode 100644 index 00000000..e2e58f7c --- /dev/null +++ b/.github/.platforms/windows-x86_64-py314.json @@ -0,0 +1,29 @@ +{ + "marker_environment": { + "implementation_name": "cpython", + "implementation_version": "3.14.0", + "os_name": "nt", + "platform_machine": "AMD64", + "platform_python_implementation": "CPython", + "platform_release": "", + "platform_system": "Windows", + "platform_version": "", + "python_full_version": "3.14.0", + "python_version": "3.14", + "sys_platform": "win32" + }, + "compatible_tags": [ + "cp314-cp314-win_amd64", + "cp314-abi3-win_amd64", + "cp314-none-win_amd64", + "cp310-abi3-win_amd64", + "cp39-abi3-win_amd64", + "cp38-abi3-win_amd64", + "cp37-abi3-win_amd64", + "py314-none-win_amd64", + "py3-none-win_amd64", + "cp314-none-any", + "py314-none-any", + "py3-none-any" + ] +} diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 00000000..01f1a714 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,128 @@ +name: Lint + +on: + push: + branches: + - master + pull_request: + branches: + - "**" + +permissions: + contents: read + +jobs: + isort: + name: Check import sorting (isort) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + persist-credentials: false + + - name: Set up Python + uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # 6.1.0 + with: + python-version: "3.10" + cache: "pip" + cache-dependency-path: requirements.txt + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + + - name: Run isort + run: pre-commit run -a isort + + black: + name: Check code formatting (black) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + persist-credentials: false + + - name: Set up Python + uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # 6.1.0 + with: + python-version: "3.10" + cache: "pip" + cache-dependency-path: requirements.txt + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + + - name: Run black + run: pre-commit run -a black + + flake8: + name: Check code style (flake8) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + persist-credentials: false + + - name: Set up Python + uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # 6.1.0 + with: + python-version: "3.10" + cache: "pip" + cache-dependency-path: requirements.txt + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + + - name: Run flake8 + run: pre-commit run -a flake8 + + pyupgrade: + name: Check for Python upgrades (pyupgrade) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + persist-credentials: false + + - name: Set up Python + uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # 6.1.0 + with: + python-version: "3.10" + cache: "pip" + cache-dependency-path: requirements.txt + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + + - name: Run pyupgrade + run: pre-commit run -a pyupgrade + + pylint: + name: Run comprehensive linting (pylint) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + persist-credentials: false + + - name: Set up Python + uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # 6.1.0 + with: + python-version: "3.10" + cache: "pip" + cache-dependency-path: requirements.txt + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + + - name: Run pylint + run: pylint --rcfile=.pylintrc cloudsmith_cli diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c52a94cc..853a0ab3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,67 +5,161 @@ on: tags: - "v*" -permissions: - id-token: write - contents: write jobs: + # Build and publish to GitHub, Cloudsmith (zipapp + Docker) build: + name: Build and publish artifacts runs-on: ubuntu-latest + permissions: + id-token: write + contents: write + env: + CLOUDSMITH_NAMESPACE: ${{ vars.CLOUDSMITH_NAMESPACE }} + CLOUDSMITH_REPO: ${{ vars.CLOUDSMITH_REPO }} + CLOUDSMITH_SVC_SLUG: ${{ vars.CLOUDSMITH_SVC_SLUG }} + DOCKERHUB_USER: ${{ secrets.DOCKERHUB_USER }} steps: - - uses: actions/checkout@v2 - - name: Set up Python 3.11 - uses: actions/setup-python@v2 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: - python-version: 3.11 - - name: Install dependencies + persist-credentials: false + + - name: Set up Python 3.10 + uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # 6.1.0 + with: + python-version: '3.10' + + - name: Install build dependencies run: | python -m pip install --upgrade pip - pip install shiv + pip install pex setuptools wheel + - name: Get version id: get_version run: echo "VERSION=$(cat cloudsmith_cli/data/VERSION)" >> $GITHUB_ENV - - name: Create Zipapp - run: shiv -o cloudsmith-${{ env.VERSION }}.pyz -c cloudsmith . - - name: Create Release - id: create_release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Create multi-platform Zipapp with PEX + run: | + pex . \ + --output-file "cloudsmith.pyz" \ + --console-script cloudsmith \ + --python-shebang "/usr/bin/env python3" \ + --venv \ + --complete-platform .github/.platforms/linux-x86_64-py310.json \ + --complete-platform .github/.platforms/linux-aarch64-py310.json \ + --complete-platform .github/.platforms/linux-x86_64-musl-py310.json \ + --complete-platform .github/.platforms/linux-aarch64-musl-py310.json \ + --complete-platform .github/.platforms/macos-arm64-py310.json \ + --complete-platform .github/.platforms/windows-x86_64-py310.json \ + --complete-platform .github/.platforms/linux-x86_64-py311.json \ + --complete-platform .github/.platforms/linux-aarch64-py311.json \ + --complete-platform .github/.platforms/linux-x86_64-musl-py311.json \ + --complete-platform .github/.platforms/linux-aarch64-musl-py311.json \ + --complete-platform .github/.platforms/macos-arm64-py311.json \ + --complete-platform .github/.platforms/windows-x86_64-py311.json \ + --complete-platform .github/.platforms/linux-x86_64-py312.json \ + --complete-platform .github/.platforms/linux-aarch64-py312.json \ + --complete-platform .github/.platforms/linux-x86_64-musl-py312.json \ + --complete-platform .github/.platforms/linux-aarch64-musl-py312.json \ + --complete-platform .github/.platforms/macos-arm64-py312.json \ + --complete-platform .github/.platforms/windows-x86_64-py312.json \ + --complete-platform .github/.platforms/linux-x86_64-py313.json \ + --complete-platform .github/.platforms/linux-aarch64-py313.json \ + --complete-platform .github/.platforms/linux-x86_64-musl-py313.json \ + --complete-platform .github/.platforms/linux-aarch64-musl-py313.json \ + --complete-platform .github/.platforms/macos-arm64-py313.json \ + --complete-platform .github/.platforms/windows-x86_64-py313.json \ + --complete-platform .github/.platforms/linux-x86_64-py314.json \ + --complete-platform .github/.platforms/linux-aarch64-py314.json \ + --complete-platform .github/.platforms/linux-x86_64-musl-py314.json \ + --complete-platform .github/.platforms/linux-aarch64-musl-py314.json \ + --complete-platform .github/.platforms/macos-arm64-py314.json \ + --complete-platform .github/.platforms/windows-x86_64-py314.json + + - name: Create Release and Upload Asset + uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2.5.0 with: - tag_name: v${{ env.VERSION }} - release_name: Release v${{ env.VERSION }} - draft: false - prerelease: false - - name: Upload Release Asset - id: upload-release-asset - uses: actions/upload-release-asset@v1 + name: Release v${{ env.VERSION }} + files: ./cloudsmith.pyz env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./cloudsmith-${{ env.VERSION }}.pyz - asset_name: cloudsmith-${{ env.VERSION }}.pyz - asset_content_type: application/zip + - name: Install and authenticate Cloudsmith CLI - uses: cloudsmith-io/cloudsmith-cli-action@v1.0.3 + uses: cloudsmith-io/cloudsmith-cli-action@76c8ff51a34bea1036d9b7708f10a929624a1910 # v2.0.1 with: oidc-namespace: ${{ vars.CLOUDSMITH_NAMESPACE }} oidc-service-slug: ${{ vars.CLOUDSMITH_SVC_SLUG }} + - name: Push Zipapp to Cloudsmith id: push_zipapp - run: cloudsmith push raw ${{ vars.CLOUDSMITH_NAMESPACE }}/cli-zipapp ./cloudsmith-${{ env.VERSION }}.pyz --name cloudsmith-cli --version ${{ env.VERSION }} - - name: Build Docker image - id: build_cli_image - run: | - docker build --build-arg CLOUDSMITH_CLI_VERSION=${{ env.VERSION }} -t docker.cloudsmith.io/${{ vars.CLOUDSMITH_NAMESPACE }}/cli-zipapp/cloudsmith-cli:${{ env.VERSION }} . - - name: Push Dockerised CLI to Cloudsmith + run: cloudsmith push raw "${CLOUDSMITH_NAMESPACE}/${CLOUDSMITH_REPO}" "./cloudsmith.pyz" --name cloudsmith-cli --version "${VERSION}" + + - name: Build Python packages + run: python setup.py sdist bdist_wheel + + - name: Push source distribution to Cloudsmith + run: cloudsmith push python "${CLOUDSMITH_NAMESPACE}/cli" "dist/cloudsmith_cli-${VERSION}.tar.gz" + + - name: Push wheel to Cloudsmith + run: cloudsmith push python "${CLOUDSMITH_NAMESPACE}/cli" "dist/cloudsmith_cli-${VERSION}-py2.py3-none-any.whl" + + - name: Set up QEMU for multi-arch + uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3.7.0 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3.12.0 + + - name: Push Dockerised CLI to Cloudsmith (multi-arch) id: push_dockerised_cli_cloudsmith run: | - echo "${CLOUDSMITH_API_KEY}" | docker login docker.cloudsmith.io -u ${{ vars.CLOUDSMITH_SVC_SLUG }} --password-stdin - docker push docker.cloudsmith.io/${{ vars.CLOUDSMITH_NAMESPACE }}/cli-zipapp/cloudsmith-cli:${{ env.VERSION }} - - name: Push Dockerised CLI to DockerHub + echo "${CLOUDSMITH_API_KEY}" | docker login docker.cloudsmith.io -u "${CLOUDSMITH_SVC_SLUG}" --password-stdin + docker buildx build \ + --platform linux/amd64,linux/arm64 \ + --build-arg "CLOUDSMITH_CLI_VERSION=${VERSION}" \ + --build-arg "CLOUDSMITH_NAMESPACE=${CLOUDSMITH_NAMESPACE}" \ + --build-arg "CLOUDSMITH_REPO=${CLOUDSMITH_REPO}" \ + -t "docker.cloudsmith.io/${CLOUDSMITH_NAMESPACE}/${CLOUDSMITH_REPO}/cloudsmith-cli:${VERSION}" \ + --push . + + - name: Push Dockerised CLI to DockerHub (multi-arch) id: push_dockerised_cli_dockerhub + env: + DOCKERHUB_PAT: ${{ secrets.DOCKERHUB_PAT }} + run: | + echo "${DOCKERHUB_PAT}" | docker login -u "${DOCKERHUB_USER}" --password-stdin + docker buildx build \ + --platform linux/amd64,linux/arm64 \ + --build-arg "CLOUDSMITH_CLI_VERSION=${VERSION}" \ + --build-arg "CLOUDSMITH_NAMESPACE=${CLOUDSMITH_NAMESPACE}" \ + --build-arg "CLOUDSMITH_REPO=${CLOUDSMITH_REPO}" \ + -t "cloudsmith/cloudsmith-cli:${VERSION}" \ + --push . + + # Publish Python packages to PyPI + publish-pypi: + name: Publish to PyPI + runs-on: ubuntu-latest + permissions: + id-token: write + contents: read + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + persist-credentials: false + + - name: Set up Python 3.10 + uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # 6.1.0 + with: + python-version: '3.10' + + - name: Install build dependencies run: | - docker tag docker.cloudsmith.io/${{ vars.CLOUDSMITH_NAMESPACE }}/cli-zipapp/cloudsmith-cli:${{ env.VERSION }} cloudsmith/cloudsmith-cli:${{ env.VERSION }} - echo "${{ secrets.DOCKERHUB_PAT }}" | docker login -u ${{ vars.DOCKERHUB_USER }} --password-stdin - docker push cloudsmith/cloudsmith-cli:${{ env.VERSION }} + python -m pip install --upgrade pip + pip install setuptools wheel + + - name: Build packages + run: python setup.py sdist bdist_wheel + + - name: Publish to PyPI + uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0 + with: + packages-dir: dist/ diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 00000000..d5fa20d7 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,274 @@ +name: Test + +on: + push: + branches: + - master + pull_request: + branches: + - "**" + +permissions: + contents: read + +jobs: + # Test jobs run across Python versions + pytest: + name: Run tests (Python ${{ matrix.python-version }}) + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python-version: ['3.10', '3.11', '3.12', '3.13', '3.14'] + + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + persist-credentials: false + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # 6.1.0 + with: + python-version: ${{ matrix.python-version }} + cache: 'pip' + cache-dependency-path: requirements.txt + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + + - name: Install package + run: pip install -e . + + - name: Run pytest + env: + PYTEST_CLOUDSMITH_API_KEY: ${{ secrets.PYTEST_CLOUDSMITH_API_KEY }} + PYTEST_CLOUDSMITH_API_HOST: ${{ vars.PYTEST_CLOUDSMITH_API_HOST }} + PYTEST_CLOUDSMITH_ORGANIZATION: ${{ vars.PYTEST_CLOUDSMITH_ORGANIZATION }} + run: pytest --junitxml=./reports/pytest.xml + + - name: Upload test results + if: always() + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + with: + name: test-results-${{ matrix.python-version }} + path: ./reports/pytest.xml + retention-days: 30 + + # Build zipapp once with PEX on Python 3.10 + build-zipapp-pex: + name: Build zipapp with PEX (Python 3.10) + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + persist-credentials: false + + - name: Set up Python 3.10 + uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # 6.1.0 + with: + python-version: "3.10" + cache: "pip" + + - name: Install PEX + run: | + python -m pip install --upgrade pip + pip install pex + + - name: Get version + id: get_version + run: echo "version=$(cat cloudsmith_cli/data/VERSION)" >> "$GITHUB_OUTPUT" + + - name: Create multi-platform Zipapp with PEX + run: | + pex . \ + --output-file "cloudsmith-${STEPS_GET_VERSION_OUTPUTS_VERSION}.pyz" \ + --console-script cloudsmith \ + --python-shebang "/usr/bin/env python3" \ + --venv \ + --complete-platform .github/.platforms/linux-x86_64-py310.json \ + --complete-platform .github/.platforms/linux-aarch64-py310.json \ + --complete-platform .github/.platforms/linux-x86_64-musl-py310.json \ + --complete-platform .github/.platforms/linux-aarch64-musl-py310.json \ + --complete-platform .github/.platforms/macos-arm64-py310.json \ + --complete-platform .github/.platforms/windows-x86_64-py310.json \ + --complete-platform .github/.platforms/linux-x86_64-py311.json \ + --complete-platform .github/.platforms/linux-aarch64-py311.json \ + --complete-platform .github/.platforms/linux-x86_64-musl-py311.json \ + --complete-platform .github/.platforms/linux-aarch64-musl-py311.json \ + --complete-platform .github/.platforms/macos-arm64-py311.json \ + --complete-platform .github/.platforms/windows-x86_64-py311.json \ + --complete-platform .github/.platforms/linux-x86_64-py312.json \ + --complete-platform .github/.platforms/linux-aarch64-py312.json \ + --complete-platform .github/.platforms/linux-x86_64-musl-py312.json \ + --complete-platform .github/.platforms/linux-aarch64-musl-py312.json \ + --complete-platform .github/.platforms/macos-arm64-py312.json \ + --complete-platform .github/.platforms/windows-x86_64-py312.json \ + --complete-platform .github/.platforms/linux-x86_64-py313.json \ + --complete-platform .github/.platforms/linux-aarch64-py313.json \ + --complete-platform .github/.platforms/linux-x86_64-musl-py313.json \ + --complete-platform .github/.platforms/linux-aarch64-musl-py313.json \ + --complete-platform .github/.platforms/macos-arm64-py313.json \ + --complete-platform .github/.platforms/windows-x86_64-py313.json \ + --complete-platform .github/.platforms/linux-x86_64-py314.json \ + --complete-platform .github/.platforms/linux-aarch64-py314.json \ + --complete-platform .github/.platforms/linux-x86_64-musl-py314.json \ + --complete-platform .github/.platforms/linux-aarch64-musl-py314.json \ + --complete-platform .github/.platforms/macos-arm64-py314.json \ + --complete-platform .github/.platforms/windows-x86_64-py314.json + env: + STEPS_GET_VERSION_OUTPUTS_VERSION: ${{ steps.get_version.outputs.version }} + + - name: Upload zipapp artifact + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + with: + name: cloudsmith-zipapp + path: cloudsmith-${{ steps.get_version.outputs.version }}.pyz + retention-days: 7 + + # Test PEX-built zipapp on Alpine Linux (musl) + test-zipapp-alpine: + name: Test zipapp on Alpine (musl) - Python ${{ matrix.python-version }} + needs: build-zipapp-pex + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] + + container: + image: python:${{ matrix.python-version }}-alpine + + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + persist-credentials: false + + - name: Get version + id: get_version + run: echo "version=$(cat cloudsmith_cli/data/VERSION)" >> "$GITHUB_OUTPUT" + + - name: Download zipapp artifact + uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 + with: + name: cloudsmith-zipapp + + - name: Make zipapp executable + run: chmod +x "cloudsmith-${STEPS_GET_VERSION_OUTPUTS_VERSION}.pyz" + env: + STEPS_GET_VERSION_OUTPUTS_VERSION: ${{ steps.get_version.outputs.version }} + + - name: Validate zipapp execution + run: | + OUTPUT=$(./"cloudsmith-${STEPS_GET_VERSION_OUTPUTS_VERSION}.pyz" --version) + echo "Zipapp Version: $OUTPUT" + echo "$OUTPUT" | grep "${STEPS_GET_VERSION_OUTPUTS_VERSION}" + env: + STEPS_GET_VERSION_OUTPUTS_VERSION: ${{ steps.get_version.outputs.version }} + + # Test PEX-built zipapp on Linux ARM64 (via QEMU) + test-zipapp-arm64: + name: Test zipapp on Linux ARM64 - Python ${{ matrix.python-version }} + needs: build-zipapp-pex + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] + + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + persist-credentials: false + + - name: Set up QEMU + uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3.7.0 + with: + platforms: linux/arm64 + + - name: Get version + id: get_version + run: echo "version=$(cat cloudsmith_cli/data/VERSION)" >> "$GITHUB_OUTPUT" + + - name: Download zipapp artifact + uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 + with: + name: cloudsmith-zipapp + + - name: Test zipapp on ARM64 + run: | + docker run --rm --platform linux/arm64 \ + -v "${{ github.workspace }}:/workspace" \ + -w /workspace \ + -e "VERSION=${STEPS_GET_VERSION_OUTPUTS_VERSION}" \ + python:${{ matrix.python-version }}-slim \ + sh -c 'chmod +x "cloudsmith-${VERSION}.pyz" && ./"cloudsmith-${VERSION}.pyz" --version | grep "${VERSION}"' + env: + STEPS_GET_VERSION_OUTPUTS_VERSION: ${{ steps.get_version.outputs.version }} + + # Test PEX-built zipapp across OSes and Python versions + test-zipapp-build: + name: Test zipapp build (OS ${{ matrix.os }}, Python ${{ matrix.python-version }}) + needs: build-zipapp-pex + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] + + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + persist-credentials: false + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # 6.1.0 + with: + python-version: ${{ matrix.python-version }} + + - name: Get version (Unix) + id: get_version_unix + if: runner.os != 'Windows' + run: echo "version=$(cat cloudsmith_cli/data/VERSION)" >> "$GITHUB_OUTPUT" + + - name: Get version (Windows) + id: get_version_windows + if: runner.os == 'Windows' + shell: pwsh + run: | + $version = (Get-Content cloudsmith_cli/data/VERSION -Raw).Trim() + echo "version=$version" >> $env:GITHUB_OUTPUT + + - name: Download zipapp artifact + uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 + with: + name: cloudsmith-zipapp + + - name: Make zipapp executable (non-Windows) + if: runner.os != 'Windows' + run: chmod +x "cloudsmith-${VERSION}.pyz" + env: + VERSION: ${{ steps.get_version_unix.outputs.version }} + + - name: Validate zipapp execution (non-Windows) + if: runner.os != 'Windows' + run: | + OUTPUT=$(./"cloudsmith-${VERSION}.pyz" --version) + echo "Zipapp Version: $OUTPUT" + echo "$OUTPUT" | grep "${VERSION}" + env: + VERSION: ${{ steps.get_version_unix.outputs.version }} + + - name: Validate zipapp execution (Windows) + if: runner.os == 'Windows' + shell: pwsh + run: | + $output = python "cloudsmith-$env:STEPS_GET_VERSION_WINDOWS_OUTPUTS_VERSION.pyz" --version 2>&1 | Out-String + if (-not ($output -like "*$env:STEPS_GET_VERSION_WINDOWS_OUTPUTS_VERSION*")) { + throw "Version validation failed. Expected: $env:STEPS_GET_VERSION_WINDOWS_OUTPUTS_VERSION" + } + env: + STEPS_GET_VERSION_WINDOWS_OUTPUTS_VERSION: ${{ steps.get_version_windows.outputs.version }} diff --git a/.github/workflows/zizmor.yml b/.github/workflows/zizmor.yml new file mode 100644 index 00000000..2c19d277 --- /dev/null +++ b/.github/workflows/zizmor.yml @@ -0,0 +1,32 @@ +name: Security + +on: + push: + branches: + - master + paths: + - ".github/workflows/**" + pull_request: + branches: + - "**" + paths: + - ".github/workflows/**" + +permissions: {} + +jobs: + zizmor: + name: Scan GitHub Actions workflows + runs-on: ubuntu-latest + permissions: + security-events: write + contents: read + actions: read + steps: + - name: Checkout repository + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + with: + persist-credentials: false + + - name: Run zizmor + uses: zizmorcore/zizmor-action@e639db99335bc9038abc0e066dfcd72e23d26fb4 # v0.3.0 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 3a230ae1..8f7afd69 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -62,6 +62,11 @@ repos: hooks: - id: pyupgrade +- repo: https://github.com/zizmorcore/zizmor-pre-commit + rev: v1.20.0 + hooks: + - id: zizmor + - repo: local hooks: - id: pylint diff --git a/.pylintrc b/.pylintrc index d0167a24..9d1dbb02 100644 --- a/.pylintrc +++ b/.pylintrc @@ -88,7 +88,7 @@ persistent=yes # Minimum Python version to use for version dependent checks. Will default to # the version used to run pylint. -py-version=3.9 +py-version=3.10 # Discover python modules and packages in the file system subtree. recursive=no diff --git a/CHANGELOG.md b/CHANGELOG.md index 6e0acc47..2aef0a94 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] +- Migrate from CircleCI to GitHub Actions for testing and release workflows. +- Remove CircleCI workflows. +- Migrate from using `shiv` for zipapp generation to `pex` in order to support specific platform/arch and improve testing framework. +- Add zizmor for GitHub Actions code scans, part of workflow and pre-commit + ## [1.10.3] - 2026-01-08 ### Deprecation Notice @@ -19,6 +24,12 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Informational messages, warnings, and interactive prompts are now routed to stderr when `--output-format json` is active. - Error messages are now formatted as structured JSON on stdout when JSON output is requested. +### Added + +- Set `--show-all` to alias `--page-all` +- Add the ability to use a shortcut within `--page-size` to use pass `-1` or `*` to retrieve all pages i.e. `--page-size -1` or `--page-size *` (note the wildcard may require escaping in some shell environments) +- Added support for deny policy management commands (list, create, get, update, delete) + ## [1.10.2] - 2026-01-07 ### Fixed @@ -39,12 +50,6 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Entitlement token list command now fixed - Drop click dependency from `v8.2.0` to `v8.1.8` to fix dependency issue for Python 3.9 -### Added - -- Set `--show-all` to alias `--page-all` -- Add the ability to use a shortcut within `--page-size` to use pass `-1` or `*` to retrieve all pages i.e. `--page-size -1` or `--page-size *` (note the wildcard may require escaping in some shell environments) -- Added support for deny policy management commands (list, create, get, update, delete) - ## [1.9.4] - 2025-11-07 > No code changes in this release. Version bump performed for release process consistency and to address packaging/metadata updates. diff --git a/Dockerfile b/Dockerfile index 53b957ad..946a2db9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,9 +9,11 @@ ENV PYTHONDONTWRITEBYTECODE=1 \ RUN apk add --no-cache curl bash ca-certificates ARG CLOUDSMITH_CLI_VERSION +ARG CLOUDSMITH_NAMESPACE +ARG CLOUDSMITH_REPO RUN mkdir -p /opt/cloudsmith \ - && curl -1sLf -o /opt/cloudsmith/cloudsmith "https://dl.cloudsmith.io/public/cloudsmith/cli-zipapp/raw/names/cloudsmith-cli/versions/${CLOUDSMITH_CLI_VERSION}/cloudsmith-${CLOUDSMITH_CLI_VERSION}.pyz" \ + && curl -1sLf -o /opt/cloudsmith/cloudsmith "https://dl.cloudsmith.io/public/${CLOUDSMITH_NAMESPACE}/${CLOUDSMITH_REPO}/raw/names/cloudsmith-cli/versions/${CLOUDSMITH_CLI_VERSION}/cloudsmith.pyz" \ && chmod +x /opt/cloudsmith/cloudsmith # Default command diff --git a/setup.py b/setup.py index 07e283ce..f9eb8b7b 100644 --- a/setup.py +++ b/setup.py @@ -47,7 +47,7 @@ def get_long_description(): include_package_data=True, zip_safe=False, platforms=["any"], - python_requires=">=3.9.0", + python_requires=">=3.10.0", install_requires=[ "click>=8.1.8,!=8.3.0", "click-configfile>=0.2.3", @@ -79,7 +79,6 @@ def get_long_description(): "License :: OSI Approved :: Apache Software License", "Operating System :: POSIX :: Linux", "Programming Language :: Python", - "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12",