diff --git a/.gitattributes b/.gitattributes index a8dc694..91d7e6c 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2,4 +2,3 @@ # Auto detect text files and perform LF normalization * text=auto - diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..6e8dfb8 --- /dev/null +++ b/.github/CODE_OF_CONDUCT.md @@ -0,0 +1,58 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We pledge to make our community welcoming, safe, and equitable for all. + +We are committed to fostering an environment that respects and promotes the dignity, rights, and contributions of all individuals, regardless of characteristics including race, ethnicity, caste, color, age, physical characteristics, neurodiversity, disability, sex or gender, gender identity or expression, sexual orientation, language, philosophy or religion, national or social origin, socio-economic position, level of education, or other status. The same privileges of participation are extended to everyone who participates in good faith and in accordance with this Covenant. + +## Encouraged Behaviors + +While acknowledging differences in social norms, we all strive to meet our community’s expectations for positive behavior. We also understand that our words and actions may be interpreted differently than we intend based on culture, background, or native language. + +With these considerations in mind, we agree to behave mindfully toward each other and act in ways that center our shared values, including: + +1. Respecting the **purpose of our community**, our activities, and our ways of gathering. +2. Engaging **kindly and honestly** with others. +3. Respecting **different viewpoints** and experiences. +4. **Taking responsibility** for our actions and contributions. +5. Gracefully giving and accepting **constructive feedback**. +6. Committing to **repairing harm** when it occurs. +7. Behaving in other ways that promote and sustain the **well-being of our community**. + +## Restricted Behaviors + +We agree to restrict the following behaviors in our community. Instances, threats, and promotion of these behaviors are violations of this Code of Conduct. + +1. **Harassment**. Violating explicitly expressed boundaries or engaging in unnecessary personal attention after any clear request to stop. +2. **Character attacks**. Making insulting, demeaning, or pejorative comments directed at a community member or group of people. +3. **Stereotyping or discrimination**. Characterizing anyone’s personality or behavior on the basis of immutable identities or traits. +4. **Sexualization**. Behaving in a way that would generally be considered inappropriately intimate in the context or purpose of the community. +5. **Violating confidentiality**. Sharing or acting on someone’s personal or private information without their permission. +6. **Endangerment**. Causing, encouraging, or threatening violence or other harm toward any person or group. +7. Behaving in other ways that **threaten the well-being** of our community. + +### Other Restrictions + +1. **Misleading identity**. Impersonating someone else for any reason, or pretending to be someone else to evade enforcement actions. +2. **Failing to credit sources**. Not properly crediting the sources of content you contribute. +3. **Promotional materials**. Sharing marketing or other commercial content in a way that is outside the norms of the community. +4. **Irresponsible communication**. Failing to responsibly present content which includes, links or describes any other restricted behaviors. + + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. + + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. + + + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 3.0, available at [https://www.contributor-covenant.org/version/3/0/code_of_conduct/](https://www.contributor-covenant.org/version/3/0/code_of_conduct/) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 0000000..f7f87c8 --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,42 @@ +# Introduction + +Thank you for your interest in contributing to our project! We welcome contributions from the community and appreciate your efforts to help improve our codebase. This document provides guidelines and instructions for contributing to our project. + + +## Installation + +To set up the development environment, please follow these steps: + +1. Fork the repository: + ```bash + gh repo fork MatchCake/TorchPfaffian + ``` +2. Clone your forked repository: + ```bash + git clone + ``` +3. Navigate to the project directory: +4. Initialize the Virtual Environment using [uv](https://docs.astral.sh/uv/): + ```bash + uv sync --dev --extra + ``` + - Extra options: See the [README.md](../README.md) for details on extra options for installation. +5. Set up Pre-commit hooks: + ```bash + uv run pre-commit install + ``` + +# Guidelines + +1. When you whish to contribute, please create a new fork of the repository and create a new branch for your changes. +2. Make your changes and commit them with clear and descriptive commit messages. +3. Push your changes to your forked repository. +4. Create a pull request to the main repository on the `dev` branch, describing the changes you have made and why they are necessary. +5. Our team will review your pull request and provide feedback. We may ask for changes or improvements before merging your contribution. +6. Once your contribution is approved, it will be merged into the main repository on the `dev` branch and will eventually be included in the next release. +7. Please ensure that your code follows the project's coding standards and guidelines, and that it includes appropriate tests and documentation. + + +## Code of Conduct + +We expect all contributors to adhere to our code of conduct, which can be found in the [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) file. This code of conduct outlines our expectations for behavior and communication within the community, and we take it seriously to ensure a welcoming and inclusive environment for all contributors. diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..4bad241 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,64 @@ +name: Bug report +description: File a bug report +title: '[BUG]' +labels: "bug :bug:" + +body: + - type: markdown + id: description + attributes: + value: | + ## Before posting a bug report + Search existing GitHub issues to make sure the issue does not already exist. + + # Issue description + Description of the issue - include code snippets in the Source code section below and screenshots if relevant. + - type: textarea + id: expected + attributes: + label: Expected behavior + description: | + What do you expect to happen? + validations: + required: true + - type: textarea + id: actual + attributes: + label: Actual behavior + description: | + What actually happens? + validations: + required: true + - type: textarea + id: info + attributes: + label: Additional information + description: | + Please provide any additional information here that might be necessary to reproduce the issue. + - type: textarea + id: sourcecode + attributes: + label: Source code + description: Please include a minimal non-working example, or any other code related to the issue. + render: shell + - type: textarea + id: tracebacks + attributes: + label: Tracebacks + description: Please include the error tracebacks related to the issue here. + render: shell + - type: textarea + id: system + attributes: + label: System information + description: Please provide informations about you python version and os. The command `python -c "import sys; print(sys.version, sys.platform)"` can be used to get this information. Provide also the output of `pip list` command. + render: shell + validations: + required: true + - type: checkboxes + id: terms + attributes: + label: Existing GitHub issues + options: + - label: I have searched existing GitHub issues to make sure the issue does not already exist. + required: true diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000..9ca5a64 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,44 @@ +name: Feature request +description: Suggest a new feature +labels: "enhancement :sparkles:" + +body: + - type: markdown + id: description + attributes: + value: | + ## Before posting a feature request + Search existing GitHub issues to make sure the issue does not already exist. + + # Feature description + Description of the feature request - include code snippets and screenshots here if relevant. + - type: textarea + id: details + attributes: + label: Feature details + description: | + What feature would you like to have? + validations: + required: true + - type: textarea + id: implementation + attributes: + label: Implementation + description: | + Do you have an idea for how this could be implemented? Please include those details here. + - type: dropdown + id: urgency + attributes: + label: How important would you say this feature is? + options: + - "1: Not important. Would be nice to have." + - "2: Somewhat important. Needed this quarter." + - "3: Very important! Blocking work." + validations: + required: true + - type: textarea + id: info + attributes: + label: Additional information + description: | + Please provide any additional information here. Include potential alternative solutions, or workarounds, as well as references, if any. diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..38248d1 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,19 @@ +# Description + +Please provide a brief description of the changes you are making in this pull request. + +------------------------------------------------------------------------------------------------------------ + +# Checklist + +Please complete the following checklist when submitting a PR. The PR will not be reviewed until all items are checked. + +- [ ] All new features include a unit test. + Make sure that the tests passed and the coverage is + sufficient by running + `uv run pytest --session-timeout=600`. +- [ ] All new functions and code are clearly documented. +- [ ] The code passes all pre-commit hooks. + You can do this by running `uvx pre-commit run --all-files`. +- [ ] The code is type-checked using Mypy. + You can do this by running `uv run mypy src tests`. diff --git a/.github/workflows/build_dist.yml b/.github/workflows/build_dist.yml index 7ce5d56..95fc29b 100644 --- a/.github/workflows/build_dist.yml +++ b/.github/workflows/build_dist.yml @@ -4,6 +4,15 @@ on: push: branches: ["main"] +permissions: + contents: write + pull-requests: write + actions: write + checks: write + statuses: write + issues: write + discussions: write + id-token: write jobs: Build-Dist: @@ -12,35 +21,83 @@ jobs: steps: - uses: actions/checkout@v3 - - name: Set up Python 3.10 + - name: Set up Python 3.11 uses: actions/setup-python@v3 with: - python-version: "3.10" + python-version: "3.11" + - name: Install uv + uses: astral-sh/setup-uv@v6 + with: + version: "0.9.2" + python-version: "3.11" + enable-cache: true - name: Install dependencies run: | - python -m pip install --upgrade pip - pip install flake8 - if [ -f requirements.txt ]; then pip install -r requirements.txt; fi - pip install wheel - python -m pip install --upgrade build + uv venv .venv + uv sync --locked --dev --extra cpu + + - name: Gather new package version + id: version + uses: anothrNick/github-tag-action@1.61.0 + env: + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} + WITH_V: false + DEFAULT_BUMP: patch + DRY_RUN: true + + - name: Bump package version in pyproject.toml + run: | + uv version ${{steps.version.outputs.new_tag}} + uv lock - name: Build dist run: | - python -m build + uv run python -m build --sdist --wheel --no-isolation --outdir dist/ . + uv run twine check dist/* - - name: Commit + - name: Commit updated pyproject.toml run: | - git add -f dist git config --local user.email "action@github.com" git config --local user.name "GitHub Action" - git commit -m "Update dist" + git add pyproject.toml + git add uv.lock + git diff-index --quiet HEAD || git commit -m "Updating version of pyproject.toml" - - name: Push + - name: Push the new pyproject.toml uses: ad-m/github-push-action@master with: github_token: ${{secrets.GITHUB_TOKEN}} branch: main force: true - directory: dist + - name: Create Tag + id: tag + uses: anothrNick/github-tag-action@1.61.0 + env: + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} + WITH_V: false + DEFAULT_BUMP: patch + DRY_RUN: false + + - name: Create Release + uses: softprops/action-gh-release@v1 + with: + tag_name: ${{ steps.tag.outputs.new_tag }} + generate_release_notes: true + + - name: Merge 'main' branch -> 'dev' branch + uses: devmasx/merge-branch@master + with: + type: now + from_branch: main + target_branch: dev + message: "Automatic merge from 'main' into 'dev' [skip actions]" + label_name: "gh-actions" + github_token: ${{ secrets.GITHUB_TOKEN }} + + - name: Publish distribution to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + skip_existing: true + verbose: true diff --git a/.github/workflows/coverage_badge.yml b/.github/workflows/coverage_badge.yml new file mode 100644 index 0000000..158c43b --- /dev/null +++ b/.github/workflows/coverage_badge.yml @@ -0,0 +1,51 @@ +name: Update-Coverage-Badge + +on: + push: + branches: ["main"] + +permissions: + contents: write + pull-requests: write + actions: write + checks: write + statuses: write + issues: write + discussions: write + id-token: write + +jobs: + Update-Coverage-Badge: + name: Update-Coverage-Badge + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Set up Python 3.11 + uses: actions/setup-python@v3 + with: + python-version: "3.11" + + - name: Install uv + uses: astral-sh/setup-uv@v6 + with: + version: "0.9.2" + python-version: "3.11" + enable-cache: true + + - name: Install dependencies + run: | + uv venv .venv + uv sync --locked --dev --extra cpu + + - name: Test Unittests with pytest + run: | + uv run pytest tests --cov=src --cov-branch --cov-report="xml:tests/.tmp/coverage.xml" --cov-report=term-missing + + - name: Upload Coverage to Codecov + uses: codecov/codecov-action@v5 + with: + fail_ci_if_error: true + token: ${{ secrets.CODECOV_TOKEN }} + files: tests/.tmp/coverage.xml + verbose: true diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 7ddad9b..6dfd348 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -2,7 +2,7 @@ name: Docs on: push: - branches: ["main"] + branches: ["main", "dev"] jobs: @@ -12,28 +12,32 @@ jobs: steps: - uses: actions/checkout@v3 - - name: Set up Python 3.10 + with: + fetch-depth: 0 + + - name: Set up Python 3.11 uses: actions/setup-python@v3 with: - python-version: "3.10" + python-version: "3.11" + + - name: Install uv + uses: astral-sh/setup-uv@v6 + with: + version: "0.9.2" + python-version: "3.11" + enable-cache: true - name: Install dependencies run: | - python -m pip install --upgrade pip - pip install flake8 - if [ -f requirements.txt ]; then pip install -r requirements.txt; fi - pip install -U sphinx==6.2.1 docutils==0.18.1 sphinx_rtd_theme==1.2.2 sphinxcontrib-bibtex==2.5.0 - pip install sphinx-theme - pip install groundwork-sphinx-theme - pip install karma_sphinx_theme - pip install sphinx-mdinclude + uv venv .venv + uv sync --locked --dev --group docs --extra cpu - name: Build the sphinx docs run: | - sphinx-apidoc -f -o ./sphinx/source ./src/torch_pfaffian - make -C sphinx clean - python sphinx/clean_html_files.py - make -C sphinx html + uv run sphinx-apidoc -f -o ./sphinx/source ./src/torch_pfaffian + uv run make -C sphinx clean + uv run python sphinx/clean_html_files.py + uv run make -C sphinx html touch sphinx/build/html/.nojekyll - name: Checkout gh-pages branch @@ -44,7 +48,7 @@ jobs: - name: Copy build files to docs folder run: | cp -a sphinx/build/html/. docs/ - python sphinx/make_html_files_list.py + uv run python sphinx/make_html_files_list.py rm -rf sphinx/build - name: Commit to gh-pages branch @@ -60,4 +64,4 @@ jobs: github_token: ${{secrets.GITHUB_TOKEN}} branch: gh-pages force: true - directory: docs \ No newline at end of file + directory: docs diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml deleted file mode 100644 index bdbd65e..0000000 --- a/.github/workflows/publish.yml +++ /dev/null @@ -1,40 +0,0 @@ -name: Publish to PyPI.org -on: - release: - types: [published] -jobs: - pypi: - runs-on: ubuntu-latest - environment: - name: pypi - url: https://pypi.org/p/TorchPfaffian - permissions: - id-token: write - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - - name: Set up Python 3.10 - uses: actions/setup-python@v3 - with: - python-version: "3.10" - - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install flake8 - if [ -f requirements.txt ]; then pip install -r requirements.txt; fi - pip install wheel - - - name: Build dist - run: | - python -m pip install --upgrade build - python -m build - - name: Publish distribution to PyPI - if: startsWith(github.ref, 'refs/tags') - uses: pypa/gh-action-pypi-publish@release/v1 - with: - skip_existing: true - verbose: true diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index b0d6784..cb599e5 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,67 +1,137 @@ -# This workflow will install Python dependencies, run tests and lint with a single version of Python -# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions - name: Tests on: - push: - branches: [ "main" ] pull_request: - branches: [ "main" ] + branches: [ "*" ] permissions: - contents: read + contents: write + pull-requests: write + actions: write + checks: write + statuses: write + issues: write + discussions: write jobs: Run-tests-on-Ubuntu: name: Run tests on Ubuntu-latest runs-on: ubuntu-latest + strategy: + matrix: + python-version: [ "3.10", "3.11", "3.12", "3.13", "3.14", ] steps: - - uses: actions/checkout@v3 - - name: Set up Python 3.10 - uses: actions/setup-python@v3 - with: - python-version: "3.10" - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install flake8 pytest - pip install -U pytest-cov coverage-lcov - if [ -f requirements.txt ]; then pip install -r requirements.txt; fi - - name: Lint with flake8 - run: | - # stop the build if there are Python syntax errors or undefined names - flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics - # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide - flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics - - name: Test with pytest - run: | - python run_pytests.py tests --N_RANDOM_TESTS_PER_CASE=10 --run_slow=False - coverage-lcov + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v3 + with: + python-version: ${{ matrix.python-version }} + - name: Install uv + uses: astral-sh/setup-uv@v6 + with: + version: "0.9.2" + python-version: ${{ matrix.python-version }} + enable-cache: true + - name: Install dependencies + run: | + uv venv .venv + uv sync --locked --dev --extra cpu + - name: Test Linting + run: | + uv run ruff format --check src tests + uv run ruff check src tests + - name: Test Typing + continue-on-error: true + run: | + uv run mypy src tests + - name: Test Unittests with pytest + run: | + uv run pytest tests \ + ${{ github.event.pull_request.head.repo.full_name != github.repository && '--cov-fail-under=98' || '' }} \ + --cov=src --cov-branch --cov-report="xml:tests/.tmp/coverage.xml" --cov-report=term-missing --durations=30 --session-timeout=600 + + - name: Debug coverage before upload + if: matrix.python-version == '3.11' + run: | + echo "=== Coverage summary ===" + head -5 tests/.tmp/coverage.xml + + - name: Upload coverage artifact + if: | + matrix.python-version == '3.11' && + github.event.pull_request.head.repo.full_name == github.repository + uses: actions/upload-artifact@v4 + with: + name: coverage + path: tests/.tmp/coverage.xml + if-no-files-found: error + retention-days: 1 + + - name: Test Build + if: ${{ matrix.python-version == '3.11' }} + run: | + uv run python -m build --sdist --wheel --no-isolation --outdir dist/ . + uv run twine check dist/* Run-tests-on-Windows: name: Run tests on Windows-latest + needs: [ Run-tests-on-Ubuntu ] runs-on: windows-latest + if: success() + strategy: + matrix: + python-version: [ "3.10", "3.11", "3.12", "3.13", "3.14", ] steps: - - uses: actions/checkout@v3 - - name: Set up Python 3.10 - uses: actions/setup-python@v3 - with: - python-version: "3.10" - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install flake8 pytest - pip install -r requirements.txt - pip install git+https://github.com/JeremieGince/PythonBasicTools - - name: Lint with flake8 - run: | - # stop the build if there are Python syntax errors or undefined names - flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics - # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide - flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics - - name: Test with pytest - run: | - python run_pytests.py tests --N_RANDOM_TESTS_PER_CASE=10 --run_slow=False + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v3 + with: + python-version: ${{ matrix.python-version }} + - name: Install uv + uses: astral-sh/setup-uv@v6 + with: + version: "0.9.2" + python-version: ${{ matrix.python-version }} + enable-cache: true + - name: Install dependencies + run: | + uv venv .venv + uv sync --locked --dev --extra cpu + - name: Test Unittests with pytest + run: | + uv run pytest tests --session-timeout=600 + + + Coverage: + name: Post Coverage Report + needs: [ Run-tests-on-Ubuntu ] + runs-on: ubuntu-latest + if: success() && github.event.pull_request.head.repo.full_name == github.repository + permissions: + contents: write + pull-requests: write + actions: write + checks: write + statuses: write + issues: write + discussions: write + steps: + - uses: actions/checkout@v4 + - name: Download coverage artifact + uses: actions/download-artifact@v4 + with: + path: tests/.tmp + name: coverage + - run: ls -R tests/.tmp + - name: Debug coverage file + run: cat tests/.tmp/coverage.xml | head -50 + - name: Post coverage + uses: orgoro/coverage@v3.2 + with: + token: ${{ secrets.GITHUB_TOKEN }} + coverageFile: tests/.tmp/coverage.xml + thresholdAll: 0.98 + thresholdNew: 0.98 + thresholdModified: 0.98 diff --git a/.gitignore b/.gitignore index a368195..840287c 100644 --- a/.gitignore +++ b/.gitignore @@ -178,6 +178,7 @@ instance/ # Sphinx documentation docs/_build/ doc/_build/ +sphinx/source/notebooks/ # PyBuilder target/ @@ -294,6 +295,7 @@ pip-selfcheck.json user/ tests/tmp +tests/.tmp .report.json tests/master_src report_dir @@ -301,4 +303,6 @@ auxil out tmp_report_dir .tmp_report.json -coverage.json \ No newline at end of file +coverage.json +dist/*.whl +dist/*.tar.gz diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..c90d531 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,42 @@ +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v6.0.0 + hooks: + - id: check-added-large-files + # uv.lock is a generated lockfile that legitimately exceeds the 500 KB default. + args: ["--maxkb=1024"] + - id: check-docstring-first + - id: check-merge-conflict + - id: check-toml + - id: check-yaml + - id: detect-private-key + - id: trailing-whitespace + - id: end-of-file-fixer + + - repo: https://github.com/astral-sh/uv-pre-commit + rev: 0.9.28 + hooks: + - id: uv-sync + - id: uv-lock + - id: uv-export + args: + [ + "--frozen", + "--no-hashes", + "--output-file=requirements.txt", + "--quiet", + ] + + - repo: https://github.com/tsvikas/sync-with-uv + rev: v0.5.0 + hooks: + - id: sync-with-uv + + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.15.16 + hooks: + # Run the linter. + - id: ruff-check + args: [--fix, --exit-non-zero-on-fix] + # Run the formatter. + - id: ruff-format diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..2dce1fc --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,44 @@ +# Code style + +## Files +- No file-level docstrings. Move any documentation into the class docstring instead. +- For files with only module-level functions, omit the module docstring entirely. + +## Comments +- No separator comments between methods or functions (e.g. no `# --- Public interface ---`). +- Inline comments inside function bodies are fine when they clarify non-obvious things (e.g. tensor shape annotations). +- Use em dashes (—) sparingly in docstrings and comments. Prefer plain sentence structure over dashes. + +## Naming conventions +- Variable names must be lowercase with underscores (`snake_case`). No single-letter or abbreviated names unless the meaning is unambiguous in context (e.g. `n` for the matrix dimension, `k` for a loop index). +- Choose descriptive names that reflect the role of the variable (e.g. `block_size` instead of `m`, `n_terms` instead of `K`). +- Module-level constants must be `UPPER_SNAKE_CASE`. + +## Type hints and docstrings +- All public functions and methods must have full type annotations on every parameter and the return type. +- Docstrings use Sphinx style: `:param name: description`, `:return: description`, `:rtype: type`. + +## Tensors and backends +- Any function that accepts a tensor argument must return a tensor with the same backend, dtype, and device as its primary input. +- Tensor functions must support arbitrary leading batch dimensions (expressed as `...` in shape comments, e.g. `(..., 2n, 2n)`). +- Hardware-specific branches (CUDA, platform-only code) that cannot run in CI must be marked `# pragma: no cover`. + +## Testing +- Every new class or module-level function must have an associated test class added in the same PR/commit. +- Tests must achieve >98% code coverage for the new code. Numerical comparisons use tolerance constants from `tests/configs.py` (`ATOL_SCALAR_COMPARISON`, `ATOL_MATRIX_COMPARISON`, etc.) — never hardcode tolerance values. +- The `tests/` folder must mirror the package structure (replacing `src/torch_pfaffian/` with `tests/` and prefixing each path segment with `test_`). For example, `src/torch_pfaffian/utils.py` → `tests/test_utils.py`, and `src/torch_pfaffian/strategies/pfaffian_block_det.py` → `tests/test_strategies/test_pfaffian_block_det.py`. +- One test class per file. Each test file contains exactly one `Test*` class. +- All tests must be methods of a `Test*` class. No module-level `test_*` functions. +- Tests must be compatible with pytest-xdist parallel execution: no shared mutable state between tests, no dependency on execution order, and no hardcoded resources (ports, file paths) that would conflict across workers. +- Prefer `np.testing` and `torch.testing` assertion helpers over bare `assert` statements for numerical comparisons. Use `torch.autograd.gradcheck` when testing gradient correctness. + +## Class method ordering +Methods within a class must appear in this order: +1. `@staticmethod` +2. `@classmethod` +3. Constructor (`__init__`) +4. Operator / dunder methods (`__call__`, `__repr__`, …) +5. Public methods +6. Protected methods (`_method`) +7. Private methods (`__method`) +8. Properties (`@property`) diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..c317064 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1 @@ +AGENTS.md diff --git a/README.md b/README.md index 7c20897..e2c9feb 100644 --- a/README.md +++ b/README.md @@ -10,21 +10,21 @@ ![Tests Workflow](https://github.com/MatchCake/TorchPfaffian/actions/workflows/tests.yml/badge.svg) ![Dist Workflow](https://github.com/MatchCake/TorchPfaffian/actions/workflows/build_dist.yml/badge.svg) ![Doc Workflow](https://github.com/MatchCake/TorchPfaffian/actions/workflows/docs.yml/badge.svg) -![Publish Workflow](https://github.com/MatchCake/TorchPfaffian/actions/workflows/publish.yml/badge.svg) +![Coverage Badge Workflow](https://github.com/MatchCake/TorchPfaffian/actions/workflows/coverage_badge.yml/badge.svg) # Description -TorchPfaffian is a Python package for efficiently computing the Pfaffian of skew-symmetric matrices using PyTorch. -Designed as a PyTorch-based alternative to [pfapack](https://github.com/basnijholt/pfapack), it enables GPU -acceleration and supports automatic differentiation, making it particularly useful in physics, quantum computing, -and machine learning applications. +TorchPfaffian is a Python package for efficiently computing the Pfaffian of skew-symmetric matrices using PyTorch. +Designed as a PyTorch-based alternative to [pfapack](https://github.com/basnijholt/pfapack), it enables GPU +acceleration and supports automatic differentiation, making it particularly useful in physics, quantum computing, +and machine learning applications. ## Features: -- Efficient Pfaffian computation for skew-symmetric matrices -- GPU acceleration via PyTorch -- Support for automatic differentiation -- Seamless integration with PyTorch tensors +- Efficient Pfaffian computation for skew-symmetric matrices +- GPU acceleration via PyTorch +- Support for automatic differentiation +- Seamless integration with PyTorch tensors @@ -36,10 +36,13 @@ With `python` and `pip` installed, run the following commands to install TorchPf pip install torchpfaffian ``` -With `poetry` installed, run the following commands to install TorchPfaffian: +For development, this project uses [uv](https://docs.astral.sh/uv/). Clone the repository and set up the +environment with: ```bash -poetry add torchpfaffian +uv sync --dev --extra cpu ``` +Use the `cu128` or `cu130` extra instead of `cpu` to install a CUDA-enabled build of PyTorch. See +[.github/CONTRIBUTING.md](.github/CONTRIBUTING.md) for the full contribution workflow. # Important Links diff --git a/archives/_pfaffian.py b/archives/_pfaffian.py index 45b7101..13b4aed 100644 --- a/archives/_pfaffian.py +++ b/archives/_pfaffian.py @@ -5,13 +5,12 @@ It is used as a reference to implement the `pfaffian` functions. """ - -from typing import Union, Literal, Optional -import numpy as np import warnings +from typing import Literal, Optional, Union -import tqdm +import numpy as np import pennylane as qml +import tqdm from torch_pfaffian import Pfaffian @@ -51,26 +50,24 @@ def _compute_gauss_vector(__matrix, k): zero_like = convert_and_cast_like(0, __matrix) tau_norm = __matrix[..., k, k + 1][..., None] zero_mask = qml.math.isclose(tau_norm, zero_like) - tau = qml.math.where(zero_mask, zero_like, __matrix[..., k, k + 2:] / tau_norm) + tau = qml.math.where(zero_mask, zero_like, __matrix[..., k, k + 2 :] / tau_norm) return tau def _update_matrix_block_kp2_kp2(__matrix, k, tau): add_matrix = qml.math.zeros_like(__matrix) - add_matrix[..., k + 2:, k + 2:] += ( - qml.math.einsum("...i,...j->...ij", tau, __matrix[..., k + 2:, k + 1]) - - - qml.math.einsum("...i,...j->...ij", __matrix[..., k + 2:, k + 1], tau) - ) + add_matrix[..., k + 2 :, k + 2 :] += qml.math.einsum( + "...i,...j->...ij", tau, __matrix[..., k + 2 :, k + 1] + ) - qml.math.einsum("...i,...j->...ij", __matrix[..., k + 2 :, k + 1], tau) return __matrix + add_matrix def batch_pfaffian_ltl( - __matrix: TensorLike, - overwrite_input: bool = False, - test_input: bool = False, - p_bar: Optional[tqdm.tqdm] = None, - show_progress: bool = False + __matrix: TensorLike, + overwrite_input: bool = False, + test_input: bool = False, + p_bar: Optional[tqdm.tqdm] = None, + show_progress: bool = False, ) -> Union[float, complex, TensorLike]: r""" Compute the Pfaffian of a real or complex skew-symmetric @@ -117,7 +114,7 @@ def batch_pfaffian_ltl( # Quick return if possible if n % 2 == 1: - p_bar.n = n//2 + p_bar.n = n // 2 p_bar.set_description("Odd-sized matrix") p_bar.close() return pfaffian_val * zero_like * matrix[..., 0, 0] # 0.0 but with require grad if needed @@ -125,7 +122,7 @@ def batch_pfaffian_ltl( p_bar.set_description(f"Computing Pfaffian of {shape} matrix") for k in p_bar: # First, find the largest entry in A[k+1:,k] and permute it to A[k+1,k] - kp = k + 1 + qml.math.abs(matrix[..., k + 1:, k]).argmax(-1) + kp = k + 1 + qml.math.abs(matrix[..., k + 1 :, k]).argmax(-1) kp1 = qml.math.convert_like(k + 1, kp) # Check if we need to pivot @@ -139,7 +136,7 @@ def batch_pfaffian_ltl( zero_ss_condition = qml.math.isclose(matrix[..., k + 1, k], zero_like) pfaffian_val *= qml.math.where(zero_ss_condition, zero_like, matrix[..., k, k + 1]) if qml.math.all(zero_ss_condition): - p_bar.n = n//2 + p_bar.n = n // 2 p_bar.set_description("Pfaffian is zero") p_bar.close() return pfaffian_val @@ -176,7 +173,7 @@ def batch_householder_complex(x: TensorLike): v_frobenius_norm = qml.math.einsum("...i,...i->...", qml.math.conjugate(v), v) ** 0.5 v = v / v_frobenius_norm[..., None] - tau = convert_and_cast_like(2.0+0.0j, x) + tau = convert_and_cast_like(2.0 + 0.0j, x) return v, tau, -phase * norm_x @@ -200,14 +197,14 @@ def _eliminate_ith_column_householder(matrix, i, alpha): where_mask = qml.math.cast(qml.math.zeros_like(matrix), dtype=bool) where_mask[..., i + 1, i] = True where_mask[..., i, i + 1] = True - where_mask[..., i + 2:, i] = True - where_mask[..., i, i + 2:] = True + where_mask[..., i + 2 :, i] = True + where_mask[..., i, i + 2 :] = True values = qml.math.zeros_like(matrix) values[..., i + 1, i] = alpha values[..., i, i + 1] = -alpha - values[..., i + 2:, i] = zero_like - values[..., i, i + 2:] = zero_like + values[..., i + 2 :, i] = zero_like + values[..., i, i + 2 :] = zero_like matrix = qml.math.where(where_mask, values, matrix) return matrix @@ -227,22 +224,20 @@ def _update_matrix_block_householder(matrix, i, v, tau): :param tau: :return: """ - w = tau * qml.math.einsum("...ij,...j->...i", matrix[..., i + 1:, i + 1:], qml.math.conjugate(v)) + w = tau * qml.math.einsum("...ij,...j->...i", matrix[..., i + 1 :, i + 1 :], qml.math.conjugate(v)) values = qml.math.zeros_like(matrix) - values[..., i + 1:, i + 1:] += ( - qml.math.einsum("...i,...j->...ij", v, w) - - - qml.math.einsum("...i,...j->...ij", w, v) + values[..., i + 1 :, i + 1 :] += qml.math.einsum("...i,...j->...ij", v, w) - qml.math.einsum( + "...i,...j->...ij", w, v ) return matrix + values def batch_pfaffian_householder( - __matrix: TensorLike, - overwrite_input: bool = False, - test_input: bool = False, - p_bar: Optional[tqdm.tqdm] = None, - show_progress: bool = False + __matrix: TensorLike, + overwrite_input: bool = False, + test_input: bool = False, + p_bar: Optional[tqdm.tqdm] = None, + show_progress: bool = False, ): """pfaffian(A, overwrite_a=False) @@ -284,7 +279,7 @@ def batch_pfaffian_householder( p_bar.set_description(f"Computing Pfaffian of {shape} matrix") for i in p_bar: # Find a Householder vector to eliminate the i-th column - v, tau, alpha = batch_householder_complex(matrix[..., i + 1:, i]) + v, tau, alpha = batch_householder_complex(matrix[..., i + 1 :, i]) matrix = _eliminate_ith_column_householder(matrix, i, alpha) matrix = _update_matrix_block_householder(matrix, i, v, tau) @@ -299,10 +294,7 @@ def batch_pfaffian_householder( def pfaffian_by_det( - __matrix: TensorLike, - p_bar: Optional[tqdm.tqdm] = None, - show_progress: bool = False, - epsilon: float = 1e-12 + __matrix: TensorLike, p_bar: Optional[tqdm.tqdm] = None, show_progress: bool = False, epsilon: float = 1e-12 ): shape = qml.math.shape(__matrix) p_bar = p_bar or tqdm.tqdm(total=1, disable=not show_progress) @@ -323,12 +315,12 @@ def pfaffian_by_det( def pfaffian( - __matrix: TensorLike, - overwrite_input: bool = False, - method: Literal["P", "H", "det", "bLTL", "bH"] = "bLTL", - epsilon: float = 1e-12, - p_bar: Optional[tqdm.tqdm] = None, - show_progress: bool = False + __matrix: TensorLike, + overwrite_input: bool = False, + method: Literal["P", "H", "det", "bLTL", "bH"] = "bLTL", + epsilon: float = 1e-12, + p_bar: Optional[tqdm.tqdm] = None, + show_progress: bool = False, ) -> Union[float, complex, TensorLike]: """pfaffian(A, overwrite_a=False, method='P') @@ -362,17 +354,17 @@ def pfaffian( if method == "P": from pfapack.pfaffian import pfaffian + warnings.warn( - "The method 'P' is not implemented yet. " - "It is recommended to use the method 'det' instead.", + "The method 'P' is not implemented yet. It is recommended to use the method 'det' instead.", UserWarning, ) return pfaffian(__matrix, overwrite_input, method="P") elif method == "H": from pfapack.pfaffian import pfaffian_householder + warnings.warn( - "The method 'H' is not implemented yet. " - "It is recommended to use the method 'det' instead.", + "The method 'H' is not implemented yet. It is recommended to use the method 'det' instead.", UserWarning, ) return pfaffian_householder(__matrix, overwrite_input) diff --git a/archives/_test_pfaffian.py b/archives/_test_pfaffian.py index 897dcc3..a320154 100644 --- a/archives/_test_pfaffian.py +++ b/archives/_test_pfaffian.py @@ -2,12 +2,12 @@ import pytest from tests.configs import ( - N_RANDOM_TESTS_PER_CASE, - TEST_SEED, - ATOL_SCALAR_COMPARISON, - RTOL_SCALAR_COMPARISON, ATOL_MATRIX_COMPARISON, + ATOL_SCALAR_COMPARISON, + N_RANDOM_TESTS_PER_CASE, RTOL_MATRIX_COMPARISON, + RTOL_SCALAR_COMPARISON, + TEST_SEED, set_seed, ) from torch_pfaffian import utils @@ -34,7 +34,7 @@ def gen_skew_symmetric_matrix_and_det(n, batch_size=None): gen_skew_symmetric_matrix_and_det(i, batch_size=None) for i in range(MIN_MATRIX_SIZE, MAX_MATRIX_SIZE + 1) for _ in range(N_RANDOM_TESTS_PER_CASE) - ] + ], ) def test_get_skew_symmetric_matrix_and_det(matrix, det): try: @@ -42,7 +42,7 @@ def test_get_skew_symmetric_matrix_and_det(matrix, det): except ImportError: pytest.skip("pfapack is not installed.") pf = pfaffian(matrix) - np.testing.assert_allclose(pf ** 2, det, atol=ATOL_SCALAR_COMPARISON, rtol=RTOL_SCALAR_COMPARISON) + np.testing.assert_allclose(pf**2, det, atol=ATOL_SCALAR_COMPARISON, rtol=RTOL_SCALAR_COMPARISON) @pytest.mark.parametrize( @@ -53,11 +53,11 @@ def test_get_skew_symmetric_matrix_and_det(matrix, det): for _ in range(N_RANDOM_TESTS_PER_CASE) for mth in RECOMMENDED_METHODS for batch_size in [None, BATCH_SIZE] - ] + ], ) def test_pfaffian_methods(matrix, det, mth): pf = utils.pfaffian(matrix, method=mth) - np.testing.assert_allclose(pf ** 2, det, atol=10 * ATOL_SCALAR_COMPARISON, rtol=10 * RTOL_SCALAR_COMPARISON) + np.testing.assert_allclose(pf**2, det, atol=10 * ATOL_SCALAR_COMPARISON, rtol=10 * RTOL_SCALAR_COMPARISON) @pytest.mark.parametrize( @@ -66,11 +66,11 @@ def test_pfaffian_methods(matrix, det, mth): gen_skew_symmetric_matrix_and_det(i, batch_size=BATCH_SIZE) for i in range(MIN_MATRIX_SIZE, MAX_MATRIX_SIZE + 1) for _ in range(N_RANDOM_TESTS_PER_CASE) - ] + ], ) def test_batch_pfaffian_ltl(matrix, det): pf = utils._pfaffian.batch_pfaffian_ltl(matrix) - np.testing.assert_allclose(pf ** 2, det, atol=ATOL_MATRIX_COMPARISON, rtol=RTOL_MATRIX_COMPARISON) + np.testing.assert_allclose(pf**2, det, atol=ATOL_MATRIX_COMPARISON, rtol=RTOL_MATRIX_COMPARISON) @pytest.mark.parametrize( @@ -79,11 +79,11 @@ def test_batch_pfaffian_ltl(matrix, det): gen_skew_symmetric_matrix_and_det(i, batch_size=BATCH_SIZE) for i in range(MIN_MATRIX_SIZE, MAX_MATRIX_SIZE + 1) for _ in range(N_RANDOM_TESTS_PER_CASE) - ] + ], ) def test_pfaffian_bltl(matrix, det): pf = utils.pfaffian(matrix, method="bLTL") - np.testing.assert_allclose(pf ** 2, det, atol=ATOL_MATRIX_COMPARISON, rtol=RTOL_MATRIX_COMPARISON) + np.testing.assert_allclose(pf**2, det, atol=ATOL_MATRIX_COMPARISON, rtol=RTOL_MATRIX_COMPARISON) @pytest.mark.parametrize( @@ -93,11 +93,11 @@ def test_pfaffian_bltl(matrix, det): for batch_size in [None, 1] for i in range(MIN_MATRIX_SIZE, MAX_MATRIX_SIZE + 1) for _ in range(N_RANDOM_TESTS_PER_CASE) - ] + ], ) def test_pfaffian_bltl_single_item(matrix, det): pf = utils.pfaffian(matrix, method="bLTL") - np.testing.assert_allclose(pf ** 2, det, atol=ATOL_MATRIX_COMPARISON, rtol=RTOL_MATRIX_COMPARISON) + np.testing.assert_allclose(pf**2, det, atol=ATOL_MATRIX_COMPARISON, rtol=RTOL_MATRIX_COMPARISON) @pytest.mark.parametrize( @@ -108,7 +108,7 @@ def test_pfaffian_bltl_single_item(matrix, det): for _ in range(N_RANDOM_TESTS_PER_CASE) for mth in RECOMMENDED_METHODS for batch_size in [None, BATCH_SIZE] - ] + ], ) def test_pfaffian_methods_grads(n, batch_size, mth): try: @@ -130,7 +130,7 @@ def test_pfaffian_methods_grads(n, batch_size, mth): matrix = torch.from_numpy(np_matrix).requires_grad_() pf = utils.pfaffian(matrix, method=mth) - pred_det = torch.real(pf ** 2) + pred_det = torch.real(pf**2) with torch.no_grad(): np.testing.assert_allclose(pred_det, det, atol=10 * ATOL_SCALAR_COMPARISON, rtol=10 * RTOL_SCALAR_COMPARISON) @@ -140,9 +140,7 @@ def test_pfaffian_methods_grads(n, batch_size, mth): assert pred_grad is not None if mth == "det": np.testing.assert_allclose( - torch.abs(pred_grad), torch.abs(true_grad), - atol=ATOL_MATRIX_COMPARISON, - rtol=RTOL_MATRIX_COMPARISON + torch.abs(pred_grad), torch.abs(true_grad), atol=ATOL_MATRIX_COMPARISON, rtol=RTOL_MATRIX_COMPARISON ) @@ -152,11 +150,11 @@ def test_pfaffian_methods_grads(n, batch_size, mth): gen_skew_symmetric_matrix_and_det(i, batch_size=BATCH_SIZE) for i in range(MIN_MATRIX_SIZE, MAX_MATRIX_SIZE + 1) for _ in range(N_RANDOM_TESTS_PER_CASE) - ] + ], ) def test_pfaffian_bh(matrix, det): pf = utils.pfaffian(matrix, method="bH") - np.testing.assert_allclose(pf ** 2, det, atol=ATOL_MATRIX_COMPARISON, rtol=RTOL_MATRIX_COMPARISON) + np.testing.assert_allclose(pf**2, det, atol=ATOL_MATRIX_COMPARISON, rtol=RTOL_MATRIX_COMPARISON) @pytest.mark.parametrize( @@ -166,8 +164,8 @@ def test_pfaffian_bh(matrix, det): for batch_size in [None, 1] for i in range(MIN_MATRIX_SIZE, MAX_MATRIX_SIZE + 1) for _ in range(N_RANDOM_TESTS_PER_CASE) - ] + ], ) def test_pfaffian_bltl_single_item(matrix, det): pf = utils.pfaffian(matrix, method="bH") - np.testing.assert_allclose(pf ** 2, det, atol=ATOL_MATRIX_COMPARISON, rtol=RTOL_MATRIX_COMPARISON) + np.testing.assert_allclose(pf**2, det, atol=ATOL_MATRIX_COMPARISON, rtol=RTOL_MATRIX_COMPARISON) diff --git a/archives/pfaffian_perm.py b/archives/pfaffian_perm.py index 90859f0..fd4ce3c 100644 --- a/archives/pfaffian_perm.py +++ b/archives/pfaffian_perm.py @@ -1,7 +1,6 @@ -import itertools -from typing import Any -import torch import numpy as np +import torch + from .strategy import PfaffianStrategy @@ -10,6 +9,7 @@ class PfaffianPerm(PfaffianStrategy): This class implements the Pfaffian using the determinant of the matrix for the forward pass and the derivative of the Pfaffian with respect to the input matrix for the backward pass. """ + NAME = "PfaffianPerm" @staticmethod @@ -34,7 +34,7 @@ def forward(matrix: torch.Tensor): for i in range(_i_matrix.shape[0]) for j in range(i, _j_matrix.shape[0]) ], - axis=0 + axis=0, ) pf_matrix = torch.prod(matrix[..., ij_matrix[..., 0], ij_matrix[..., 1]], dim=-1) @@ -57,7 +57,5 @@ def backward(ctx: torch.autograd.function.FunctionCtx, grad_output): matrix, pf = ctx.saved_tensors grad_matrix = None if ctx.needs_input_grad[0]: - grad_matrix = torch.einsum('...,...ij->...ji', 0.5 * grad_output * pf, torch.linalg.pinv(matrix)) + grad_matrix = torch.einsum("...,...ij->...ji", 0.5 * grad_output * pf, torch.linalg.pinv(matrix)) return grad_matrix - - diff --git a/notebooks/_strategies_benchmark_helpers.py b/notebooks/_strategies_benchmark_helpers.py new file mode 100644 index 0000000..e7557d0 --- /dev/null +++ b/notebooks/_strategies_benchmark_helpers.py @@ -0,0 +1,185 @@ +import time +from collections.abc import Callable + +import matplotlib.pyplot as plt +import numpy as np +import torch +from torch.profiler import ProfilerActivity, profile + +from torch_pfaffian.strategies.strategy import PfaffianStrategy + +Strategy = type[PfaffianStrategy] +BenchmarkResults = dict[str, dict[str, list[float]]] + +METRICS = ("forward_time", "backward_time", "forward_memory", "forward_backward_memory") + + +def make_block_antidiagonal( + n: int, batch_size: int, dtype: torch.dtype = torch.float64, device: str = "cpu" +) -> torch.Tensor: + """ + Build a batch of block-antidiagonal skew matrices ``[[0, B], [-B^T, 0]]``. + + :param n: Half the matrix dimension; the result has shape ``(batch_size, 2n, 2n)``. + :param batch_size: Number of matrices in the batch. + :param dtype: Floating dtype of the matrices. + :param device: Device on which to allocate the matrices. + :return: A tensor of shape ``(batch_size, 2n, 2n)``. + :rtype: torch.Tensor + """ + block = torch.randn(batch_size, n, n, dtype=dtype, device=device) + zero = torch.zeros_like(block) + top = torch.cat([zero, block], dim=-1) + bottom = torch.cat([-block.transpose(-1, -2), zero], dim=-1) + return torch.cat([top, bottom], dim=-2) + + +def _synchronize(is_cuda: bool) -> None: + if is_cuda: + torch.cuda.synchronize() + + +def _median_time(fn: Callable[[], object], is_cuda: bool, n_repeats: int = 3) -> float: + fn() # warm-up + _synchronize(is_cuda) + timings = [] + for _ in range(n_repeats): + _synchronize(is_cuda) + start = time.perf_counter() + fn() + _synchronize(is_cuda) + timings.append(time.perf_counter() - start) + return float(np.median(timings)) + + +def _peak_memory(fn: Callable[[], object], is_cuda: bool) -> float: + # On CUDA this is the true peak; on CPU it is the profiler-reported allocated bytes. + if is_cuda: + torch.cuda.reset_peak_memory_stats() + fn() + torch.cuda.synchronize() + return float(torch.cuda.max_memory_allocated()) + with profile(activities=[ProfilerActivity.CPU], profile_memory=True) as prof: + fn() + return float(sum(e.cpu_memory_usage for e in prof.key_averages() if e.cpu_memory_usage > 0)) + + +def _forward_call(strategy: Strategy, matrix: torch.Tensor) -> torch.Tensor: + return strategy.apply(matrix) + + +def _forward_backward_call(strategy: Strategy, matrix: torch.Tensor) -> torch.Tensor: + grad_matrix = matrix.detach().clone().requires_grad_(True) + strategy.apply(grad_matrix).sum().backward() + return grad_matrix + + +def _confidence_interval(values: np.ndarray, confidence_z: float = 1.96) -> float: + # Half-width of the normal-approximation confidence interval for the mean. + if values.size < 2: + return 0.0 + return float(confidence_z * values.std(ddof=1) / np.sqrt(values.size)) + + +def benchmark_strategies( + strategies: list[Strategy], + sizes_n: list[int], + batch_size: int, + device: str = "cpu", + n_seeds: int = 20, + n_repeats: int = 3, +) -> BenchmarkResults: + """ + Benchmark forward/backward time and memory of each strategy over several random seeds. + + For each matrix dimension and strategy the metric is measured once per seed; the returned + values are the across-seed mean and the half-width of the 95% confidence interval. + + :param strategies: The strategy classes to benchmark (each exposes ``NAME`` and ``apply``). + :param sizes_n: Half-dimensions to sweep; each yields matrices of dimension ``2n``. + :param batch_size: Number of matrices per benchmarked batch. + :param device: Device on which to run the benchmark. + :param n_seeds: Number of random seeds used to build the confidence intervals. + :param n_repeats: Number of timed repeats per seed (the median is kept). + :return: A mapping ``strategy_name -> {"dimension", "_mean", "_ci"}``. + :rtype: dict + """ + is_cuda = device == "cuda" + results: BenchmarkResults = { + strategy.NAME: { + "dimension": [], + **{f"{metric}_mean": [] for metric in METRICS}, + **{f"{metric}_ci": [] for metric in METRICS}, + } + for strategy in strategies + } + + for n in sizes_n: + per_seed: dict[str, dict[str, list[float]]] = { + strategy.NAME: {metric: [] for metric in METRICS} for strategy in strategies + } + for seed in range(n_seeds): + torch.manual_seed(seed) + matrix = make_block_antidiagonal(n, batch_size, dtype=torch.float64, device=device) + for strategy in strategies: + forward_time = _median_time(lambda: _forward_call(strategy, matrix), is_cuda, n_repeats) + full_time = _median_time(lambda: _forward_backward_call(strategy, matrix), is_cuda, n_repeats) + record = per_seed[strategy.NAME] + record["forward_time"].append(forward_time) + record["backward_time"].append(max(full_time - forward_time, 0.0)) + record["forward_memory"].append(_peak_memory(lambda: _forward_call(strategy, matrix), is_cuda)) + record["forward_backward_memory"].append( + _peak_memory(lambda: _forward_backward_call(strategy, matrix), is_cuda) + ) + + for strategy in strategies: + results[strategy.NAME]["dimension"].append(2 * n) + for metric in METRICS: + values = np.asarray(per_seed[strategy.NAME][metric], dtype=float) + results[strategy.NAME][f"{metric}_mean"].append(float(values.mean())) + results[strategy.NAME][f"{metric}_ci"].append(_confidence_interval(values)) + return results + + +def plot_results( + results: BenchmarkResults, strategies: list[Strategy], batch_size: int, device: str = "cpu" +) -> plt.Figure: + """ + Plot the benchmark results as a 2x2 grid of time and memory panels with 95% CI bands. + + :param results: The mapping returned by :func:`benchmark_strategies`. + :param strategies: The strategy classes that were benchmarked. + :param batch_size: Batch size used for the benchmark (shown in the title). + :param device: Device used for the benchmark (shown in the title and memory label). + :return: The matplotlib figure. + :rtype: matplotlib.figure.Figure + """ + memory_label = "peak memory (bytes, CUDA)" if device == "cuda" else "allocated bytes (CPU)" + panels = [ + ("forward_time", "Forward time", "time [s]"), + ("backward_time", "Backward time", "time [s]"), + ("forward_memory", "Forward memory", memory_label), + ("forward_backward_memory", "Forward + backward memory", memory_label), + ] + + fig, axes = plt.subplots(2, 2, figsize=(12, 9)) + for ax, (key, title, ylabel) in zip(axes.flat, panels): + for strategy in strategies: + record = results[strategy.NAME] + dimension = np.asarray(record["dimension"], dtype=float) + mean = np.asarray(record[f"{key}_mean"], dtype=float) + ci = np.asarray(record[f"{key}_ci"], dtype=float) + line = ax.plot(dimension, mean, marker="o", label=strategy.NAME)[0] + lower = np.clip(mean - ci, np.finfo(float).tiny, None) + ax.fill_between(dimension, lower, mean + ci, alpha=0.2, color=line.get_color()) + ax.set_title(title) + ax.set_xlabel("matrix dimension (2n)") + ax.set_ylabel(ylabel) + ax.set_xscale("log", base=2) + ax.set_yscale("log") + ax.grid(True, which="both", linestyle=":", alpha=0.5) + ax.legend() + + fig.suptitle(f"Pfaffian strategies benchmark (batch_size={batch_size}, device={device}, 95% CI over seeds)") + fig.tight_layout() + return fig diff --git a/notebooks/strategies_benchmark.ipynb b/notebooks/strategies_benchmark.ipynb new file mode 100644 index 0000000..3742965 --- /dev/null +++ b/notebooks/strategies_benchmark.ipynb @@ -0,0 +1,326 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "56c973ab", + "metadata": {}, + "source": [ + "# Benchmarking the Pfaffian strategies\n", + "\n", + "This notebook benchmarks the available Pfaffian strategies in terms of **time** and **memory** for both the **forward** and **backward** passes.\n", + "\n", + "Three strategies are compared:\n", + "\n", + "- `PfaffianFDBPf`: computes the Pfaffian from `sqrt(|det(A)|)` with a custom **analytic** backward. Valid for any skew-symmetric matrix.\n", + "- `PfaffianBlockDet`: computes the Pfaffian from the determinant of the upper-right block, with a custom analytic backward.\n", + "- `PfaffianDet`: a reference baseline that also computes `pf = sqrt(|det(A)|)` but differentiates straight through `det`/`sqrt` with **plain autograd** (no custom backward), to expose the cost of naive autodiff against the analytic backward of `PfaffianFDBPf`.\n", + "\n", + "Each strategy is invoked through `Strategy.apply(matrix)`.\n", + "\n", + "For each strategy and matrix size we report, **averaged over 20 random seeds with 95% confidence intervals**:\n", + "\n", + "- the median forward time,\n", + "- the median backward time,\n", + "- the forward peak memory,\n", + "- the forward + backward peak memory." + ] + }, + { + "cell_type": "markdown", + "id": "55b95a09", + "metadata": {}, + "source": [ + "## Validity note\n", + "\n", + "`PfaffianBlockDet`'s forward only returns the *true* Pfaffian for **block-antidiagonal** skew matrices of the form\n", + "\n", + "$$ A = \\begin{pmatrix} 0 & B \\\\ -B^{T} & 0 \\end{pmatrix}. $$\n", + "\n", + "To keep the comparison both **fair** and **numerically valid**, we benchmark *all* strategies on block-antidiagonal inputs. `PfaffianFDBPf` and `PfaffianDet` are valid on any skew matrix (including this form), so this input shape is a common ground on which all strategies compute the same quantity." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "2305932f", + "metadata": { + "ExecuteTime": { + "end_time": "2026-06-10T14:25:10.025490742Z", + "start_time": "2026-06-10T14:25:08.874486863Z" + }, + "execution": { + "iopub.execute_input": "2026-06-10T14:16:52.667639Z", + "iopub.status.busy": "2026-06-10T14:16:52.667294Z", + "iopub.status.idle": "2026-06-10T14:16:54.207116Z", + "shell.execute_reply": "2026-06-10T14:16:54.205473Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Running benchmarks on device: cpu\n" + ] + } + ], + "source": [ + "import os\n", + "import sys\n", + "\n", + "# The helper module lives next to this notebook; ensure it is importable both when\n", + "# running the notebook directly and when it is executed during the Sphinx docs build.\n", + "sys.path.insert(0, os.getcwd())\n", + "\n", + "import torch\n", + "from _strategies_benchmark_helpers import benchmark_strategies, plot_results\n", + "\n", + "from torch_pfaffian.strategies.pfaffian_block_det import PfaffianBlockDet\n", + "from torch_pfaffian.strategies.pfaffian_det import PfaffianDet\n", + "from torch_pfaffian.strategies.pfaffian_fdbpf import PfaffianFDBPf\n", + "\n", + "strategies = [PfaffianFDBPf, PfaffianBlockDet, PfaffianDet]\n", + "\n", + "device = \"cuda\" if torch.cuda.is_available() else \"cpu\"\n", + "print(f\"Running benchmarks on device: {device}\")" + ] + }, + { + "cell_type": "markdown", + "id": "8838f08f", + "metadata": {}, + "source": [ + "## Running the benchmark\n", + "\n", + "The benchmarking and plotting logic lives in `_strategies_benchmark_helpers.py` to keep this notebook focused on the narrative. `benchmark_strategies` sweeps the matrix dimension `2n` and, for every strategy, measures each metric once per seed across `n_seeds` seeds, returning the across-seed mean and the half-width of the 95% confidence interval." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "b6a3c6b4", + "metadata": { + "ExecuteTime": { + "end_time": "2026-06-10T14:25:22.671153790Z", + "start_time": "2026-06-10T14:25:10.033292322Z" + }, + "execution": { + "iopub.execute_input": "2026-06-10T14:16:54.210625Z", + "iopub.status.busy": "2026-06-10T14:16:54.210309Z", + "iopub.status.idle": "2026-06-10T14:17:21.107161Z", + "shell.execute_reply": "2026-06-10T14:17:21.105779Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/local/USHERBROOKE/ginj2102/github/TorchPfaffian/.venv/lib/python3.14/site-packages/torch/profiler/profiler.py:217: UserWarning: Warning: Profiler clears events at the end of each cycle.Only events from the current cycle will be reported.To keep events across cycles, set acc_events=True.\n", + " _warn_once(\n" + ] + }, + { + "data": { + "text/plain": [ + "{'PfaffianFDBPf': {'dimension': [4, 8, 16, 32, 64],\n", + " 'forward_time_mean': [8.39531006931793e-05,\n", + " 8.420960039074998e-05,\n", + " 0.0048694635002902945,\n", + " 0.0038942812007007888,\n", + " 0.005135932300981949],\n", + " 'backward_time_mean': [0.00023082459956640377,\n", + " 0.005614171149136382,\n", + " 0.0037422726509248605,\n", + " 0.0035597407983004813,\n", + " 0.007134951999250916],\n", + " 'forward_memory_mean': [5578.0, 13622.0, 42042.4, 147885.2, 556360.8],\n", + " 'forward_backward_memory_mean': [51952.75,\n", + " 191664.4,\n", + " 741525.9,\n", + " 2922178.35,\n", + " 11609078.25],\n", + " 'forward_time_ci': [9.135929690982144e-06,\n", + " 3.2582327167016847e-06,\n", + " 0.0009277367240195104,\n", + " 0.0012259096343144602,\n", + " 0.0024523398701700883],\n", + " 'backward_time_ci': [1.66414058654275e-05,\n", + " 0.0011459601539736321,\n", + " 0.0012184828913370757,\n", + " 0.0010552649404508374,\n", + " 0.002653286676583563],\n", + " 'forward_memory_ci': [29.3318367720307,\n", + " 24.815081322708405,\n", + " 102.10139647068085,\n", + " 30.656304800154892,\n", + " 40.23282740303128],\n", + " 'forward_backward_memory_ci': [4.743538874367067,\n", + " 21.21989739545609,\n", + " 162.69658520403138,\n", + " 34.345881944220274,\n", + " 52.56864599840158]},\n", + " 'PfaffianBlockDet': {'dimension': [4, 8, 16, 32, 64],\n", + " 'forward_time_mean': [7.726129915681667e-05,\n", + " 7.922490076452959e-05,\n", + " 8.57123999594478e-05,\n", + " 0.0034056200998747953,\n", + " 0.0026923404508124803],\n", + " 'backward_time_mean': [0.00013435915170703083,\n", + " 0.0001344478991086362,\n", + " 0.00016380800007027575,\n", + " 0.0020619140501366927,\n", + " 0.00030570419985451733],\n", + " 'forward_memory_mean': [2748.0, 5211.6, 13258.0, 41630.8, 147519.2],\n", + " 'forward_backward_memory_mean': [19599.05,\n", + " 71313.3,\n", + " 274652.7,\n", + " 1091927.6,\n", + " 4345071.7],\n", + " 'forward_time_ci': [3.169456596676188e-06,\n", + " 2.4604736536371967e-06,\n", + " 2.3125298299448165e-06,\n", + " 0.0013217441709651864,\n", + " 0.0012497851096257763],\n", + " 'backward_time_ci': [3.1405466727071304e-06,\n", + " 4.261377559919364e-06,\n", + " 5.229660731091481e-06,\n", + " 0.0011858865161943775,\n", + " 0.00018241185806708765],\n", + " 'forward_memory_ci': [25.777422026179995,\n", + " 22.071778484609798,\n", + " 22.287644535647285,\n", + " 25.872,\n", + " 30.415286129112605],\n", + " 'forward_backward_memory_ci': [84.88650624773861,\n", + " 66.22060255651084,\n", + " 3213.0211251070227,\n", + " 29.615975830977654,\n", + " 39.7277365762723]},\n", + " 'PfaffianDet': {'dimension': [4, 8, 16, 32, 64],\n", + " 'forward_time_mean': [2.814660001604352e-05,\n", + " 3.418759915803093e-05,\n", + " 0.004134788549345103,\n", + " 0.002652941150518018,\n", + " 0.00029987425114086363],\n", + " 'backward_time_mean': [0.0001211243503348669,\n", + " 0.0001411523018759908,\n", + " 5.7608549832366406e-05,\n", + " 0.00020152409961156082,\n", + " 0.0013275362496642628],\n", + " 'forward_memory_mean': [5464.4, 13483.2, 41928.4, 147770.4, 556153.2],\n", + " 'forward_backward_memory_mean': [39437.6,\n", + " 143664.2,\n", + " 554873.8,\n", + " 2188320.6,\n", + " 8699278.2],\n", + " 'forward_time_ci': [1.2732541170077155e-06,\n", + " 1.207109827186109e-06,\n", + " 0.0013741837643709278,\n", + " 0.0012392837411897722,\n", + " 0.00019687483453382923],\n", + " 'backward_time_ci': [2.5277217525177566e-06,\n", + " 5.454397998524737e-06,\n", + " 3.565945106097614e-05,\n", + " 0.00010193383971478204,\n", + " 0.00023040019338968858],\n", + " 'forward_memory_ci': [45.91907264788897,\n", + " 16.69521850237682,\n", + " 96.97527751795408,\n", + " 35.6852606931327,\n", + " 52.39233383857443],\n", + " 'forward_backward_memory_ci': [34.74130008778419,\n", + " 29.6061432600878,\n", + " 34.246935795314904,\n", + " 22.767103951003282,\n", + " 46.1319567830325]}}" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sizes_n = [2, 4, 8, 16, 32]\n", + "batch_size = 16\n", + "n_seeds = 20\n", + "\n", + "results = benchmark_strategies(strategies, sizes_n, batch_size, device=device, n_seeds=n_seeds)\n", + "results" + ] + }, + { + "cell_type": "markdown", + "id": "0ad995ad", + "metadata": {}, + "source": [ + "## Results" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "e414240b2fc6064e", + "metadata": { + "ExecuteTime": { + "end_time": "2026-06-10T14:25:48.810201185Z", + "start_time": "2026-06-10T14:25:47.642776418Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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gRtvvBFKpRKTJk0SPwzffvttxMXFQavVerXPWbNm4V//+hemTp2Ko0ePIjExERs2bEBwcLBPx6C57rvvPmzevBkPPPAA9u3bh2uuuQZOpxNnzpzB5s2bsWfPHgwePPiK96NQKPDiiy9ixowZGDVqFO666y6UlJRg1apVSEtLw2OPPebTtu68807861//gkwmw1133XXF9SOEEEKaQu0N/7LZbBg7diz+/Oc/4+zZs3jjjTcwYsQI3HzzzQCA4cOHIzIyEtOmTcMjjzwCjuOwYcOGOh1NPM9jzZo1mDRpEgYMGIAZM2YgMTERZ86cwa+//lpvp45arcbOnTtx3XXXYfz48fjmm2885qQaOXIk3n//ffTt2xeRkZEAIN5qee7cOdx9990e25s4cSK2bt2KW265BRMmTEB+fj7efPNNZGZmorq62qvj8dxzz2H37t0YOXIkHnzwQTgcDrz++uvo3bs3fvnlF5+ObXOsWLEC+/btw9ChQzFr1ixkZmaisrISx44dw5dffonKykq/7Kd///6YNm0a3nrrLfEWzUOHDmH9+vWYMmWKx+i5plx11VXo06eP+OCegQMH+qWOhNBIKUKIT66//nrs3r0b0dHRWLhwIV5++WVcffXVOHDgQIOTI9bHfbWyZ8+eiI6OrrP88gkte/TogY8++ggcx2H+/Pl48803MXv2bDz66KNe7zM4OBh79+7FjTfeiNdffx3PP/88RowYgX/84x9eb+NK8DyPbdu2YcWKFThx4gTmz5+P5557DocPH8ajjz4qTnjuD9OnT8cHH3wAm82Gp556Cv/+979xyy234LvvvqvztJymTJ06FYDraYCJiYl+qyMhhBDSEGpv+Ne//vUv9OrVCwsXLsS6detw1113Yfv27eLtb9HR0di5cycSExPx7LPP4uWXX8YNN9xQb52zs7Oxb98+dO/eHa+88goef/xx7N27F5MmTWpw/+Hh4dizZw8SEhJwww034Pz58+L/uXPg7jQEXA9hGTZsmMf/u02fPh3Lli3D8ePH8cgjj2DPnj3YuHGjTxf2+vXrhz179iA2NhYLFy7Eu+++i+eeew633HKL19u4EvHx8Th06BBmzJiBrVu34uGHH8aqVatQWVmJF1980a/7euedd8T25rx58/DVV1/h//7v//D+++/7vC13m5AmOCf+xLHmzoxLCCGkQzh+/DgG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xz92WB3Hjvt4evfuTUVFxXHv27hxI+eeey7XXnstt99++0m9Vnl5OQB9+vRp0/hFRETijfonj/onj/onkfbTpJSItMnq1as588wzufHGGznttNMYNmzYN77pSkpKavZNVKhuvfVWfD4fy5cv5w9/+APvvPNOi4895ZRTaGxsZP369cHbtmzZ0myzy47Qt29fBgwYwLZt2xg2bFizP7m5uSE9V1ZWFtdffz3PP/88t956K4sXLz7u40aNGsXq1aub3bZ69WpGjBiB3+8/6VpOO+00Nm7c+I3bv/jiC6ZPn84VV1zBPffcc9LPv2HDBgYNGkTv3r1P+jlERERsov5J/VNr1D9JZ5cQ7QGISHwYPnw4f/3rX1mxYgW5ubk88cQTrF27tlljkZOTw4oVK9iyZQu9evUiIyOjzc//6quv8pe//IU1a9YwceJE5s+fzxVXXMFnn31Gjx49vvH4kSNHMmvWLK677joeeeQREhISuPnmm8NymeTf/va33HTTTWRkZDBr1izq6upYt24dFRUV3HLLLW16jptvvpnZs2czYsQIKioqePfddxk1atRxH3vrrbeSl5fHXXfdxWWXXcaaNWv405/+1OyKNSdj5syZ/Pu//zsVFRXB93TDhg3MmDGDmTNncsstt7B7927AOyUh1G/sPvjgg28sWxcREenM1D+pf2qN+ifp7LRSSkTa5LrrruPSSy/lsssuY+rUqezfv58bb7yx2WPmzp3LyJEjmTx5Mn369PnGt1Ut2bt3L3PmzGHhwoVMnDgR8BqZvn37cv3117f43y1ZsoQBAwaQn5/PpZdeyrXXXktmZubJF9mCa665hscee4wlS5Ywbtw48vPzefzxx0P6pi8QCDBv3jxGjRrFrFmzGDFiRItN0sSJE3n22Wd5+umnGTt2LHfccQd33nknV155ZbvqGDduXPC5m/zjH/9g7969LF26lP79+wf/5OXlhfTctbW1vPjii8ydO7ddYxQREbGJ+if1Tyei/kkEHGOMifYgREQkMl599VXmz5/Phg0b8Pk67nuJRx55hBdeeIE33nijw55TREREJBaofxIJH52+JyLSiVx44YUUFhZSUlJCVlZWhz1vYmJiuzceFREREYlF6p9EwkcrpUREREREREREJOK0p5SIiIiIiIiIiEScJqVERERERERERCTiNCklIiIiIiIiIiIRp0kpERERERERERGJOE1KiYiIiIiIiIhIxGlSSkREREREREREIk6TUiIiIiIiIiIiEnGalBIRERERERERkYjTpJSIiIiIiIiIiETc/wdVV25wv31U2QAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = plot_results(results, strategies, batch_size, device=device)" + ] + }, + { + "cell_type": "markdown", + "id": "8e444db9", + "metadata": {}, + "source": [ + "## Conclusions and caveats\n", + "\n", + "The figure above reports, as a function of the matrix dimension $2n$, the median forward time, the median backward time, the forward peak memory, and the combined forward + backward peak memory for every strategy, evaluated on block-antidiagonal skew matrices. Shaded bands are 95% confidence intervals over the 20 seeds (they are essentially invisible for memory, which is seed-independent for a fixed shape).\n", + "\n", + "**Memory-metric caveat.** The memory numbers depend on the device:\n", + "\n", + "- On **CUDA**, the reported value is a true peak obtained from `torch.cuda.reset_peak_memory_stats()` / `torch.cuda.max_memory_allocated()`.\n", + "- On **CPU** (the continuous-integration case), no equivalent peak counter exists, so we report the **allocated bytes** measured by `torch.profiler` instead. This is an aggregate of allocations rather than a strict instantaneous peak, so CPU and CUDA memory values are not directly comparable and the absolute CPU numbers should be read as a relative indicator across strategies and sizes.\n", + "\n", + "`PfaffianFDBPf` and `PfaffianDet` share the same forward (`sqrt(|det(A)|)`); their difference is the backward, so the backward panels highlight the analytic custom backward against plain autograd." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.14.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/poetry.lock b/poetry.lock deleted file mode 100644 index a593822..0000000 --- a/poetry.lock +++ /dev/null @@ -1,563 +0,0 @@ -# This file is automatically @generated by Poetry 2.0.1 and should not be changed by hand. - -[[package]] -name = "filelock" -version = "3.16.1" -description = "A platform independent file lock." -optional = false -python-versions = ">=3.8" -groups = ["main"] -markers = "python_version == \"3.8\" or python_version >= \"3.9\"" -files = [ - {file = "filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0"}, - {file = "filelock-3.16.1.tar.gz", hash = "sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435"}, -] - -[package.extras] -docs = ["furo (>=2024.8.6)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4.1)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.6.1)", "diff-cover (>=9.2)", "pytest (>=8.3.3)", "pytest-asyncio (>=0.24)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.26.4)"] -typing = ["typing-extensions (>=4.12.2)"] - -[[package]] -name = "fsspec" -version = "2025.2.0" -description = "File-system specification" -optional = false -python-versions = ">=3.8" -groups = ["main"] -markers = "python_version == \"3.8\" or python_version >= \"3.9\"" -files = [ - {file = "fsspec-2025.2.0-py3-none-any.whl", hash = "sha256:9de2ad9ce1f85e1931858535bc882543171d197001a0a5eb2ddc04f1781ab95b"}, - {file = "fsspec-2025.2.0.tar.gz", hash = "sha256:1c24b16eaa0a1798afa0337aa0db9b256718ab2a89c425371f5628d22c3b6afd"}, -] - -[package.extras] -abfs = ["adlfs"] -adl = ["adlfs"] -arrow = ["pyarrow (>=1)"] -dask = ["dask", "distributed"] -dev = ["pre-commit", "ruff"] -doc = ["numpydoc", "sphinx", "sphinx-design", "sphinx-rtd-theme", "yarl"] -dropbox = ["dropbox", "dropboxdrivefs", "requests"] -full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs", "smbprotocol", "tqdm"] -fuse = ["fusepy"] -gcs = ["gcsfs"] -git = ["pygit2"] -github = ["requests"] -gs = ["gcsfs"] -gui = ["panel"] -hdfs = ["pyarrow (>=1)"] -http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)"] -libarchive = ["libarchive-c"] -oci = ["ocifs"] -s3 = ["s3fs"] -sftp = ["paramiko"] -smb = ["smbprotocol"] -ssh = ["paramiko"] -test = ["aiohttp (!=4.0.0a0,!=4.0.0a1)", "numpy", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "requests"] -test-downstream = ["aiobotocore (>=2.5.4,<3.0.0)", "dask[dataframe,test]", "moto[server] (>4,<5)", "pytest-timeout", "xarray"] -test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "cloudpickle", "dask", "distributed", "dropbox", "dropboxdrivefs", "fastparquet", "fusepy", "gcsfs", "jinja2", "kerchunk", "libarchive-c", "lz4", "notebook", "numpy", "ocifs", "pandas", "panel", "paramiko", "pyarrow", "pyarrow (>=1)", "pyftpdlib", "pygit2", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "python-snappy", "requests", "smbprotocol", "tqdm", "urllib3", "zarr", "zstandard"] -tqdm = ["tqdm"] - -[[package]] -name = "jinja2" -version = "3.1.5" -description = "A very fast and expressive template engine." -optional = false -python-versions = ">=3.7" -groups = ["main"] -markers = "python_version == \"3.8\" or python_version >= \"3.9\"" -files = [ - {file = "jinja2-3.1.5-py3-none-any.whl", hash = "sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb"}, - {file = "jinja2-3.1.5.tar.gz", hash = "sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb"}, -] - -[package.dependencies] -MarkupSafe = ">=2.0" - -[package.extras] -i18n = ["Babel (>=2.7)"] - -[[package]] -name = "markupsafe" -version = "2.1.5" -description = "Safely add untrusted strings to HTML/XML markup." -optional = false -python-versions = ">=3.7" -groups = ["main"] -markers = "python_version == \"3.8\" or python_version >= \"3.9\"" -files = [ - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, - {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, -] - -[[package]] -name = "mpmath" -version = "1.3.0" -description = "Python library for arbitrary-precision floating-point arithmetic" -optional = false -python-versions = "*" -groups = ["main"] -markers = "python_version == \"3.8\" or python_version >= \"3.9\"" -files = [ - {file = "mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c"}, - {file = "mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f"}, -] - -[package.extras] -develop = ["codecov", "pycodestyle", "pytest (>=4.6)", "pytest-cov", "wheel"] -docs = ["sphinx"] -gmpy = ["gmpy2 (>=2.1.0a4)"] -tests = ["pytest (>=4.6)"] - -[[package]] -name = "networkx" -version = "3.1" -description = "Python package for creating and manipulating graphs and networks" -optional = false -python-versions = ">=3.8" -groups = ["main"] -markers = "python_version == \"3.8\" or python_version >= \"3.9\"" -files = [ - {file = "networkx-3.1-py3-none-any.whl", hash = "sha256:4f33f68cb2afcf86f28a45f43efc27a9386b535d567d2127f8f61d51dec58d36"}, - {file = "networkx-3.1.tar.gz", hash = "sha256:de346335408f84de0eada6ff9fafafff9bcda11f0a0dfaa931133debb146ab61"}, -] - -[package.extras] -default = ["matplotlib (>=3.4)", "numpy (>=1.20)", "pandas (>=1.3)", "scipy (>=1.8)"] -developer = ["mypy (>=1.1)", "pre-commit (>=3.2)"] -doc = ["nb2plots (>=0.6)", "numpydoc (>=1.5)", "pillow (>=9.4)", "pydata-sphinx-theme (>=0.13)", "sphinx (>=6.1)", "sphinx-gallery (>=0.12)", "texext (>=0.6.7)"] -extra = ["lxml (>=4.6)", "pydot (>=1.4.2)", "pygraphviz (>=1.10)", "sympy (>=1.10)"] -test = ["codecov (>=2.1)", "pytest (>=7.2)", "pytest-cov (>=4.0)"] - -[[package]] -name = "numpy" -version = "1.24.4" -description = "Fundamental package for array computing in Python" -optional = false -python-versions = ">=3.8" -groups = ["main"] -markers = "python_version == \"3.8\" or python_version >= \"3.9\"" -files = [ - {file = "numpy-1.24.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0bfb52d2169d58c1cdb8cc1f16989101639b34c7d3ce60ed70b19c63eba0b64"}, - {file = "numpy-1.24.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ed094d4f0c177b1b8e7aa9cba7d6ceed51c0e569a5318ac0ca9a090680a6a1b1"}, - {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79fc682a374c4a8ed08b331bef9c5f582585d1048fa6d80bc6c35bc384eee9b4"}, - {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ffe43c74893dbf38c2b0a1f5428760a1a9c98285553c89e12d70a96a7f3a4d6"}, - {file = "numpy-1.24.4-cp310-cp310-win32.whl", hash = "sha256:4c21decb6ea94057331e111a5bed9a79d335658c27ce2adb580fb4d54f2ad9bc"}, - {file = "numpy-1.24.4-cp310-cp310-win_amd64.whl", hash = "sha256:b4bea75e47d9586d31e892a7401f76e909712a0fd510f58f5337bea9572c571e"}, - {file = "numpy-1.24.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f136bab9c2cfd8da131132c2cf6cc27331dd6fae65f95f69dcd4ae3c3639c810"}, - {file = "numpy-1.24.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2926dac25b313635e4d6cf4dc4e51c8c0ebfed60b801c799ffc4c32bf3d1254"}, - {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:222e40d0e2548690405b0b3c7b21d1169117391c2e82c378467ef9ab4c8f0da7"}, - {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7215847ce88a85ce39baf9e89070cb860c98fdddacbaa6c0da3ffb31b3350bd5"}, - {file = "numpy-1.24.4-cp311-cp311-win32.whl", hash = "sha256:4979217d7de511a8d57f4b4b5b2b965f707768440c17cb70fbf254c4b225238d"}, - {file = "numpy-1.24.4-cp311-cp311-win_amd64.whl", hash = "sha256:b7b1fc9864d7d39e28f41d089bfd6353cb5f27ecd9905348c24187a768c79694"}, - {file = "numpy-1.24.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1452241c290f3e2a312c137a9999cdbf63f78864d63c79039bda65ee86943f61"}, - {file = "numpy-1.24.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:04640dab83f7c6c85abf9cd729c5b65f1ebd0ccf9de90b270cd61935eef0197f"}, - {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5425b114831d1e77e4b5d812b69d11d962e104095a5b9c3b641a218abcc050e"}, - {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd80e219fd4c71fc3699fc1dadac5dcf4fd882bfc6f7ec53d30fa197b8ee22dc"}, - {file = "numpy-1.24.4-cp38-cp38-win32.whl", hash = "sha256:4602244f345453db537be5314d3983dbf5834a9701b7723ec28923e2889e0bb2"}, - {file = "numpy-1.24.4-cp38-cp38-win_amd64.whl", hash = "sha256:692f2e0f55794943c5bfff12b3f56f99af76f902fc47487bdfe97856de51a706"}, - {file = "numpy-1.24.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2541312fbf09977f3b3ad449c4e5f4bb55d0dbf79226d7724211acc905049400"}, - {file = "numpy-1.24.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9667575fb6d13c95f1b36aca12c5ee3356bf001b714fc354eb5465ce1609e62f"}, - {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3a86ed21e4f87050382c7bc96571755193c4c1392490744ac73d660e8f564a9"}, - {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d11efb4dbecbdf22508d55e48d9c8384db795e1b7b51ea735289ff96613ff74d"}, - {file = "numpy-1.24.4-cp39-cp39-win32.whl", hash = "sha256:6620c0acd41dbcb368610bb2f4d83145674040025e5536954782467100aa8835"}, - {file = "numpy-1.24.4-cp39-cp39-win_amd64.whl", hash = "sha256:befe2bf740fd8373cf56149a5c23a0f601e82869598d41f8e188a0e9869926f8"}, - {file = "numpy-1.24.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:31f13e25b4e304632a4619d0e0777662c2ffea99fcae2029556b17d8ff958aef"}, - {file = "numpy-1.24.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95f7ac6540e95bc440ad77f56e520da5bf877f87dca58bd095288dce8940532a"}, - {file = "numpy-1.24.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e98f220aa76ca2a977fe435f5b04d7b3470c0a2e6312907b37ba6068f26787f2"}, - {file = "numpy-1.24.4.tar.gz", hash = "sha256:80f5e3a4e498641401868df4208b74581206afbee7cf7b8329daae82676d9463"}, -] - -[[package]] -name = "nvidia-cublas-cu12" -version = "12.4.5.8" -description = "CUBLAS native runtime libraries" -optional = false -python-versions = ">=3" -groups = ["main"] -markers = "python_version == \"3.8\" and platform_system == \"Linux\" and platform_machine == \"x86_64\" or python_version >= \"3.9\" and platform_system == \"Linux\" and platform_machine == \"x86_64\"" -files = [ - {file = "nvidia_cublas_cu12-12.4.5.8-py3-none-manylinux2014_aarch64.whl", hash = "sha256:0f8aa1706812e00b9f19dfe0cdb3999b092ccb8ca168c0db5b8ea712456fd9b3"}, - {file = "nvidia_cublas_cu12-12.4.5.8-py3-none-manylinux2014_x86_64.whl", hash = "sha256:2fc8da60df463fdefa81e323eef2e36489e1c94335b5358bcb38360adf75ac9b"}, - {file = "nvidia_cublas_cu12-12.4.5.8-py3-none-win_amd64.whl", hash = "sha256:5a796786da89203a0657eda402bcdcec6180254a8ac22d72213abc42069522dc"}, -] - -[[package]] -name = "nvidia-cuda-cupti-cu12" -version = "12.4.127" -description = "CUDA profiling tools runtime libs." -optional = false -python-versions = ">=3" -groups = ["main"] -markers = "python_version == \"3.8\" and platform_system == \"Linux\" and platform_machine == \"x86_64\" or python_version >= \"3.9\" and platform_system == \"Linux\" and platform_machine == \"x86_64\"" -files = [ - {file = "nvidia_cuda_cupti_cu12-12.4.127-py3-none-manylinux2014_aarch64.whl", hash = "sha256:79279b35cf6f91da114182a5ce1864997fd52294a87a16179ce275773799458a"}, - {file = "nvidia_cuda_cupti_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl", hash = "sha256:9dec60f5ac126f7bb551c055072b69d85392b13311fcc1bcda2202d172df30fb"}, - {file = "nvidia_cuda_cupti_cu12-12.4.127-py3-none-win_amd64.whl", hash = "sha256:5688d203301ab051449a2b1cb6690fbe90d2b372f411521c86018b950f3d7922"}, -] - -[[package]] -name = "nvidia-cuda-nvrtc-cu12" -version = "12.4.127" -description = "NVRTC native runtime libraries" -optional = false -python-versions = ">=3" -groups = ["main"] -markers = "python_version == \"3.8\" and platform_system == \"Linux\" and platform_machine == \"x86_64\" or python_version >= \"3.9\" and platform_system == \"Linux\" and platform_machine == \"x86_64\"" -files = [ - {file = "nvidia_cuda_nvrtc_cu12-12.4.127-py3-none-manylinux2014_aarch64.whl", hash = "sha256:0eedf14185e04b76aa05b1fea04133e59f465b6f960c0cbf4e37c3cb6b0ea198"}, - {file = "nvidia_cuda_nvrtc_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl", hash = "sha256:a178759ebb095827bd30ef56598ec182b85547f1508941a3d560eb7ea1fbf338"}, - {file = "nvidia_cuda_nvrtc_cu12-12.4.127-py3-none-win_amd64.whl", hash = "sha256:a961b2f1d5f17b14867c619ceb99ef6fcec12e46612711bcec78eb05068a60ec"}, -] - -[[package]] -name = "nvidia-cuda-runtime-cu12" -version = "12.4.127" -description = "CUDA Runtime native Libraries" -optional = false -python-versions = ">=3" -groups = ["main"] -markers = "python_version == \"3.8\" and platform_system == \"Linux\" and platform_machine == \"x86_64\" or python_version >= \"3.9\" and platform_system == \"Linux\" and platform_machine == \"x86_64\"" -files = [ - {file = "nvidia_cuda_runtime_cu12-12.4.127-py3-none-manylinux2014_aarch64.whl", hash = "sha256:961fe0e2e716a2a1d967aab7caee97512f71767f852f67432d572e36cb3a11f3"}, - {file = "nvidia_cuda_runtime_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl", hash = "sha256:64403288fa2136ee8e467cdc9c9427e0434110899d07c779f25b5c068934faa5"}, - {file = "nvidia_cuda_runtime_cu12-12.4.127-py3-none-win_amd64.whl", hash = "sha256:09c2e35f48359752dfa822c09918211844a3d93c100a715d79b59591130c5e1e"}, -] - -[[package]] -name = "nvidia-cudnn-cu12" -version = "9.1.0.70" -description = "cuDNN runtime libraries" -optional = false -python-versions = ">=3" -groups = ["main"] -markers = "python_version == \"3.8\" and platform_system == \"Linux\" and platform_machine == \"x86_64\" or python_version >= \"3.9\" and platform_system == \"Linux\" and platform_machine == \"x86_64\"" -files = [ - {file = "nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl", hash = "sha256:165764f44ef8c61fcdfdfdbe769d687e06374059fbb388b6c89ecb0e28793a6f"}, - {file = "nvidia_cudnn_cu12-9.1.0.70-py3-none-win_amd64.whl", hash = "sha256:6278562929433d68365a07a4a1546c237ba2849852c0d4b2262a486e805b977a"}, -] - -[package.dependencies] -nvidia-cublas-cu12 = "*" - -[[package]] -name = "nvidia-cufft-cu12" -version = "11.2.1.3" -description = "CUFFT native runtime libraries" -optional = false -python-versions = ">=3" -groups = ["main"] -markers = "python_version == \"3.8\" and platform_system == \"Linux\" and platform_machine == \"x86_64\" or python_version >= \"3.9\" and platform_system == \"Linux\" and platform_machine == \"x86_64\"" -files = [ - {file = "nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_aarch64.whl", hash = "sha256:5dad8008fc7f92f5ddfa2101430917ce2ffacd86824914c82e28990ad7f00399"}, - {file = "nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_x86_64.whl", hash = "sha256:f083fc24912aa410be21fa16d157fed2055dab1cc4b6934a0e03cba69eb242b9"}, - {file = "nvidia_cufft_cu12-11.2.1.3-py3-none-win_amd64.whl", hash = "sha256:d802f4954291101186078ccbe22fc285a902136f974d369540fd4a5333d1440b"}, -] - -[package.dependencies] -nvidia-nvjitlink-cu12 = "*" - -[[package]] -name = "nvidia-curand-cu12" -version = "10.3.5.147" -description = "CURAND native runtime libraries" -optional = false -python-versions = ">=3" -groups = ["main"] -markers = "python_version == \"3.8\" and platform_system == \"Linux\" and platform_machine == \"x86_64\" or python_version >= \"3.9\" and platform_system == \"Linux\" and platform_machine == \"x86_64\"" -files = [ - {file = "nvidia_curand_cu12-10.3.5.147-py3-none-manylinux2014_aarch64.whl", hash = "sha256:1f173f09e3e3c76ab084aba0de819c49e56614feae5c12f69883f4ae9bb5fad9"}, - {file = "nvidia_curand_cu12-10.3.5.147-py3-none-manylinux2014_x86_64.whl", hash = "sha256:a88f583d4e0bb643c49743469964103aa59f7f708d862c3ddb0fc07f851e3b8b"}, - {file = "nvidia_curand_cu12-10.3.5.147-py3-none-win_amd64.whl", hash = "sha256:f307cc191f96efe9e8f05a87096abc20d08845a841889ef78cb06924437f6771"}, -] - -[[package]] -name = "nvidia-cusolver-cu12" -version = "11.6.1.9" -description = "CUDA solver native runtime libraries" -optional = false -python-versions = ">=3" -groups = ["main"] -markers = "python_version == \"3.8\" and platform_system == \"Linux\" and platform_machine == \"x86_64\" or python_version >= \"3.9\" and platform_system == \"Linux\" and platform_machine == \"x86_64\"" -files = [ - {file = "nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_aarch64.whl", hash = "sha256:d338f155f174f90724bbde3758b7ac375a70ce8e706d70b018dd3375545fc84e"}, - {file = "nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_x86_64.whl", hash = "sha256:19e33fa442bcfd085b3086c4ebf7e8debc07cfe01e11513cc6d332fd918ac260"}, - {file = "nvidia_cusolver_cu12-11.6.1.9-py3-none-win_amd64.whl", hash = "sha256:e77314c9d7b694fcebc84f58989f3aa4fb4cb442f12ca1a9bde50f5e8f6d1b9c"}, -] - -[package.dependencies] -nvidia-cublas-cu12 = "*" -nvidia-cusparse-cu12 = "*" -nvidia-nvjitlink-cu12 = "*" - -[[package]] -name = "nvidia-cusparse-cu12" -version = "12.3.1.170" -description = "CUSPARSE native runtime libraries" -optional = false -python-versions = ">=3" -groups = ["main"] -markers = "python_version == \"3.8\" and platform_system == \"Linux\" and platform_machine == \"x86_64\" or python_version >= \"3.9\" and platform_system == \"Linux\" and platform_machine == \"x86_64\"" -files = [ - {file = "nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_aarch64.whl", hash = "sha256:9d32f62896231ebe0480efd8a7f702e143c98cfaa0e8a76df3386c1ba2b54df3"}, - {file = "nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_x86_64.whl", hash = "sha256:ea4f11a2904e2a8dc4b1833cc1b5181cde564edd0d5cd33e3c168eff2d1863f1"}, - {file = "nvidia_cusparse_cu12-12.3.1.170-py3-none-win_amd64.whl", hash = "sha256:9bc90fb087bc7b4c15641521f31c0371e9a612fc2ba12c338d3ae032e6b6797f"}, -] - -[package.dependencies] -nvidia-nvjitlink-cu12 = "*" - -[[package]] -name = "nvidia-nccl-cu12" -version = "2.21.5" -description = "NVIDIA Collective Communication Library (NCCL) Runtime" -optional = false -python-versions = ">=3" -groups = ["main"] -markers = "python_version == \"3.8\" and platform_system == \"Linux\" and platform_machine == \"x86_64\" or python_version >= \"3.9\" and platform_system == \"Linux\" and platform_machine == \"x86_64\"" -files = [ - {file = "nvidia_nccl_cu12-2.21.5-py3-none-manylinux2014_x86_64.whl", hash = "sha256:8579076d30a8c24988834445f8d633c697d42397e92ffc3f63fa26766d25e0a0"}, -] - -[[package]] -name = "nvidia-nvjitlink-cu12" -version = "12.4.127" -description = "Nvidia JIT LTO Library" -optional = false -python-versions = ">=3" -groups = ["main"] -markers = "python_version == \"3.8\" and platform_system == \"Linux\" and platform_machine == \"x86_64\" or python_version >= \"3.9\" and platform_system == \"Linux\" and platform_machine == \"x86_64\"" -files = [ - {file = "nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_aarch64.whl", hash = "sha256:4abe7fef64914ccfa909bc2ba39739670ecc9e820c83ccc7a6ed414122599b83"}, - {file = "nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl", hash = "sha256:06b3b9b25bf3f8af351d664978ca26a16d2c5127dbd53c0497e28d1fb9611d57"}, - {file = "nvidia_nvjitlink_cu12-12.4.127-py3-none-win_amd64.whl", hash = "sha256:fd9020c501d27d135f983c6d3e244b197a7ccad769e34df53a42e276b0e25fa1"}, -] - -[[package]] -name = "nvidia-nvtx-cu12" -version = "12.4.127" -description = "NVIDIA Tools Extension" -optional = false -python-versions = ">=3" -groups = ["main"] -markers = "python_version == \"3.8\" and platform_system == \"Linux\" and platform_machine == \"x86_64\" or python_version >= \"3.9\" and platform_system == \"Linux\" and platform_machine == \"x86_64\"" -files = [ - {file = "nvidia_nvtx_cu12-12.4.127-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7959ad635db13edf4fc65c06a6e9f9e55fc2f92596db928d169c0bb031e88ef3"}, - {file = "nvidia_nvtx_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl", hash = "sha256:781e950d9b9f60d8241ccea575b32f5105a5baf4c2351cab5256a24869f12a1a"}, - {file = "nvidia_nvtx_cu12-12.4.127-py3-none-win_amd64.whl", hash = "sha256:641dccaaa1139f3ffb0d3164b4b84f9d253397e38246a4f2f36728b48566d485"}, -] - -[[package]] -name = "setuptools" -version = "75.3.0" -description = "Easily download, build, install, upgrade, and uninstall Python packages" -optional = false -python-versions = ">=3.8" -groups = ["main"] -markers = "python_version == \"3.8\" or python_version >= \"3.9\"" -files = [ - {file = "setuptools-75.3.0-py3-none-any.whl", hash = "sha256:f2504966861356aa38616760c0f66568e535562374995367b4e69c7143cf6bcd"}, - {file = "setuptools-75.3.0.tar.gz", hash = "sha256:fba5dd4d766e97be1b1681d98712680ae8f2f26d7881245f2ce9e40714f1a686"}, -] - -[package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.5.2)"] -core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.collections", "jaraco.functools", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] -cover = ["pytest-cov"] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -enabler = ["pytest-enabler (>=2.2)"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test (>=5.5)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] -type = ["importlib-metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.12.*)", "pytest-mypy"] - -[[package]] -name = "sympy" -version = "1.12.1" -description = "Computer algebra system (CAS) in Python" -optional = false -python-versions = ">=3.8" -groups = ["main"] -markers = "python_version == \"3.8\"" -files = [ - {file = "sympy-1.12.1-py3-none-any.whl", hash = "sha256:9b2cbc7f1a640289430e13d2a56f02f867a1da0190f2f99d8968c2f74da0e515"}, - {file = "sympy-1.12.1.tar.gz", hash = "sha256:2877b03f998cd8c08f07cd0de5b767119cd3ef40d09f41c30d722f6686b0fb88"}, -] - -[package.dependencies] -mpmath = ">=1.1.0,<1.4.0" - -[[package]] -name = "sympy" -version = "1.13.1" -description = "Computer algebra system (CAS) in Python" -optional = false -python-versions = ">=3.8" -groups = ["main"] -markers = "python_version >= \"3.9\"" -files = [ - {file = "sympy-1.13.1-py3-none-any.whl", hash = "sha256:db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8"}, - {file = "sympy-1.13.1.tar.gz", hash = "sha256:9cebf7e04ff162015ce31c9c6c9144daa34a93bd082f54fd8f12deca4f47515f"}, -] - -[package.dependencies] -mpmath = ">=1.1.0,<1.4" - -[package.extras] -dev = ["hypothesis (>=6.70.0)", "pytest (>=7.1.0)"] - -[[package]] -name = "torch" -version = "2.5.1" -description = "Tensors and Dynamic neural networks in Python with strong GPU acceleration" -optional = false -python-versions = ">=3.8.0" -groups = ["main"] -markers = "python_version == \"3.8\" or python_version >= \"3.9\"" -files = [ - {file = "torch-2.5.1-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:71328e1bbe39d213b8721678f9dcac30dfc452a46d586f1d514a6aa0a99d4744"}, - {file = "torch-2.5.1-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:34bfa1a852e5714cbfa17f27c49d8ce35e1b7af5608c4bc6e81392c352dbc601"}, - {file = "torch-2.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:32a037bd98a241df6c93e4c789b683335da76a2ac142c0973675b715102dc5fa"}, - {file = "torch-2.5.1-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:23d062bf70776a3d04dbe74db950db2a5245e1ba4f27208a87f0d743b0d06e86"}, - {file = "torch-2.5.1-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:de5b7d6740c4b636ef4db92be922f0edc425b65ed78c5076c43c42d362a45457"}, - {file = "torch-2.5.1-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:340ce0432cad0d37f5a31be666896e16788f1adf8ad7be481196b503dad675b9"}, - {file = "torch-2.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:603c52d2fe06433c18b747d25f5c333f9c1d58615620578c326d66f258686f9a"}, - {file = "torch-2.5.1-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:31f8c39660962f9ae4eeec995e3049b5492eb7360dd4f07377658ef4d728fa4c"}, - {file = "torch-2.5.1-cp312-cp312-manylinux1_x86_64.whl", hash = "sha256:ed231a4b3a5952177fafb661213d690a72caaad97d5824dd4fc17ab9e15cec03"}, - {file = "torch-2.5.1-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:3f4b7f10a247e0dcd7ea97dc2d3bfbfc90302ed36d7f3952b0008d0df264e697"}, - {file = "torch-2.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:73e58e78f7d220917c5dbfad1a40e09df9929d3b95d25e57d9f8558f84c9a11c"}, - {file = "torch-2.5.1-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:8c712df61101964eb11910a846514011f0b6f5920c55dbf567bff8a34163d5b1"}, - {file = "torch-2.5.1-cp313-cp313-manylinux1_x86_64.whl", hash = "sha256:9b61edf3b4f6e3b0e0adda8b3960266b9009d02b37555971f4d1c8f7a05afed7"}, - {file = "torch-2.5.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:1f3b7fb3cf7ab97fae52161423f81be8c6b8afac8d9760823fd623994581e1a3"}, - {file = "torch-2.5.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:7974e3dce28b5a21fb554b73e1bc9072c25dde873fa00d54280861e7a009d7dc"}, - {file = "torch-2.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:46c817d3ea33696ad3b9df5e774dba2257e9a4cd3c4a3afbf92f6bb13ac5ce2d"}, - {file = "torch-2.5.1-cp39-none-macosx_11_0_arm64.whl", hash = "sha256:8046768b7f6d35b85d101b4b38cba8aa2f3cd51952bc4c06a49580f2ce682291"}, -] - -[package.dependencies] -filelock = "*" -fsspec = "*" -jinja2 = "*" -networkx = "*" -nvidia-cublas-cu12 = {version = "12.4.5.8", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} -nvidia-cuda-cupti-cu12 = {version = "12.4.127", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} -nvidia-cuda-nvrtc-cu12 = {version = "12.4.127", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} -nvidia-cuda-runtime-cu12 = {version = "12.4.127", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} -nvidia-cudnn-cu12 = {version = "9.1.0.70", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} -nvidia-cufft-cu12 = {version = "11.2.1.3", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} -nvidia-curand-cu12 = {version = "10.3.5.147", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} -nvidia-cusolver-cu12 = {version = "11.6.1.9", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} -nvidia-cusparse-cu12 = {version = "12.3.1.170", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} -nvidia-nccl-cu12 = {version = "2.21.5", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} -nvidia-nvjitlink-cu12 = {version = "12.4.127", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} -nvidia-nvtx-cu12 = {version = "12.4.127", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} -setuptools = {version = "*", markers = "python_version >= \"3.12\""} -sympy = [ - {version = "1.12.1", markers = "python_version == \"3.8\""}, - {version = "1.13.1", markers = "python_version >= \"3.9\""}, -] -triton = {version = "3.1.0", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\" and python_version < \"3.13\""} -typing-extensions = ">=4.8.0" - -[package.extras] -opt-einsum = ["opt-einsum (>=3.3)"] -optree = ["optree (>=0.12.0)"] - -[[package]] -name = "triton" -version = "3.1.0" -description = "A language and compiler for custom Deep Learning operations" -optional = false -python-versions = "*" -groups = ["main"] -markers = "python_version == \"3.8\" and platform_system == \"Linux\" and platform_machine == \"x86_64\" or python_version >= \"3.9\" and platform_system == \"Linux\" and platform_machine == \"x86_64\" and python_version < \"3.13\"" -files = [ - {file = "triton-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b0dd10a925263abbe9fa37dcde67a5e9b2383fc269fdf59f5657cac38c5d1d8"}, - {file = "triton-3.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f34f6e7885d1bf0eaaf7ba875a5f0ce6f3c13ba98f9503651c1e6dc6757ed5c"}, - {file = "triton-3.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8182f42fd8080a7d39d666814fa36c5e30cc00ea7eeeb1a2983dbb4c99a0fdc"}, - {file = "triton-3.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6dadaca7fc24de34e180271b5cf864c16755702e9f63a16f62df714a8099126a"}, - {file = "triton-3.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aafa9a20cd0d9fee523cd4504aa7131807a864cd77dcf6efe7e981f18b8c6c11"}, -] - -[package.dependencies] -filelock = "*" - -[package.extras] -build = ["cmake (>=3.20)", "lit"] -tests = ["autopep8", "flake8", "isort", "llnl-hatchet", "numpy", "pytest", "scipy (>=1.7.1)"] -tutorials = ["matplotlib", "pandas", "tabulate"] - -[[package]] -name = "typing-extensions" -version = "4.12.2" -description = "Backported and Experimental Type Hints for Python 3.8+" -optional = false -python-versions = ">=3.8" -groups = ["main"] -markers = "python_version == \"3.8\" or python_version >= \"3.9\"" -files = [ - {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, - {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, -] - -[metadata] -lock-version = "2.1" -python-versions = ">=3.8" -content-hash = "86cbdcc9942ce0fe264ccaf656b9a1faaf82a1281d609dd55483eb95e5db46ae" diff --git a/pyproject.toml b/pyproject.toml index 5593271..c789a1b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,60 +1,179 @@ -[tool.pytest.ini_options] -pythonpath = [ - ".", "src", -] -addopts = [ - "--cov=src", -# "--no-cov", - "--durations=10", -] - - -[build-system] -requires = [ - "numpy>=1.23.0", - "setuptools>=57.0.0", - "pytest>=7.4.2", - "pytest-cov>=4.1.0", - "wheel", - "torch", -] -build-backend = "setuptools.build_meta" - - - [project] name = "TorchPfaffian" -dynamic = ["version", "readme"] -description = "" -authors = [ - { name="Jérémie Gince", email="gincejeremie@gmail.com" }, -] +version = "0.0.1" +description = "PyTorch-based Pfaffian computation for skew-symmetric matrices." +authors = [{ name = "Jérémie Gince", email = "gincejeremie@gmail.com" }] +requires-python = ">=3.10,<3.15" +license = { file = "LICENSE" } classifiers = [ "Development Status :: 3 - Alpha", "Intended Audience :: Science/Research", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", "Topic :: Scientific/Engineering", + "Topic :: Scientific/Engineering :: Artificial Intelligence", "Topic :: Software Development :: Libraries :: Python Modules", "Operating System :: OS Independent", ] -requires-python = ">=3.8" dependencies = [ - "numpy>=1.23.0", + "numpy (>=1.23,<3.0.0)", + "setuptools (>=80.10)", + "torch (>=2.1,<3.0.0)", +] +dynamic = ["readme"] + +[project.urls] +homepage = "https://github.com/MatchCake/TorchPfaffian" +Documentation = "https://MatchCake.github.io/TorchPfaffian" +Source = "https://github.com/MatchCake/TorchPfaffian" + +[tool.pytest.ini_options] +pythonpath = [ + ".", "src", +] +testpaths = ["tests"] +addopts = [ + "-n=auto", + "--cov-branch", + "--cov=src", + '--cov-report=xml:tests/.tmp/coverage.xml', + "--cov-report=term-missing", + "--durations=10", +] + +[dependency-groups] +dev = [ + "pytest-cov>=6.1,<7", + "pytest-json-report>=1.5,<2", + "pytest>=8.4,<9", + "mypy>=1.15,<2", + "ruff>=0.9,<1", + "nbmake>=1.5,<2", + "wheel>=0.45,<0.46", + "build>=1.4,<2", + "twine>=6.1,<7", + "pytest-xdist>=3.7,<4", + "pytest-timeout>=2.4", + "pip>=25", + "pre-commit>=4.5.1", +] +docs = [ + "wheel>=0.45,<0.46", + "build>=1.4,<2", + "twine>=6.1,<7", + "sphinx>=6.2,<6.3", + "docutils>=0.18,<0.20", + "sphinx-rtd-theme>=3.0,<4", + "sphinxcontrib-bibtex>=2.5,<2.6", + "sphinx-theme~=1.0", + "groundwork-sphinx-theme>=1.1,<2", + "karma-sphinx-theme>=0.0.8,<0.0.9", + "sphinx-mdinclude>=0.6,<0.7", + "myst-nb>=1.1,<2", + "ipykernel>=6.29,<7", + "matplotlib>=3.8,<4", + "nbconvert>=7.16,<8", +] + +[tool.uv] +default-groups = [ + "dev", + "docs", +] +conflicts = [ + [ + { extra = "cpu" }, + { extra = "cu128" }, + { extra = "cu130" }, + ], +] + +[project.optional-dependencies] +cpu = [ + "torch (>=2.1.2,<3.0.0)", +] +cu128 = [ + "torch (>=2.1.2,<3.0.0)", +] +cu130 = [ + "torch (>=2.1.2,<3.0.0)", +] + +[tool.uv.sources] +torch = [ + { index = "pytorch-cpu", extra = "cpu" }, + { index = "pytorch-cu128", extra = "cu128" }, + { index = "pytorch-cu130", extra = "cu130" }, +] + +[[tool.uv.index]] +name = "pytorch-cpu" +url = "https://download.pytorch.org/whl/cpu" +explicit = true + +[[tool.uv.index]] +name = "pytorch-cu128" +url = "https://download.pytorch.org/whl/cu128" +explicit = true + +[[tool.uv.index]] +name = "pytorch-cu130" +url = "https://download.pytorch.org/whl/cu130" +explicit = true + +[build-system] +requires = [ "setuptools>=57.0.0", - "torch", - "numpy" + "wheel>=0.45.1,<0.46", + "build>=1.2.2.post1,<2", + "twine>=6.1.0,<7", ] +build-backend = "setuptools.build_meta" +[tool.setuptools.dynamic] +readme = { file = "README.md", content-type = "text/markdown" } [tool.setuptools] -package-dir = {"" = "src"} +package-dir = { "" = "src" } [tool.setuptools.packages.find] where = ["src"] +[tool.setuptools.package-data] +torch_pfaffian = ["py.typed"] -[tool.poetry] -packages = [{include = "torch_pfaffian", from = "src"}] -version = "0.0.1" +[tool.coverage.report] +exclude_also = [ + 'def __repr__', + 'if self.debug:', + 'if settings.DEBUG', + 'raise AssertionError', + 'raise NotImplementedError', + 'if __name__ == .__main__.:', + 'if TYPE_CHECKING:', + '@(abc\.)?abstractmethod', +] + +[tool.coverage.run] +relative_files = true + +[[tool.mypy.overrides]] +module = [] +ignore_missing_imports = true + +[tool.ruff] +line-length = 120 +extend-exclude = ["archives"] +force-exclude = true + +[tool.ruff.lint] +select = ["E", "F", "I"] + +[tool.ruff.lint.per-file-ignores] +"**/__init__.py" = ["F401", "F403", "F405"] +"sphinx/source/conf.py" = ["E402"] + +[tool.ruff.format] +quote-style = "double" diff --git a/requirements.txt b/requirements.txt index 234cad5..7141f32 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,9 +1,462 @@ -pytest>=7.4.2 -pytest_cov>=4.1.0 -pytest_json_report>=1.5.0 -pythonbasictools>=0.0.1a10 -setuptools>=65.5.1 -tqdm>=4.66.1 -psutil>=5.9.6 -numpy>=1.23.0 -torch \ No newline at end of file +# This file was autogenerated by uv via the following command: +# uv export --frozen --no-hashes --output-file=requirements.txt +-e . +alabaster==0.7.16 + # via sphinx +appnope==0.1.4 ; sys_platform == 'darwin' + # via ipykernel +asttokens==3.0.1 + # via stack-data +attrs==26.1.0 + # via + # jsonschema + # jupyter-cache + # referencing +babel==2.18.0 + # via sphinx +backports-tarfile==1.2.0 ; python_full_version < '3.12' and platform_machine != 'ppc64le' and platform_machine != 's390x' + # via jaraco-context +beautifulsoup4==4.15.0 + # via nbconvert +bleach==6.4.0 + # via nbconvert +build==1.5.0 +certifi==2026.5.20 + # via requests +cffi==2.0.0 ; (implementation_name == 'pypy' and platform_machine == 'ppc64le') or (implementation_name == 'pypy' and platform_machine == 's390x') or (implementation_name == 'pypy' and platform_machine != 'ppc64le' and platform_machine != 's390x' and platform_python_implementation == 'PyPy') or (implementation_name == 'pypy' and sys_platform != 'linux') or (platform_machine != 'ppc64le' and platform_machine != 's390x' and platform_python_implementation != 'PyPy' and sys_platform == 'linux') + # via + # cryptography + # pyzmq +cfgv==3.5.0 + # via pre-commit +charset-normalizer==3.4.7 + # via requests +click==8.4.1 + # via jupyter-cache +colorama==0.4.6 ; os_name == 'nt' or sys_platform == 'win32' + # via + # build + # click + # ipython + # pytest + # sphinx +comm==0.2.3 + # via ipykernel +contourpy==1.3.2 ; python_full_version < '3.11' + # via matplotlib +contourpy==1.3.3 ; python_full_version >= '3.11' + # via matplotlib +coverage==7.14.1 + # via pytest-cov +cryptography==48.0.1 ; platform_machine != 'ppc64le' and platform_machine != 's390x' and sys_platform == 'linux' + # via secretstorage +cycler==0.12.1 + # via matplotlib +debugpy==1.8.21 + # via ipykernel +decorator==5.3.1 + # via ipython +defusedxml==0.7.1 + # via nbconvert +distlib==0.4.2 + # via virtualenv +docutils==0.19 + # via + # myst-parser + # pybtex-docutils + # readme-renderer + # sphinx + # sphinx-mdinclude + # sphinx-rtd-theme + # sphinxcontrib-bibtex +exceptiongroup==1.3.1 ; python_full_version < '3.11' + # via + # ipython + # pytest +execnet==2.1.2 + # via pytest-xdist +executing==2.2.1 + # via stack-data +fastjsonschema==2.21.2 + # via nbformat +filelock==3.29.1 + # via + # python-discovery + # torch + # virtualenv +fonttools==4.63.0 + # via matplotlib +fsspec==2026.4.0 + # via torch +greenlet==3.5.1 ; platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64' + # via sqlalchemy +groundwork-sphinx-theme==1.1.1 +id==1.6.1 + # via twine +identify==2.6.19 + # via pre-commit +idna==3.18 + # via requests +imagesize==2.0.0 + # via sphinx +importlib-metadata==9.0.0 + # via + # build + # jupyter-cache + # keyring + # myst-nb +iniconfig==2.3.0 + # via pytest +ipykernel==6.31.0 + # via + # myst-nb + # nbmake +ipython==8.39.0 ; python_full_version < '3.11' + # via + # ipykernel + # myst-nb +ipython==9.14.1 ; python_full_version >= '3.11' + # via + # ipykernel + # myst-nb +ipython-pygments-lexers==1.1.1 ; python_full_version >= '3.11' + # via ipython +jaraco-classes==3.4.0 ; platform_machine != 'ppc64le' and platform_machine != 's390x' + # via keyring +jaraco-context==6.1.2 ; platform_machine != 'ppc64le' and platform_machine != 's390x' + # via keyring +jaraco-functools==4.5.0 ; platform_machine != 'ppc64le' and platform_machine != 's390x' + # via keyring +jedi==0.20.0 + # via ipython +jeepney==0.9.0 ; platform_machine != 'ppc64le' and platform_machine != 's390x' and sys_platform == 'linux' + # via + # keyring + # secretstorage +jinja2==3.1.6 + # via + # myst-parser + # nbconvert + # sphinx + # torch +jsonschema==4.26.0 + # via nbformat +jsonschema-specifications==2025.9.1 + # via jsonschema +jupyter-cache==1.0.1 + # via myst-nb +jupyter-client==8.9.1 + # via + # ipykernel + # nbclient +jupyter-core==5.9.1 + # via + # ipykernel + # jupyter-client + # nbclient + # nbconvert + # nbformat +jupyterlab-pygments==0.3.0 + # via nbconvert +karma-sphinx-theme==0.0.8 +keyring==25.7.0 ; platform_machine != 'ppc64le' and platform_machine != 's390x' + # via twine +kiwisolver==1.5.0 + # via matplotlib +latexcodec==3.0.1 + # via pybtex +librt==0.11.0 ; platform_python_implementation != 'PyPy' + # via mypy +markdown-it-py==3.0.0 + # via + # mdit-py-plugins + # myst-parser + # rich +markupsafe==3.0.3 + # via + # jinja2 + # nbconvert +matplotlib==3.10.9 +matplotlib-inline==0.2.2 + # via + # ipykernel + # ipython +mdit-py-plugins==0.6.1 + # via myst-parser +mdurl==0.1.2 + # via markdown-it-py +mistune==3.2.1 + # via + # nbconvert + # sphinx-mdinclude +more-itertools==11.1.0 ; platform_machine != 'ppc64le' and platform_machine != 's390x' + # via + # jaraco-classes + # jaraco-functools +mpmath==1.3.0 + # via sympy +mypy==1.20.2 +mypy-extensions==1.1.0 + # via mypy +myst-nb==1.4.0 +myst-parser==3.0.1 + # via myst-nb +nbclient==0.11.0 + # via + # jupyter-cache + # myst-nb + # nbconvert + # nbmake +nbconvert==7.17.1 +nbformat==5.10.4 + # via + # jupyter-cache + # myst-nb + # nbclient + # nbconvert + # nbmake +nbmake==1.5.5 +nest-asyncio==1.6.0 + # via ipykernel +networkx==3.4.2 ; python_full_version < '3.11' + # via torch +networkx==3.6.1 ; python_full_version >= '3.11' + # via torch +nh3==0.3.5 + # via readme-renderer +nodeenv==1.10.0 + # via pre-commit +numpy==2.2.6 ; python_full_version < '3.11' + # via + # contourpy + # matplotlib + # torchpfaffian +numpy==2.4.6 ; python_full_version >= '3.11' + # via + # contourpy + # matplotlib + # torchpfaffian +packaging==26.2 + # via + # build + # ipykernel + # matplotlib + # nbconvert + # pytest + # sphinx + # twine +pandocfilters==1.5.1 + # via nbconvert +parso==0.8.7 + # via jedi +pathspec==1.1.1 + # via mypy +pexpect==4.9.0 ; sys_platform != 'emscripten' and sys_platform != 'win32' + # via ipython +pillow==12.2.0 + # via matplotlib +pip==26.1.2 +platformdirs==4.10.0 + # via + # jupyter-core + # python-discovery + # virtualenv +pluggy==1.6.0 + # via + # pytest + # pytest-cov +pre-commit==4.6.0 +prompt-toolkit==3.0.52 + # via ipython +psutil==7.2.2 + # via + # ipykernel + # ipython +ptyprocess==0.7.0 ; sys_platform != 'emscripten' and sys_platform != 'win32' + # via pexpect +pure-eval==0.2.3 + # via stack-data +pybtex==0.26.1 + # via + # pybtex-docutils + # sphinxcontrib-bibtex +pybtex-docutils==1.0.3 + # via sphinxcontrib-bibtex +pycparser==3.0 ; (implementation_name == 'pypy' and platform_machine == 'ppc64le') or (implementation_name == 'pypy' and platform_machine == 's390x') or (implementation_name == 'pypy' and platform_machine != 'ppc64le' and platform_machine != 's390x' and platform_python_implementation == 'PyPy') or (implementation_name != 'PyPy' and platform_machine != 'ppc64le' and platform_machine != 's390x' and platform_python_implementation != 'PyPy' and sys_platform == 'linux') or (implementation_name == 'pypy' and sys_platform != 'linux') + # via cffi +pygments==2.20.0 + # via + # ipython + # ipython-pygments-lexers + # nbconvert + # nbmake + # pytest + # readme-renderer + # rich + # sphinx + # sphinx-mdinclude +pyparsing==3.3.2 + # via matplotlib +pyproject-hooks==1.2.0 + # via build +pytest==8.4.2 + # via + # nbmake + # pytest-cov + # pytest-json-report + # pytest-metadata + # pytest-timeout + # pytest-xdist +pytest-cov==6.3.0 +pytest-json-report==1.5.0 +pytest-metadata==3.1.1 + # via pytest-json-report +pytest-timeout==2.4.0 +pytest-xdist==3.8.0 +python-dateutil==2.9.0.post0 + # via + # jupyter-client + # matplotlib +python-discovery==1.4.0 + # via virtualenv +pywin32-ctypes==0.2.3 ; platform_machine != 'ppc64le' and platform_machine != 's390x' and sys_platform == 'win32' + # via keyring +pyyaml==6.0.3 + # via + # jupyter-cache + # myst-nb + # myst-parser + # pre-commit + # pybtex +pyzmq==27.1.0 + # via + # ipykernel + # jupyter-client +readme-renderer==43.0 + # via twine +referencing==0.37.0 + # via + # jsonschema + # jsonschema-specifications +requests==2.34.2 + # via + # requests-toolbelt + # sphinx + # twine +requests-toolbelt==1.0.0 + # via twine +rfc3986==2.0.0 + # via twine +rich==15.0.0 + # via twine +rpds-py==0.30.0 ; python_full_version < '3.11' + # via + # jsonschema + # referencing +rpds-py==2026.5.1 ; python_full_version >= '3.11' + # via + # jsonschema + # referencing +ruff==0.15.16 +secretstorage==3.5.0 ; platform_machine != 'ppc64le' and platform_machine != 's390x' and sys_platform == 'linux' + # via keyring +setuptools==82.0.1 + # via + # torch + # torchpfaffian +six==1.17.0 + # via python-dateutil +snowballstemmer==3.1.1 + # via sphinx +soupsieve==2.8.4 + # via beautifulsoup4 +sphinx==6.2.1 + # via + # groundwork-sphinx-theme + # myst-nb + # myst-parser + # sphinx-mdinclude + # sphinx-rtd-theme + # sphinxcontrib-bibtex + # sphinxcontrib-jquery +sphinx-mdinclude==0.6.2 +sphinx-rtd-theme==3.1.0 +sphinx-theme==1.0 +sphinxcontrib-applehelp==2.0.0 + # via sphinx +sphinxcontrib-bibtex==2.5.0 +sphinxcontrib-devhelp==2.0.0 + # via sphinx +sphinxcontrib-htmlhelp==2.1.0 + # via sphinx +sphinxcontrib-jquery==4.1 + # via sphinx-rtd-theme +sphinxcontrib-jsmath==1.0.1 + # via sphinx +sphinxcontrib-qthelp==2.0.0 + # via sphinx +sphinxcontrib-serializinghtml==2.0.0 + # via sphinx +sqlalchemy==2.0.50 + # via jupyter-cache +stack-data==0.6.3 + # via ipython +sympy==1.14.0 + # via torch +tabulate==0.10.0 + # via jupyter-cache +tinycss2==1.5.1 + # via bleach +tomli==2.4.1 ; python_full_version <= '3.11' + # via + # build + # coverage + # mypy + # pytest +torch==2.10.0 + # via torchpfaffian +tornado==6.5.7 + # via + # ipykernel + # jupyter-client +traitlets==5.15.1 + # via + # ipykernel + # ipython + # jupyter-client + # jupyter-core + # matplotlib-inline + # nbclient + # nbconvert + # nbformat +twine==6.2.0 +typing-extensions==4.15.0 + # via + # beautifulsoup4 + # cryptography + # exceptiongroup + # ipython + # jupyter-client + # mistune + # mypy + # myst-nb + # referencing + # sqlalchemy + # torch + # virtualenv +urllib3==2.7.0 + # via + # id + # requests + # twine +virtualenv==21.4.2 + # via pre-commit +wcwidth==0.8.1 + # via prompt-toolkit +webencodings==0.5.1 + # via + # bleach + # tinycss2 +wheel==0.45.1 +zipp==4.1.0 + # via importlib-metadata diff --git a/run_pytests.py b/run_pytests.py deleted file mode 100644 index a2706a8..0000000 --- a/run_pytests.py +++ /dev/null @@ -1,37 +0,0 @@ -import json -import os - -import pytest -import pythonbasictools as pbt -from pytest_jsonreport.plugin import JSONReport -from pytest_cov.plugin import CovPlugin - -from tests import configs -from tests.conftest import RUN_SLOW_ARG_NAME - -if __name__ == '__main__': - sys_args_dict = pbt.cmds.get_cmd_kwargs( - { - 1 : os.path.join(os.getcwd(), "tests"), - "N_RANDOM_TESTS_PER_CASE": configs.N_RANDOM_TESTS_PER_CASE, - "save_report" : "True", - "cov" : "src", - "cov-report" : "xml", - RUN_SLOW_ARG_NAME : "True", - "durations" : 10, - } - ) - sys_args_dict["cov-report"] = sys_args_dict["cov_report"] # fix - configs.N_RANDOM_TESTS_PER_CASE = sys_args_dict["N_RANDOM_TESTS_PER_CASE"] - configs.RUN_SLOW_TESTS = 't' in str(sys_args_dict[RUN_SLOW_ARG_NAME]).lower() - json_plugin = JSONReport() - pytest_main_args_names = ["cov", "cov-report", "durations"] - pytest_main_args = [f"--{k}={sys_args_dict[k]}" for k in pytest_main_args_names] - pytest.main([sys_args_dict[1], *pytest_main_args], plugins=[json_plugin]) - json_path = os.path.join(os.getcwd(), "tests", "tmp", f"tests_report_rn{configs.N_RANDOM_TESTS_PER_CASE}.json") - save_report = 't' in str(sys_args_dict["save_report"]).lower() - if save_report: - json_plugin.save_report(json_path) - json_data = json.load(open(json_path)) - with open(json_path, "w") as f: - json.dump(json_data, f, indent=4) diff --git a/setup.py b/setup.py index 739cb90..53a465e 100644 --- a/setup.py +++ b/setup.py @@ -1,28 +1,29 @@ -from setuptools import setup import setuptools +from setuptools import setup setup( - name='TorchPfaffian', - long_description='file: README.md', + name="TorchPfaffian", + long_description="file: README.md", long_description_content_type="text/markdown", package_dir={"": "src"}, packages=setuptools.find_packages(where="src"), - python_requires=">=3.8", + python_requires=">=3.10", classifiers=[ "Development Status :: 3 - Alpha", "Intended Audience :: Science/Research", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", "Topic :: Scientific/Engineering", "Topic :: Scientific/Engineering :: Artificial Intelligence", "Topic :: Software Development :: Libraries :: Python Modules", "Operating System :: OS Independent", ], project_urls={ - 'Homepage': 'https://https://github.com/MatchCake/TorchPfaffian', - 'Source': 'https://https://github.com/MatchCake/TorchPfaffian', - 'Documentation': 'https://MatchCake.github.io/TorchPfaffian', + "Homepage": "https://github.com/MatchCake/TorchPfaffian", + "Source": "https://github.com/MatchCake/TorchPfaffian", + "Documentation": "https://MatchCake.github.io/TorchPfaffian", }, ) @@ -37,4 +38,3 @@ # twine check dist/* # twine upload --repository-url https://test.pypi.org/legacy/ dist/* # twine upload dist/* - diff --git a/sphinx/clean_html_files.py b/sphinx/clean_html_files.py index c066388..8499831 100644 --- a/sphinx/clean_html_files.py +++ b/sphinx/clean_html_files.py @@ -3,20 +3,20 @@ def clean_html_files(): - meta_filename = "docs/html_files_list.txt" - if not os.path.exists(meta_filename): - return - with open(meta_filename, "r") as f: - files = f.readlines() - for file in files: - path = os.path.join(os.getcwd(), "docs", file.strip()) - if os.path.exists(path): - if os.path.isdir(path): - shutil.rmtree(path) - else: - os.remove(path) - os.remove(meta_filename) + meta_filename = "docs/html_files_list.txt" + if not os.path.exists(meta_filename): + return + with open(meta_filename, "r") as f: + files = f.readlines() + for file in files: + path = os.path.join(os.getcwd(), "docs", file.strip()) + if os.path.exists(path): + if os.path.isdir(path): + shutil.rmtree(path) + else: + os.remove(path) + os.remove(meta_filename) -if __name__ == '__main__': - clean_html_files() +if __name__ == "__main__": + clean_html_files() diff --git a/sphinx/generate_doc.py b/sphinx/generate_doc.py index 25de62e..f2f30a3 100644 --- a/sphinx/generate_doc.py +++ b/sphinx/generate_doc.py @@ -1,17 +1,18 @@ -import os, sys +import os +import sys -def generate_doc(path_to_root_dir: str = '.'): - commands = [ - rf"sphinx-apidoc -f -o {path_to_root_dir}/sphinx/source {path_to_root_dir}/src/neurotorch", - rf"{path_to_root_dir}\sphinx\make clean html", - rf"{path_to_root_dir}\sphinx\make html", - ] - for command in commands: - print(f"Executing: {command}") - os.system(command) +def generate_doc(path_to_root_dir: str = "."): + commands = [ + rf"sphinx-apidoc -f -o {path_to_root_dir}/sphinx/source {path_to_root_dir}/src/neurotorch", + rf"{path_to_root_dir}\sphinx\make clean html", + rf"{path_to_root_dir}\sphinx\make html", + ] + for command in commands: + print(f"Executing: {command}") + os.system(command) -if __name__ == '__main__': - root_dir = sys.argv[1] if len(sys.argv) > 1 else '..' - generate_doc(root_dir) +if __name__ == "__main__": + root_dir = sys.argv[1] if len(sys.argv) > 1 else ".." + generate_doc(root_dir) diff --git a/sphinx/make_html_files_list.py b/sphinx/make_html_files_list.py index 1422259..cc37bbf 100644 --- a/sphinx/make_html_files_list.py +++ b/sphinx/make_html_files_list.py @@ -2,12 +2,12 @@ def make_html_file_list(): - meta_filename = "./docs/html_files_list.txt" - os.makedirs(os.path.dirname(meta_filename), exist_ok=True) - files = os.listdir(os.path.join('sphinx', "build", "html")) - with open(meta_filename, "w") as f: - f.write("\n".join(files)) - - -if __name__ == '__main__': - make_html_file_list() + meta_filename = "./docs/html_files_list.txt" + os.makedirs(os.path.dirname(meta_filename), exist_ok=True) + files = os.listdir(os.path.join("sphinx", "build", "html")) + with open(meta_filename, "w") as f: + f.write("\n".join(files)) + + +if __name__ == "__main__": + make_html_file_list() diff --git a/sphinx/source/conf.py b/sphinx/source/conf.py index 98193c8..cf7d59f 100644 --- a/sphinx/source/conf.py +++ b/sphinx/source/conf.py @@ -4,13 +4,18 @@ # https://www.sphinx-doc.org/en/master/usage/configuration.html import os -import pprint -import sys import shutil -basedir = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..', 'src')) +import sys + +basedir = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "src")) sys.path.insert(0, basedir) import torch_pfaffian +_nb_src = os.path.join(os.path.dirname(__file__), "..", "..", "notebooks") +_nb_dst = os.path.join(os.path.dirname(__file__), "notebooks") +if os.path.isdir(_nb_src): + shutil.rmtree(_nb_dst, ignore_errors=True) + shutil.copytree(_nb_src, _nb_dst) _html_folders_formatted = {} _allowed_special_methods = ["__init__", "__call__"] @@ -24,44 +29,44 @@ def skip(app, what, name, obj, would_skip, options): def setup(app): app.connect("autodoc-skip-member", skip) - app.connect('html-page-context', change_pathto) - app.connect('build-finished', move_private_folders) + app.connect("html-page-context", change_pathto) + app.connect("build-finished", move_private_folders) def change_pathto(app, pagename, templatename, context, doctree): """ Replace pathto helper to change paths to folders with a leading underscore. """ - pathto = context.get('pathto') - + pathto = context.get("pathto") + def gh_pathto(otheruri, *args, **kw): - if otheruri.startswith('_'): + if otheruri.startswith("_"): otheruri_fmt = otheruri[1:] _html_folders_formatted[os.path.dirname(otheruri)] = os.path.dirname(otheruri_fmt) else: otheruri_fmt = otheruri return pathto(otheruri_fmt, *args, **kw) - - context['pathto'] = gh_pathto + + context["pathto"] = gh_pathto def move_private_folders(app, e): """ Remove leading underscore from folders in in the output folder. """ - + def join(dir): return os.path.join(app.builder.outdir, dir) - + for item in os.listdir(app.builder.outdir): - if item.startswith('_') and os.path.isdir(join(item)) and item in _html_folders_formatted: + if item.startswith("_") and os.path.isdir(join(item)) and item in _html_folders_formatted: shutil.move(join(item), join(item[1:])) # -- Project information ----------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information -project = 'torch_pfaffian' +project = "torch_pfaffian" copyright = torch_pfaffian.__copyright__.replace("Copyright ", "") author = torch_pfaffian.__author__ version = torch_pfaffian.__version__ @@ -70,38 +75,41 @@ def join(dir): # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration extensions = [ - 'sphinx.ext.autodoc', - 'sphinx.ext.napoleon', - 'sphinx.ext.githubpages', + "sphinx.ext.autodoc", + "sphinx.ext.napoleon", + "sphinx.ext.githubpages", # 'sphinx_rtd_theme', - 'sphinxcontrib.bibtex', - 'sphinx_mdinclude', - # 'nbsphinx', - 'sphinx.ext.mathjax', + "sphinxcontrib.bibtex", + "sphinx_mdinclude", + "myst_nb", + "sphinx.ext.mathjax", # 'sphinx.ext.mathbase', - 'sphinx.ext.todo', + "sphinx.ext.todo", ] -bibtex_bibfiles = ['references.bib'] +bibtex_bibfiles = ["references.bib"] + +nb_execution_mode = "force" +nb_execution_timeout = 300 -templates_path = ['_templates'] +templates_path = ["_templates"] exclude_patterns = [] # -- Options for HTML output ------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output -html_theme = 'karma_sphinx_theme' -html_static_path = ['_static'] +html_theme = "karma_sphinx_theme" +html_static_path = ["_static"] # html_css_files = [ # 'css/float_right.css', # ] # mathjax_path = "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js" mathjax_path = "https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" -latex_engine = 'xelatex' +latex_engine = "xelatex" latex_elements = { - 'preamble': r'\usepackage{physics}' - r'\usepackage{mathtools}' - r'\usepackage{amsmath}' - r'\usepackage{nicefrac}' + "preamble": r"\usepackage{physics}" + r"\usepackage{mathtools}" + r"\usepackage{amsmath}" + r"\usepackage{nicefrac}" } diff --git a/sphinx/source/index.rst b/sphinx/source/index.rst index 388f894..360fc34 100644 --- a/sphinx/source/index.rst +++ b/sphinx/source/index.rst @@ -12,6 +12,12 @@ Welcome to 's documentation! readme +.. toctree:: + :maxdepth: 4 + :caption: Tutorials: + + notebooks/strategies_benchmark + .. toctree:: :maxdepth: 4 :caption: Modules: diff --git a/src/torch_pfaffian/__init__.py b/src/torch_pfaffian/__init__.py index 1461dad..53aa80b 100644 --- a/src/torch_pfaffian/__init__.py +++ b/src/torch_pfaffian/__init__.py @@ -1,5 +1,5 @@ """ -Project description. +TorchPfaffian is a Python package for efficiently computing the Pfaffian of skew-symmetric matrices using PyTorch. """ __author__ = "Jérémie Gince" @@ -14,16 +14,13 @@ import torch -warnings.filterwarnings("ignore", category=Warning, module="docutils") -warnings.filterwarnings("ignore", category=Warning, module="sphinx") - from .strategies import * from .utils import get_all_subclasses -pfaffian_strategy_map = { - _cls.NAME.lower().strip(): _cls - for _cls in get_all_subclasses(PfaffianStrategy) -} +warnings.filterwarnings("ignore", category=Warning, module="docutils") +warnings.filterwarnings("ignore", category=Warning, module="sphinx") + +pfaffian_strategy_map = {_cls.NAME.lower().strip(): _cls for _cls in get_all_subclasses(PfaffianStrategy)} def get_pfaffian_function(name: str = PfaffianFDBPf.NAME) -> Callable[[torch.Tensor], torch.Tensor]: @@ -31,4 +28,3 @@ def get_pfaffian_function(name: str = PfaffianFDBPf.NAME) -> Callable[[torch.Ten if name not in pfaffian_strategy_map: raise ValueError(f"Unknown strategy name: {name}. Available strategies: {list(pfaffian_strategy_map.keys())}") return pfaffian_strategy_map[name].apply - diff --git a/src/torch_pfaffian/__main__.py b/src/torch_pfaffian/__main__.py deleted file mode 100644 index 36f5609..0000000 --- a/src/torch_pfaffian/__main__.py +++ /dev/null @@ -1,15 +0,0 @@ -import argparse -import sys - - -def parse_args(): - paser = argparse.ArgumentParser() - return paser.parse_args() - - -def main(): - pass - - -if __name__ == '__main__': - sys.exit(main()) diff --git a/src/torch_pfaffian/py.typed b/src/torch_pfaffian/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/src/torch_pfaffian/strategies/__init__.py b/src/torch_pfaffian/strategies/__init__.py index 983c798..5df968c 100644 --- a/src/torch_pfaffian/strategies/__init__.py +++ b/src/torch_pfaffian/strategies/__init__.py @@ -1,9 +1,8 @@ from typing import Callable + import torch -from .strategy import PfaffianStrategy +from .pfaffian_block_det import PfaffianBlockDet +from .pfaffian_det import PfaffianDet from .pfaffian_fdbpf import PfaffianFDBPf -# from .pfaffian_block_det import PfaffianBlockDet -# from .pfaffian_perm import PfaffianPerm - - +from .strategy import PfaffianStrategy diff --git a/src/torch_pfaffian/strategies/pfaffian_block_det.py b/src/torch_pfaffian/strategies/pfaffian_block_det.py index 0768598..526bd59 100644 --- a/src/torch_pfaffian/strategies/pfaffian_block_det.py +++ b/src/torch_pfaffian/strategies/pfaffian_block_det.py @@ -1,5 +1,7 @@ -from typing import Any +from typing import cast + import torch + from .strategy import PfaffianStrategy @@ -10,6 +12,7 @@ class PfaffianBlockDet(PfaffianStrategy): The input matrix is considered to be a skew-symmetric matrix. """ + NAME = "PfaffianBlockDet" @staticmethod @@ -22,24 +25,31 @@ def forward(matrix: torch.Tensor): # take the upper right block of shape (..., N, N) of the input matrix n = matrix.shape[-1] // 2 sub_matrix = matrix[..., :n, n:] - pf = (-1)**(n*(n-1)//2) * torch.linalg.det(sub_matrix) + pf = (-1) ** (n * (n - 1) // 2) * torch.linalg.det(sub_matrix) return pf @staticmethod - def backward(ctx: torch.autograd.function.FunctionCtx, grad_output): + def backward(ctx: torch.autograd.function.BackwardCFunction, grad_output): r""" + Compute the gradient of the Pfaffian with respect to the full input matrix. - ..math: - \frac{\partial \text{pf}(A)}{\partial A_{ij}} = \frac{\text{pf}(A)}{2} A^{-1}_{ji} + The forward depends only on the upper-right block ``block = matrix[..., :n, n:]`` through + ``pf = c * det(block)``. By Jacobi's formula ``d det(block) / d block = det(block) * (block^{-1})^T``, + so ``d pf / d block = pf * (block^{-1})^T``. The gradient is therefore zero everywhere except in + the upper-right block. - :param ctx: Context - :param grad_output: Gradient of the output - :return: Gradient of the input + :param ctx: Context holding the saved input matrix and the forward Pfaffian. + :param grad_output: Gradient of the output with respect to the loss. + :return: Gradient of the input matrix, or ``None`` when the input does not require grad. + :rtype: torch.Tensor | None """ - matrix, pf = ctx.saved_tensors + matrix, pf = cast("tuple[torch.Tensor, torch.Tensor]", ctx.saved_tensors) grad_matrix = None if ctx.needs_input_grad[0]: - grad_matrix = torch.einsum('...,...ij->...ji', 0.5 * grad_output * pf, torch.linalg.pinv(matrix)) + n = matrix.shape[-1] // 2 + sub_matrix = matrix[..., :n, n:] # (..., n, n) upper-right block + inverse_transpose = torch.linalg.inv(sub_matrix).transpose(-1, -2) + grad_block = grad_output[..., None, None] * pf[..., None, None] * inverse_transpose + grad_matrix = torch.zeros_like(matrix) + grad_matrix[..., :n, n:] = grad_block return grad_matrix - - diff --git a/src/torch_pfaffian/strategies/pfaffian_det.py b/src/torch_pfaffian/strategies/pfaffian_det.py new file mode 100644 index 0000000..7051779 --- /dev/null +++ b/src/torch_pfaffian/strategies/pfaffian_det.py @@ -0,0 +1,21 @@ +import torch + +from .strategy import PfaffianStrategy + + +class PfaffianDet(PfaffianStrategy): + """ + Compute the Pfaffian as ``pf = sqrt(|det(A)|)`` and rely on autograd for the backward pass. + + The other strategies are full ``torch.autograd.Function`` implementations with a custom analytic + backward. This strategy instead differentiates straight through ``det`` and ``sqrt`` with PyTorch + autograd, so it overrides :meth:`apply` to bypass the ``torch.autograd.Function`` machinery. The + radicand is clamped to ``EPSILON`` for numerical stability, matching the other determinant-based + strategy. + """ + + NAME = "PfaffianDet" + + @staticmethod + def apply(matrix: torch.Tensor) -> torch.Tensor: + return torch.sqrt(torch.clamp(torch.abs(torch.linalg.det(matrix)), min=PfaffianStrategy.EPSILON)) diff --git a/src/torch_pfaffian/strategies/pfaffian_fdbpf.py b/src/torch_pfaffian/strategies/pfaffian_fdbpf.py index 1ab2b3f..1695251 100644 --- a/src/torch_pfaffian/strategies/pfaffian_fdbpf.py +++ b/src/torch_pfaffian/strategies/pfaffian_fdbpf.py @@ -1,5 +1,7 @@ -from typing import Any +from typing import cast + import torch + from .strategy import PfaffianStrategy @@ -8,6 +10,7 @@ class PfaffianFDBPf(PfaffianStrategy): This class implements the Pfaffian using the determinant of the matrix for the forward pass and the derivative of the Pfaffian with respect to the input matrix for the backward pass. """ + NAME = "PfaffianFDBPf" @staticmethod @@ -16,11 +19,11 @@ def forward(matrix: torch.Tensor): if _2n % 2 != 0: return torch.zeros_like(matrix[..., 0, 0]) det = torch.linalg.det(matrix) - pf = torch.sqrt(torch.abs(det) + PfaffianFDBPf.EPSILON) + pf = torch.sqrt(torch.clamp(torch.abs(det), min=PfaffianFDBPf.EPSILON)) return pf @staticmethod - def backward(ctx: torch.autograd.function.FunctionCtx, grad_output): + def backward(ctx: torch.autograd.function.BackwardCFunction, grad_output): r""" ..math: @@ -30,10 +33,8 @@ def backward(ctx: torch.autograd.function.FunctionCtx, grad_output): :param grad_output: Gradient of the output :return: Gradient of the input """ - matrix, pf = ctx.saved_tensors + matrix, pf = cast("tuple[torch.Tensor, torch.Tensor]", ctx.saved_tensors) grad_matrix = None if ctx.needs_input_grad[0]: - grad_matrix = torch.einsum('...,...ij->...ji', 0.5 * grad_output * pf, torch.linalg.pinv(matrix)) + grad_matrix = torch.einsum("...,...ij->...ji", 0.5 * grad_output * pf, torch.linalg.pinv(matrix)) return grad_matrix - - diff --git a/src/torch_pfaffian/strategies/strategy.py b/src/torch_pfaffian/strategies/strategy.py index ff5b03f..7723d9f 100644 --- a/src/torch_pfaffian/strategies/strategy.py +++ b/src/torch_pfaffian/strategies/strategy.py @@ -1,14 +1,13 @@ -from abc import ABC, abstractmethod import torch class PfaffianStrategy(torch.autograd.Function): - EPSILON = 1e-12 + EPSILON = 1e-30 NAME = "PfaffianStrategy" @staticmethod def setup_context(ctx: torch.autograd.function.FunctionCtx, inputs, output): - matrix, = inputs + (matrix,) = inputs pf = output ctx.save_for_backward(matrix, pf) @@ -17,7 +16,5 @@ def forward(matrix: torch.Tensor): pass @staticmethod - def backward(ctx: torch.autograd.function.FunctionCtx, grad_output): + def backward(ctx: torch.autograd.function.BackwardCFunction, grad_output): pass - - diff --git a/tests/__init__.py b/tests/__init__.py index 15102d4..bac659d 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -1,13 +1,6 @@ -import pytest import numpy as np +import pytest + from .configs import TEST_SEED np.random.seed(TEST_SEED) - - -def get_slow_test_mark(): - from .configs import RUN_SLOW_TESTS - return pytest.mark.skipif( - not RUN_SLOW_TESTS, - reason=f"Only run when configs.{RUN_SLOW_TESTS} is True.", - ) diff --git a/tests/configs.py b/tests/configs.py index 2217dab..b2a9393 100644 --- a/tests/configs.py +++ b/tests/configs.py @@ -1,4 +1,3 @@ - N_RANDOM_TESTS_PER_CASE = 10 TEST_SEED = 42 @@ -14,8 +13,6 @@ ATOL_SHAPE_COMPARISON = 0 RTOL_SHAPE_COMPARISON = 0 -RUN_SLOW_TESTS = True - def set_seed(seed: int = TEST_SEED): import numpy as np diff --git a/tests/conftest.py b/tests/conftest.py index 8cf7624..e69de29 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,45 +0,0 @@ -import pytest -from .configs import RUN_SLOW_TESTS - -RUN_SLOW_ARG_NAME = "run_slow" - - -@pytest.hookimpl() -def pytest_sessionstart(session): - pass - - -# @pytest.hookimpl() -# def pytest_sessionfinish(session, exitstatus): -# reporter = session.config.pluginmanager.get_plugin('terminalreporter') -# print('passed amount:', len(reporter.stats['passed'])) - - -def pytest_addoption(parser): - r""" - Add options to the pytest command. - - See: https://jwodder.github.io/kbits/posts/pytest-mark-off/. - - :param parser: The pytest parser. - :return: None - """ - parser.addoption( - f"--{RUN_SLOW_ARG_NAME}", - action="store_true", - default=RUN_SLOW_TESTS, - help="Run slow tests", - ) - - -def pytest_collection_modifyitems(config, items): - if config.getoption(f"--{RUN_SLOW_ARG_NAME}"): - # if RUN_SLOW_TESTS: - # print("Running slow tests") - pass - else: - # print("Skipping slow tests") - skipper = pytest.mark.skip(reason=f"Only run when '--{RUN_SLOW_ARG_NAME}=True' is given") - for item in items: - if "slow" in item.keywords: - item.add_marker(skipper) diff --git a/tests/test_strategies/__init__.py b/tests/test_strategies/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_strategies/test_pfaffian_block_det.py b/tests/test_strategies/test_pfaffian_block_det.py new file mode 100644 index 0000000..c819f12 --- /dev/null +++ b/tests/test_strategies/test_pfaffian_block_det.py @@ -0,0 +1,82 @@ +import numpy as np +import pytest +import torch +from torch.autograd import gradcheck + +from tests.configs import ( + ATOL_APPROX_COMPARISON, + ATOL_MATRIX_COMPARISON, + N_RANDOM_TESTS_PER_CASE, + RTOL_APPROX_COMPARISON, + RTOL_MATRIX_COMPARISON, + TEST_SEED, +) +from torch_pfaffian.strategies.pfaffian_block_det import PfaffianBlockDet + +_RNG = np.random.default_rng(TEST_SEED) +_BLOCK_SIZES = [1, 2, 3, 4] +_RANDOM_BLOCKS = [_RNG.random((size, size)) for size in _BLOCK_SIZES for _ in range(N_RANDOM_TESTS_PER_CASE)] + + +def _block_antidiagonal(block: np.ndarray) -> torch.Tensor: + # Build the skew-symmetric matrix [[0, block], [-block^T, 0]] that PfaffianBlockDet targets. + zero = np.zeros_like(block) + top = np.concatenate([zero, block], axis=-1) + bottom = np.concatenate([-np.einsum("...ij->...ji", block), zero], axis=-1) + return torch.tensor(np.concatenate([top, bottom], axis=-2)) + + +def _well_conditioned_blocks(sizes: list[int], count: int, min_abs_det: float = 0.1) -> list[np.ndarray]: + # The gradient relies on the inverse of the upper-right block, which is unstable for near-singular + # blocks, so the gradcheck inputs are restricted to blocks whose determinant is away from zero. + blocks = [] + for size in sizes: + kept = 0 + while kept < count: + candidate = _RNG.random((size, size)) + if np.abs(np.linalg.det(candidate)) > min_abs_det: + blocks.append(candidate) + kept += 1 + return blocks + + +_GRADCHECK_BLOCKS = _well_conditioned_blocks(_BLOCK_SIZES, N_RANDOM_TESTS_PER_CASE) + + +class TestPfaffianBlockDet: + @pytest.mark.parametrize("block", _RANDOM_BLOCKS) + def test_forward_square_of_pfaffian_matches_determinant(self, block): + matrix = _block_antidiagonal(block) + pfaffian = PfaffianBlockDet.apply(matrix) + determinant = torch.linalg.det(matrix) + torch.testing.assert_close(pfaffian**2, determinant, atol=ATOL_MATRIX_COMPARISON, rtol=RTOL_MATRIX_COMPARISON) + + def test_forward_supports_batched_input(self): + matrix = _block_antidiagonal(_RNG.random((5, 3, 3))) + pfaffian = PfaffianBlockDet.apply(matrix) + assert pfaffian.shape == matrix.shape[:-2] + torch.testing.assert_close( + pfaffian**2, torch.linalg.det(matrix), atol=ATOL_MATRIX_COMPARISON, rtol=RTOL_MATRIX_COMPARISON + ) + + @pytest.mark.parametrize("dtype", [torch.float32, torch.float64]) + def test_forward_preserves_dtype(self, dtype): + matrix = _block_antidiagonal(_RNG.random((3, 3))).to(dtype) + assert PfaffianBlockDet.apply(matrix).dtype == dtype + + @pytest.mark.parametrize("block", _GRADCHECK_BLOCKS) + def test_backward_passes_gradcheck(self, block): + matrix = _block_antidiagonal(block).to(torch.float64).requires_grad_(True) + assert gradcheck( + PfaffianBlockDet.apply, (matrix,), eps=1e-6, atol=ATOL_APPROX_COMPARISON, rtol=RTOL_APPROX_COMPARISON + ) + + def test_backward_returns_none_when_input_does_not_require_grad(self): + matrix = _block_antidiagonal(_RNG.random((4, 4))) + pfaffian = PfaffianBlockDet.apply(matrix) + + class _Context: + saved_tensors = (matrix, pfaffian) + needs_input_grad = (False,) + + assert PfaffianBlockDet.backward(_Context(), torch.ones_like(pfaffian)) is None diff --git a/tests/test_strategies/test_pfaffian_det.py b/tests/test_strategies/test_pfaffian_det.py new file mode 100644 index 0000000..137821b --- /dev/null +++ b/tests/test_strategies/test_pfaffian_det.py @@ -0,0 +1,78 @@ +import numpy as np +import pytest +import torch +from torch.autograd import gradcheck + +from tests.configs import ( + ATOL_APPROX_COMPARISON, + ATOL_MATRIX_COMPARISON, + N_RANDOM_TESTS_PER_CASE, + RTOL_APPROX_COMPARISON, + RTOL_MATRIX_COMPARISON, + TEST_SEED, +) +from torch_pfaffian.strategies.pfaffian_det import PfaffianDet +from torch_pfaffian.strategies.pfaffian_fdbpf import PfaffianFDBPf + +_RNG = np.random.default_rng(TEST_SEED) + + +def _skew(matrix: np.ndarray) -> np.ndarray: + return matrix - np.einsum("...ij->...ji", matrix) + + +def _well_conditioned_skew_matrices(shapes: list[tuple[int, ...]], count: int, min_abs_det: float = 0.1): + matrices = [] + for shape in shapes: + kept = 0 + while kept < count: + candidate = _skew(_RNG.random(shape)) + if np.all(np.abs(np.linalg.det(candidate)) > min_abs_det): + matrices.append(candidate) + kept += 1 + return matrices + + +_FORWARD_MATRICES = [ + _skew(_RNG.random(shape)) for shape in [(8, 8), (16, 6, 6)] for _ in range(N_RANDOM_TESTS_PER_CASE) +] +_GRADCHECK_MATRICES = _well_conditioned_skew_matrices([(4, 4), (6, 6), (8, 4, 4)], N_RANDOM_TESTS_PER_CASE) + + +class TestPfaffianDet: + @pytest.mark.parametrize("skew_matrix", _FORWARD_MATRICES) + def test_forward_square_of_pfaffian_matches_determinant(self, skew_matrix): + skew_tensor = torch.tensor(skew_matrix) + pfaffian = PfaffianDet.apply(skew_tensor) + determinant = torch.linalg.det(skew_tensor) + torch.testing.assert_close(pfaffian**2, determinant, atol=ATOL_MATRIX_COMPARISON, rtol=RTOL_MATRIX_COMPARISON) + + @pytest.mark.parametrize("skew_matrix", _FORWARD_MATRICES) + def test_forward_matches_fdbpf(self, skew_matrix): + skew_tensor = torch.tensor(skew_matrix) + torch.testing.assert_close( + PfaffianDet.apply(skew_tensor), + PfaffianFDBPf.apply(skew_tensor), + atol=ATOL_MATRIX_COMPARISON, + rtol=RTOL_MATRIX_COMPARISON, + ) + + @pytest.mark.parametrize("skew_matrix", _GRADCHECK_MATRICES) + def test_backward_passes_gradcheck(self, skew_matrix): + skew_tensor = torch.tensor(skew_matrix, requires_grad=True) + assert gradcheck( + PfaffianDet.apply, (skew_tensor,), eps=1e-6, atol=ATOL_APPROX_COMPARISON, rtol=RTOL_APPROX_COMPARISON + ) + + @pytest.mark.parametrize("dtype", [torch.float32, torch.float64]) + def test_forward_preserves_dtype(self, dtype): + matrix = torch.tensor(_skew(_RNG.random((6, 6))), dtype=dtype) + assert PfaffianDet.apply(matrix).dtype == dtype + + def test_forward_supports_batched_input(self): + batched_matrix = torch.tensor(_skew(_RNG.random((5, 6, 6)))) + pfaffian = PfaffianDet.apply(batched_matrix) + assert pfaffian.shape == batched_matrix.shape[:-2] + torch.testing.assert_close( + pfaffian**2, torch.linalg.det(batched_matrix), atol=ATOL_MATRIX_COMPARISON, rtol=RTOL_MATRIX_COMPARISON + ) diff --git a/tests/test_strategies/test_pfaffian_fdbpf.py b/tests/test_strategies/test_pfaffian_fdbpf.py new file mode 100644 index 0000000..3f7246f --- /dev/null +++ b/tests/test_strategies/test_pfaffian_fdbpf.py @@ -0,0 +1,103 @@ +import numpy as np +import pytest +import torch +from torch.autograd import gradcheck + +from tests.configs import ( + ATOL_APPROX_COMPARISON, + ATOL_MATRIX_COMPARISON, + N_RANDOM_TESTS_PER_CASE, + RTOL_APPROX_COMPARISON, + RTOL_MATRIX_COMPARISON, + TEST_SEED, +) +from torch_pfaffian.strategies.pfaffian_fdbpf import PfaffianFDBPf + +_RNG = np.random.default_rng(TEST_SEED) + + +def _skew(matrix: np.ndarray) -> np.ndarray: + return matrix - np.einsum("...ij->...ji", matrix) + + +def _random_skew_matrices(shapes: list[tuple[int, ...]], count: int) -> list[np.ndarray]: + return [_skew(_RNG.random(shape)) for shape in shapes for _ in range(count)] + + +def _well_conditioned_skew_matrices(shapes: list[tuple[int, ...]], count: int, min_abs_det: float = 0.1): + # The gradient relies on the (pseudo)inverse, which is unstable for near-singular matrices, so the + # gradcheck inputs are restricted to skew matrices whose determinant is comfortably away from zero. + matrices = [] + for shape in shapes: + kept = 0 + while kept < count: + candidate = _skew(_RNG.random(shape)) + if np.all(np.abs(np.linalg.det(candidate)) > min_abs_det): + matrices.append(candidate) + kept += 1 + return matrices + + +_FORWARD_MATRICES = _random_skew_matrices([(8, 8), (16, 6, 6), (18, 10, 10)], N_RANDOM_TESTS_PER_CASE) +_GRADCHECK_MATRICES = _well_conditioned_skew_matrices([(4, 4), (6, 6), (8, 4, 4)], N_RANDOM_TESTS_PER_CASE) + + +class TestPfaffianFDBPf: + @pytest.mark.parametrize("skew_matrix", _FORWARD_MATRICES) + def test_forward_square_of_pfaffian_matches_determinant(self, skew_matrix): + skew_tensor = torch.tensor(skew_matrix) + pfaffian = PfaffianFDBPf.apply(skew_tensor) + determinant = torch.linalg.det(skew_tensor) + torch.testing.assert_close(pfaffian**2, determinant, atol=ATOL_MATRIX_COMPARISON, rtol=RTOL_MATRIX_COMPARISON) + + @pytest.mark.parametrize("skew_matrix", _GRADCHECK_MATRICES) + def test_backward_passes_gradcheck(self, skew_matrix): + skew_tensor = torch.tensor(skew_matrix, requires_grad=True) + assert gradcheck( + PfaffianFDBPf.apply, (skew_tensor,), eps=1e-6, atol=ATOL_APPROX_COMPARISON, rtol=RTOL_APPROX_COMPARISON + ) + + def test_forward_matches_known_pfaffian_magnitude(self): + # For the 2x2 skew matrix [[0, a], [-a, 0]] the Pfaffian is a, so its magnitude is |a|. + value = 0.7 + matrix = torch.tensor([[0.0, value], [-value, 0.0]], dtype=torch.float64) + pfaffian = PfaffianFDBPf.apply(matrix) + expected = torch.tensor(abs(value), dtype=torch.float64) + torch.testing.assert_close(pfaffian, expected, atol=ATOL_MATRIX_COMPARISON, rtol=RTOL_MATRIX_COMPARISON) + + def test_forward_returns_absolute_value_so_sign_is_not_recovered(self): + # The strategy computes |pf| via sqrt(|det|); the true Pfaffian of [[0, -a], [a, 0]] is -a, + # but the strategy returns +|a|. + value = 0.7 + matrix = torch.tensor([[0.0, -value], [value, 0.0]], dtype=torch.float64) + pfaffian = PfaffianFDBPf.apply(matrix) + expected = torch.tensor(abs(value), dtype=torch.float64) + torch.testing.assert_close(pfaffian, expected, atol=ATOL_MATRIX_COMPARISON, rtol=RTOL_MATRIX_COMPARISON) + + @pytest.mark.parametrize("dtype", [torch.float32, torch.float64]) + def test_forward_preserves_dtype(self, dtype): + matrix = torch.tensor(_skew(_RNG.random((6, 6))), dtype=dtype) + assert PfaffianFDBPf.apply(matrix).dtype == dtype + + def test_forward_supports_batched_input(self): + batched_matrix = torch.tensor(_skew(_RNG.random((5, 6, 6)))) + pfaffian = PfaffianFDBPf.apply(batched_matrix) + assert pfaffian.shape == batched_matrix.shape[:-2] + torch.testing.assert_close( + pfaffian**2, torch.linalg.det(batched_matrix), atol=ATOL_MATRIX_COMPARISON, rtol=RTOL_MATRIX_COMPARISON + ) + + def test_forward_returns_zero_for_odd_dimension(self): + odd_matrix = torch.tensor(_skew(_RNG.random((3, 3)))) + pfaffian = PfaffianFDBPf.apply(odd_matrix) + torch.testing.assert_close(pfaffian, torch.zeros_like(odd_matrix[..., 0, 0])) + + def test_backward_returns_none_when_input_does_not_require_grad(self): + matrix = torch.tensor(_skew(_RNG.random((4, 4)))) + pfaffian = PfaffianFDBPf.apply(matrix) + + class _Context: + saved_tensors = (matrix, pfaffian) + needs_input_grad = (False,) + + assert PfaffianFDBPf.backward(_Context(), torch.ones_like(pfaffian)) is None diff --git a/tests/test_strategies/test_strategy.py b/tests/test_strategies/test_strategy.py new file mode 100644 index 0000000..2ae0e93 --- /dev/null +++ b/tests/test_strategies/test_strategy.py @@ -0,0 +1,28 @@ +import torch + +from torch_pfaffian.strategies.strategy import PfaffianStrategy + + +class _RecordingContext: + def save_for_backward(self, *tensors): + self.saved_tensors = tensors + + +class TestPfaffianStrategy: + def test_class_attributes(self): + assert PfaffianStrategy.NAME == "PfaffianStrategy" + assert PfaffianStrategy.EPSILON == 1e-30 + + def test_setup_context_saves_inputs_and_output(self): + matrix = torch.eye(2, dtype=torch.float64) + pfaffian = torch.tensor(1.0, dtype=torch.float64) + context = _RecordingContext() + PfaffianStrategy.setup_context(context, (matrix,), pfaffian) + assert context.saved_tensors[0] is matrix + assert context.saved_tensors[1] is pfaffian + + def test_base_forward_is_not_implemented(self): + assert PfaffianStrategy.forward(torch.eye(2, dtype=torch.float64)) is None + + def test_base_backward_is_not_implemented(self): + assert PfaffianStrategy.backward(None, None) is None diff --git a/tests/test_torch_pfaffian.py b/tests/test_torch_pfaffian.py index d39f328..dcbea59 100644 --- a/tests/test_torch_pfaffian.py +++ b/tests/test_torch_pfaffian.py @@ -1,69 +1,32 @@ -import numpy as np import pytest - -from .configs import ( - N_RANDOM_TESTS_PER_CASE, - TEST_SEED, - ATOL_APPROX_COMPARISON, - RTOL_APPROX_COMPARISON, - set_seed, -) import torch -from torch_pfaffian import pfaffian_strategy_map, get_pfaffian_function -from torch.autograd import gradcheck -set_seed(TEST_SEED) +from torch_pfaffian import get_pfaffian_function, pfaffian_strategy_map +from torch_pfaffian.strategies import PfaffianDet, PfaffianFDBPf -@pytest.mark.parametrize( - "matrix, function_name", - [ - (np.random.rand(*shape), function_name) - for shape in [ - (8, 8), - (16, 6, 6), - (18, 10, 10), - ] - for _ in range(N_RANDOM_TESTS_PER_CASE) - for function_name in pfaffian_strategy_map.keys() - ] -) -def test_torch_pfaffian_gradcheck(matrix, function_name): - func = get_pfaffian_function(function_name) - skew_matrix = matrix - np.einsum("...ij->...ji", matrix) - skew_tensor = torch.tensor(skew_matrix, requires_grad=True) - assert gradcheck( - func, (skew_tensor,), - eps=1e-3, - atol=ATOL_APPROX_COMPARISON, - rtol=RTOL_APPROX_COMPARISON - ) +class TestTorchPfaffian: + def test_pfaffian_strategy_map_contains_registered_strategies(self): + assert PfaffianFDBPf.NAME.lower().strip() in pfaffian_strategy_map + assert PfaffianDet.NAME.lower().strip() in pfaffian_strategy_map + assert all(issubclass(cls, PfaffianFDBPf.__bases__[0]) for cls in pfaffian_strategy_map.values()) + def test_get_pfaffian_function_returns_apply_of_registered_strategy(self): + function = get_pfaffian_function(PfaffianFDBPf.NAME) + assert function == PfaffianFDBPf.apply -@pytest.mark.parametrize( - "matrix, function_name", - [ - (np.random.rand(*shape), function_name) - for shape in [ - (8, 8), - (16, 6, 6), - (18, 10, 10), - ] - for _ in range(N_RANDOM_TESTS_PER_CASE) - for function_name in pfaffian_strategy_map.keys() - ] -) -def test_torch_pfaffian_forward_against_det(matrix, function_name): - func = get_pfaffian_function(function_name) - skew_matrix = matrix - np.einsum("...ij->...ji", matrix) - skew_tensor = torch.tensor(skew_matrix, requires_grad=True) + def test_get_pfaffian_function_dispatches_to_pfaffian_det(self): + assert get_pfaffian_function(PfaffianDet.NAME) == PfaffianDet.apply - pf = func(skew_tensor) - det = torch.linalg.det(skew_tensor) + def test_get_pfaffian_function_default_name_is_callable(self): + function = get_pfaffian_function() + matrix = torch.tensor([[0.0, 1.0], [-1.0, 0.0]], dtype=torch.float64) + torch.testing.assert_close(function(matrix), matrix[..., 0, 1]) - assert torch.allclose( - pf ** 2, det, - atol=ATOL_APPROX_COMPARISON, - rtol=RTOL_APPROX_COMPARISON - ) + def test_get_pfaffian_function_is_case_and_whitespace_insensitive(self): + function = get_pfaffian_function(f" {PfaffianFDBPf.NAME.upper()} ") + assert function == PfaffianFDBPf.apply + def test_get_pfaffian_function_unknown_name_raises_value_error(self): + with pytest.raises(ValueError, match="Unknown strategy name"): + get_pfaffian_function("not_a_real_strategy") diff --git a/tests/test_utils.py b/tests/test_utils.py new file mode 100644 index 0000000..16f8505 --- /dev/null +++ b/tests/test_utils.py @@ -0,0 +1,30 @@ +from torch_pfaffian.utils import get_all_subclasses + + +class TestUtils: + def test_get_all_subclasses_returns_empty_for_leaf(self): + class Leaf: + pass + + assert get_all_subclasses(Leaf) == [] + + def test_get_all_subclasses_returns_direct_subclasses(self): + class Base: + pass + + class Child(Base): + pass + + assert get_all_subclasses(Base) == [Child] + + def test_get_all_subclasses_returns_nested_subclasses(self): + class Base: + pass + + class Child(Base): + pass + + class GrandChild(Child): + pass + + assert set(get_all_subclasses(Base)) == {Child, GrandChild} diff --git a/uv.lock b/uv.lock new file mode 100644 index 0000000..55df965 --- /dev/null +++ b/uv.lock @@ -0,0 +1,4379 @@ +version = 1 +revision = 3 +requires-python = ">=3.10, <3.15" +resolution-markers = [ + "python_full_version >= '3.12' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130'", + "python_full_version == '3.11.*' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130'", + "python_full_version < '3.11' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130'", + "python_full_version >= '3.12' and extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version == '3.11.*' and extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version < '3.11' and extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version >= '3.12' and sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version == '3.11.*' and sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version >= '3.12' and sys_platform == 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version == '3.11.*' and sys_platform == 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version < '3.11' and sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version >= '3.12' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version == '3.11.*' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version < '3.11' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", +] +conflicts = [[ + { package = "torchpfaffian", extra = "cpu" }, + { package = "torchpfaffian", extra = "cu128" }, + { package = "torchpfaffian", extra = "cu130" }, +]] + +[[package]] +name = "alabaster" +version = "0.7.16" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c9/3e/13dd8e5ed9094e734ac430b5d0eb4f2bb001708a8b7856cbf8e084e001ba/alabaster-0.7.16.tar.gz", hash = "sha256:75a8b99c28a5dad50dd7f8ccdd447a121ddb3892da9e53d1ca5cca3106d58d65", size = 23776, upload-time = "2024-01-10T00:56:10.189Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/34/d4e1c02d3bee589efb5dfa17f88ea08bdb3e3eac12bc475462aec52ed223/alabaster-0.7.16-py3-none-any.whl", hash = "sha256:b46733c07dce03ae4e150330b975c75737fa60f0a7c591b6c8bf4928a28e2c92", size = 13511, upload-time = "2024-01-10T00:56:08.388Z" }, +] + +[[package]] +name = "appnope" +version = "0.1.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/35/5d/752690df9ef5b76e169e68d6a129fa6d08a7100ca7f754c89495db3c6019/appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee", size = 4170, upload-time = "2024-02-06T09:43:11.258Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321, upload-time = "2024-02-06T09:43:09.663Z" }, +] + +[[package]] +name = "asttokens" +version = "3.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/be/a5/8e3f9b6771b0b408517c82d97aed8f2036509bc247d46114925e32fe33f0/asttokens-3.0.1.tar.gz", hash = "sha256:71a4ee5de0bde6a31d64f6b13f2293ac190344478f081c3d1bccfcf5eacb0cb7", size = 62308, upload-time = "2025-11-15T16:43:48.578Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/39/e7eaf1799466a4aef85b6a4fe7bd175ad2b1c6345066aa33f1f58d4b18d0/asttokens-3.0.1-py3-none-any.whl", hash = "sha256:15a3ebc0f43c2d0a50eeafea25e19046c68398e487b9f1f5b517f7c0f40f976a", size = 27047, upload-time = "2025-11-15T16:43:16.109Z" }, +] + +[[package]] +name = "attrs" +version = "26.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9a/8e/82a0fe20a541c03148528be8cac2408564a6c9a0cc7e9171802bc1d26985/attrs-26.1.0.tar.gz", hash = "sha256:d03ceb89cb322a8fd706d4fb91940737b6642aa36998fe130a9bc96c985eff32", size = 952055, upload-time = "2026-03-19T14:22:25.026Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl", hash = "sha256:c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309", size = 67548, upload-time = "2026-03-19T14:22:23.645Z" }, +] + +[[package]] +name = "babel" +version = "2.18.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/b2/51899539b6ceeeb420d40ed3cd4b7a40519404f9baf3d4ac99dc413a834b/babel-2.18.0.tar.gz", hash = "sha256:b80b99a14bd085fcacfa15c9165f651fbb3406e66cc603abf11c5750937c992d", size = 9959554, upload-time = "2026-02-01T12:30:56.078Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/f5/21d2de20e8b8b0408f0681956ca2c69f1320a3848ac50e6e7f39c6159675/babel-2.18.0-py3-none-any.whl", hash = "sha256:e2b422b277c2b9a9630c1d7903c2a00d0830c409c59ac8cae9081c92f1aeba35", size = 10196845, upload-time = "2026-02-01T12:30:53.445Z" }, +] + +[[package]] +name = "backports-tarfile" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/86/72/cd9b395f25e290e633655a100af28cb253e4393396264a98bd5f5951d50f/backports_tarfile-1.2.0.tar.gz", hash = "sha256:d75e02c268746e1b8144c278978b6e98e85de6ad16f8e4b0844a154557eca991", size = 86406, upload-time = "2024-05-28T17:01:54.731Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/fa/123043af240e49752f1c4bd24da5053b6bd00cad78c2be53c0d1e8b975bc/backports.tarfile-1.2.0-py3-none-any.whl", hash = "sha256:77e284d754527b01fb1e6fa8a1afe577858ebe4e9dad8919e34c862cb399bc34", size = 30181, upload-time = "2024-05-28T17:01:53.112Z" }, +] + +[[package]] +name = "beautifulsoup4" +version = "4.15.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "soupsieve" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/43/65/318323f98dbee45d42dff61d8f047181bc6f2268a9068cfad035a46be5af/beautifulsoup4-4.15.0.tar.gz", hash = "sha256:288e3ca7d54b06f2ac191970bc275c1939cb46d450b255bf6718b04aa37ab4f7", size = 632571, upload-time = "2026-06-07T16:44:20.453Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/c6/92fcd42f1ba33e1184263f25bfabf3d27c383410470f169e4b8163bf9c17/beautifulsoup4-4.15.0-py3-none-any.whl", hash = "sha256:d6f88de62e1d4e38ecb1077eb9724cd0eff29d2a08ca16a401e9b9e93f117cf9", size = 109924, upload-time = "2026-06-07T16:44:21.566Z" }, +] + +[[package]] +name = "bleach" +version = "6.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/48/3c/e12ac860709702bd5ebeb9b56a4fe334f1001246ee1b8f2b7ee28912df7d/bleach-6.4.0.tar.gz", hash = "sha256:4202482733d85cedd04e59fcb2f89f4e4c7c385a78d3c3c23c30446843a37452", size = 204857, upload-time = "2026-06-05T13:01:13.734Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/58/9d/40b6267367182187139a4000b82a3b287d84d745bccd808e75d916920e9d/bleach-6.4.0-py3-none-any.whl", hash = "sha256:4b6b6a54fff2e69a3dde9d21cc6301220bee3c3cb792187d11403fd795031081", size = 165109, upload-time = "2026-06-05T13:01:12.504Z" }, +] + +[package.optional-dependencies] +css = [ + { name = "tinycss2" }, +] + +[[package]] +name = "build" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "(os_name == 'nt' and sys_platform != 'darwin') or (os_name == 'nt' and extra != 'extra-13-torchpfaffian-cpu') or (os_name != 'nt' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (os_name != 'nt' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (os_name != 'nt' and extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (sys_platform == 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (sys_platform == 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "importlib-metadata", marker = "python_full_version < '3.10.2' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "packaging" }, + { name = "pyproject-hooks" }, + { name = "tomli", marker = "python_full_version < '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/78/e0/df5e171f685f82f37b12e1f208064e24244911079d7b767447d1af7e0d70/build-1.5.0.tar.gz", hash = "sha256:302c22c3ba2a0fd5f3911918651341ebb3896176cbdec15bd421f80b1afc7647", size = 89796, upload-time = "2026-04-30T03:18:25.17Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0d/fe/6bea5c9162869c5beba5d9c8abbed835ec85bf1ec1fba05a3822325c45f3/build-1.5.0-py3-none-any.whl", hash = "sha256:13f3eecb844759ab66efec90ca17639bbf14dc06cb2fdf37a9010322d9c50a6f", size = 26018, upload-time = "2026-04-30T03:18:23.644Z" }, +] + +[[package]] +name = "certifi" +version = "2026.5.20" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/ce/ee2ecad540810a79593028e88299baeae54d346cc7a0d94b6199988b89b1/certifi-2026.5.20.tar.gz", hash = "sha256:69dea482ab64caa7b9f6aba1c6bf48bb6a5448d1c0f1b17ab42ad8c763a5344d", size = 135422, upload-time = "2026-05-20T11:46:50.073Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/59/8c/57e832b7af6d7c5abe66eb3fbe3a3a32f4d11ea23a1aa7131371035be991/certifi-2026.5.20-py3-none-any.whl", hash = "sha256:3c52e209ba0a4ad7aebe60436a4ab349c39e1e602e8c134221e546902ad25897", size = 134134, upload-time = "2026-05-20T11:46:48.578Z" }, +] + +[[package]] +name = "cffi" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser", marker = "implementation_name != 'PyPy' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588, upload-time = "2025-09-08T23:24:04.541Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/93/d7/516d984057745a6cd96575eea814fe1edd6646ee6efd552fb7b0921dec83/cffi-2.0.0-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:0cf2d91ecc3fcc0625c2c530fe004f82c110405f101548512cce44322fa8ac44", size = 184283, upload-time = "2025-09-08T23:22:08.01Z" }, + { url = "https://files.pythonhosted.org/packages/9e/84/ad6a0b408daa859246f57c03efd28e5dd1b33c21737c2db84cae8c237aa5/cffi-2.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f73b96c41e3b2adedc34a7356e64c8eb96e03a3782b535e043a986276ce12a49", size = 180504, upload-time = "2025-09-08T23:22:10.637Z" }, + { url = "https://files.pythonhosted.org/packages/50/bd/b1a6362b80628111e6653c961f987faa55262b4002fcec42308cad1db680/cffi-2.0.0-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:53f77cbe57044e88bbd5ed26ac1d0514d2acf0591dd6bb02a3ae37f76811b80c", size = 208811, upload-time = "2025-09-08T23:22:12.267Z" }, + { url = "https://files.pythonhosted.org/packages/4f/27/6933a8b2562d7bd1fb595074cf99cc81fc3789f6a6c05cdabb46284a3188/cffi-2.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3e837e369566884707ddaf85fc1744b47575005c0a229de3327f8f9a20f4efeb", size = 216402, upload-time = "2025-09-08T23:22:13.455Z" }, + { url = "https://files.pythonhosted.org/packages/05/eb/b86f2a2645b62adcfff53b0dd97e8dfafb5c8aa864bd0d9a2c2049a0d551/cffi-2.0.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:5eda85d6d1879e692d546a078b44251cdd08dd1cfb98dfb77b670c97cee49ea0", size = 203217, upload-time = "2025-09-08T23:22:14.596Z" }, + { url = "https://files.pythonhosted.org/packages/9f/e0/6cbe77a53acf5acc7c08cc186c9928864bd7c005f9efd0d126884858a5fe/cffi-2.0.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9332088d75dc3241c702d852d4671613136d90fa6881da7d770a483fd05248b4", size = 203079, upload-time = "2025-09-08T23:22:15.769Z" }, + { url = "https://files.pythonhosted.org/packages/98/29/9b366e70e243eb3d14a5cb488dfd3a0b6b2f1fb001a203f653b93ccfac88/cffi-2.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fc7de24befaeae77ba923797c7c87834c73648a05a4bde34b3b7e5588973a453", size = 216475, upload-time = "2025-09-08T23:22:17.427Z" }, + { url = "https://files.pythonhosted.org/packages/21/7a/13b24e70d2f90a322f2900c5d8e1f14fa7e2a6b3332b7309ba7b2ba51a5a/cffi-2.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf364028c016c03078a23b503f02058f1814320a56ad535686f90565636a9495", size = 218829, upload-time = "2025-09-08T23:22:19.069Z" }, + { url = "https://files.pythonhosted.org/packages/60/99/c9dc110974c59cc981b1f5b66e1d8af8af764e00f0293266824d9c4254bc/cffi-2.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e11e82b744887154b182fd3e7e8512418446501191994dbf9c9fc1f32cc8efd5", size = 211211, upload-time = "2025-09-08T23:22:20.588Z" }, + { url = "https://files.pythonhosted.org/packages/49/72/ff2d12dbf21aca1b32a40ed792ee6b40f6dc3a9cf1644bd7ef6e95e0ac5e/cffi-2.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8ea985900c5c95ce9db1745f7933eeef5d314f0565b27625d9a10ec9881e1bfb", size = 218036, upload-time = "2025-09-08T23:22:22.143Z" }, + { url = "https://files.pythonhosted.org/packages/e2/cc/027d7fb82e58c48ea717149b03bcadcbdc293553edb283af792bd4bcbb3f/cffi-2.0.0-cp310-cp310-win32.whl", hash = "sha256:1f72fb8906754ac8a2cc3f9f5aaa298070652a0ffae577e0ea9bd480dc3c931a", size = 172184, upload-time = "2025-09-08T23:22:23.328Z" }, + { url = "https://files.pythonhosted.org/packages/33/fa/072dd15ae27fbb4e06b437eb6e944e75b068deb09e2a2826039e49ee2045/cffi-2.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:b18a3ed7d5b3bd8d9ef7a8cb226502c6bf8308df1525e1cc676c3680e7176739", size = 182790, upload-time = "2025-09-08T23:22:24.752Z" }, + { url = "https://files.pythonhosted.org/packages/12/4a/3dfd5f7850cbf0d06dc84ba9aa00db766b52ca38d8b86e3a38314d52498c/cffi-2.0.0-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:b4c854ef3adc177950a8dfc81a86f5115d2abd545751a304c5bcf2c2c7283cfe", size = 184344, upload-time = "2025-09-08T23:22:26.456Z" }, + { url = "https://files.pythonhosted.org/packages/4f/8b/f0e4c441227ba756aafbe78f117485b25bb26b1c059d01f137fa6d14896b/cffi-2.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2de9a304e27f7596cd03d16f1b7c72219bd944e99cc52b84d0145aefb07cbd3c", size = 180560, upload-time = "2025-09-08T23:22:28.197Z" }, + { url = "https://files.pythonhosted.org/packages/b1/b7/1200d354378ef52ec227395d95c2576330fd22a869f7a70e88e1447eb234/cffi-2.0.0-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:baf5215e0ab74c16e2dd324e8ec067ef59e41125d3eade2b863d294fd5035c92", size = 209613, upload-time = "2025-09-08T23:22:29.475Z" }, + { url = "https://files.pythonhosted.org/packages/b8/56/6033f5e86e8cc9bb629f0077ba71679508bdf54a9a5e112a3c0b91870332/cffi-2.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:730cacb21e1bdff3ce90babf007d0a0917cc3e6492f336c2f0134101e0944f93", size = 216476, upload-time = "2025-09-08T23:22:31.063Z" }, + { url = "https://files.pythonhosted.org/packages/dc/7f/55fecd70f7ece178db2f26128ec41430d8720f2d12ca97bf8f0a628207d5/cffi-2.0.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:6824f87845e3396029f3820c206e459ccc91760e8fa24422f8b0c3d1731cbec5", size = 203374, upload-time = "2025-09-08T23:22:32.507Z" }, + { url = "https://files.pythonhosted.org/packages/84/ef/a7b77c8bdc0f77adc3b46888f1ad54be8f3b7821697a7b89126e829e676a/cffi-2.0.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9de40a7b0323d889cf8d23d1ef214f565ab154443c42737dfe52ff82cf857664", size = 202597, upload-time = "2025-09-08T23:22:34.132Z" }, + { url = "https://files.pythonhosted.org/packages/d7/91/500d892b2bf36529a75b77958edfcd5ad8e2ce4064ce2ecfeab2125d72d1/cffi-2.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8941aaadaf67246224cee8c3803777eed332a19d909b47e29c9842ef1e79ac26", size = 215574, upload-time = "2025-09-08T23:22:35.443Z" }, + { url = "https://files.pythonhosted.org/packages/44/64/58f6255b62b101093d5df22dcb752596066c7e89dd725e0afaed242a61be/cffi-2.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a05d0c237b3349096d3981b727493e22147f934b20f6f125a3eba8f994bec4a9", size = 218971, upload-time = "2025-09-08T23:22:36.805Z" }, + { url = "https://files.pythonhosted.org/packages/ab/49/fa72cebe2fd8a55fbe14956f9970fe8eb1ac59e5df042f603ef7c8ba0adc/cffi-2.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:94698a9c5f91f9d138526b48fe26a199609544591f859c870d477351dc7b2414", size = 211972, upload-time = "2025-09-08T23:22:38.436Z" }, + { url = "https://files.pythonhosted.org/packages/0b/28/dd0967a76aab36731b6ebfe64dec4e981aff7e0608f60c2d46b46982607d/cffi-2.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:5fed36fccc0612a53f1d4d9a816b50a36702c28a2aa880cb8a122b3466638743", size = 217078, upload-time = "2025-09-08T23:22:39.776Z" }, + { url = "https://files.pythonhosted.org/packages/2b/c0/015b25184413d7ab0a410775fdb4a50fca20f5589b5dab1dbbfa3baad8ce/cffi-2.0.0-cp311-cp311-win32.whl", hash = "sha256:c649e3a33450ec82378822b3dad03cc228b8f5963c0c12fc3b1e0ab940f768a5", size = 172076, upload-time = "2025-09-08T23:22:40.95Z" }, + { url = "https://files.pythonhosted.org/packages/ae/8f/dc5531155e7070361eb1b7e4c1a9d896d0cb21c49f807a6c03fd63fc877e/cffi-2.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:66f011380d0e49ed280c789fbd08ff0d40968ee7b665575489afa95c98196ab5", size = 182820, upload-time = "2025-09-08T23:22:42.463Z" }, + { url = "https://files.pythonhosted.org/packages/95/5c/1b493356429f9aecfd56bc171285a4c4ac8697f76e9bbbbb105e537853a1/cffi-2.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c6638687455baf640e37344fe26d37c404db8b80d037c3d29f58fe8d1c3b194d", size = 177635, upload-time = "2025-09-08T23:22:43.623Z" }, + { url = "https://files.pythonhosted.org/packages/ea/47/4f61023ea636104d4f16ab488e268b93008c3d0bb76893b1b31db1f96802/cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d", size = 185271, upload-time = "2025-09-08T23:22:44.795Z" }, + { url = "https://files.pythonhosted.org/packages/df/a2/781b623f57358e360d62cdd7a8c681f074a71d445418a776eef0aadb4ab4/cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c", size = 181048, upload-time = "2025-09-08T23:22:45.938Z" }, + { url = "https://files.pythonhosted.org/packages/ff/df/a4f0fbd47331ceeba3d37c2e51e9dfc9722498becbeec2bd8bc856c9538a/cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe", size = 212529, upload-time = "2025-09-08T23:22:47.349Z" }, + { url = "https://files.pythonhosted.org/packages/d5/72/12b5f8d3865bf0f87cf1404d8c374e7487dcf097a1c91c436e72e6badd83/cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062", size = 220097, upload-time = "2025-09-08T23:22:48.677Z" }, + { url = "https://files.pythonhosted.org/packages/c2/95/7a135d52a50dfa7c882ab0ac17e8dc11cec9d55d2c18dda414c051c5e69e/cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e", size = 207983, upload-time = "2025-09-08T23:22:50.06Z" }, + { url = "https://files.pythonhosted.org/packages/3a/c8/15cb9ada8895957ea171c62dc78ff3e99159ee7adb13c0123c001a2546c1/cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037", size = 206519, upload-time = "2025-09-08T23:22:51.364Z" }, + { url = "https://files.pythonhosted.org/packages/78/2d/7fa73dfa841b5ac06c7b8855cfc18622132e365f5b81d02230333ff26e9e/cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba", size = 219572, upload-time = "2025-09-08T23:22:52.902Z" }, + { url = "https://files.pythonhosted.org/packages/07/e0/267e57e387b4ca276b90f0434ff88b2c2241ad72b16d31836adddfd6031b/cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94", size = 222963, upload-time = "2025-09-08T23:22:54.518Z" }, + { url = "https://files.pythonhosted.org/packages/b6/75/1f2747525e06f53efbd878f4d03bac5b859cbc11c633d0fb81432d98a795/cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187", size = 221361, upload-time = "2025-09-08T23:22:55.867Z" }, + { url = "https://files.pythonhosted.org/packages/7b/2b/2b6435f76bfeb6bbf055596976da087377ede68df465419d192acf00c437/cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18", size = 172932, upload-time = "2025-09-08T23:22:57.188Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ed/13bd4418627013bec4ed6e54283b1959cf6db888048c7cf4b4c3b5b36002/cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5", size = 183557, upload-time = "2025-09-08T23:22:58.351Z" }, + { url = "https://files.pythonhosted.org/packages/95/31/9f7f93ad2f8eff1dbc1c3656d7ca5bfd8fb52c9d786b4dcf19b2d02217fa/cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6", size = 177762, upload-time = "2025-09-08T23:22:59.668Z" }, + { url = "https://files.pythonhosted.org/packages/4b/8d/a0a47a0c9e413a658623d014e91e74a50cdd2c423f7ccfd44086ef767f90/cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb", size = 185230, upload-time = "2025-09-08T23:23:00.879Z" }, + { url = "https://files.pythonhosted.org/packages/4a/d2/a6c0296814556c68ee32009d9c2ad4f85f2707cdecfd7727951ec228005d/cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca", size = 181043, upload-time = "2025-09-08T23:23:02.231Z" }, + { url = "https://files.pythonhosted.org/packages/b0/1e/d22cc63332bd59b06481ceaac49d6c507598642e2230f201649058a7e704/cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b", size = 212446, upload-time = "2025-09-08T23:23:03.472Z" }, + { url = "https://files.pythonhosted.org/packages/a9/f5/a2c23eb03b61a0b8747f211eb716446c826ad66818ddc7810cc2cc19b3f2/cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b", size = 220101, upload-time = "2025-09-08T23:23:04.792Z" }, + { url = "https://files.pythonhosted.org/packages/f2/7f/e6647792fc5850d634695bc0e6ab4111ae88e89981d35ac269956605feba/cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2", size = 207948, upload-time = "2025-09-08T23:23:06.127Z" }, + { url = "https://files.pythonhosted.org/packages/cb/1e/a5a1bd6f1fb30f22573f76533de12a00bf274abcdc55c8edab639078abb6/cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3", size = 206422, upload-time = "2025-09-08T23:23:07.753Z" }, + { url = "https://files.pythonhosted.org/packages/98/df/0a1755e750013a2081e863e7cd37e0cdd02664372c754e5560099eb7aa44/cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26", size = 219499, upload-time = "2025-09-08T23:23:09.648Z" }, + { url = "https://files.pythonhosted.org/packages/50/e1/a969e687fcf9ea58e6e2a928ad5e2dd88cc12f6f0ab477e9971f2309b57c/cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c", size = 222928, upload-time = "2025-09-08T23:23:10.928Z" }, + { url = "https://files.pythonhosted.org/packages/36/54/0362578dd2c9e557a28ac77698ed67323ed5b9775ca9d3fe73fe191bb5d8/cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b", size = 221302, upload-time = "2025-09-08T23:23:12.42Z" }, + { url = "https://files.pythonhosted.org/packages/eb/6d/bf9bda840d5f1dfdbf0feca87fbdb64a918a69bca42cfa0ba7b137c48cb8/cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27", size = 172909, upload-time = "2025-09-08T23:23:14.32Z" }, + { url = "https://files.pythonhosted.org/packages/37/18/6519e1ee6f5a1e579e04b9ddb6f1676c17368a7aba48299c3759bbc3c8b3/cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75", size = 183402, upload-time = "2025-09-08T23:23:15.535Z" }, + { url = "https://files.pythonhosted.org/packages/cb/0e/02ceeec9a7d6ee63bb596121c2c8e9b3a9e150936f4fbef6ca1943e6137c/cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91", size = 177780, upload-time = "2025-09-08T23:23:16.761Z" }, + { url = "https://files.pythonhosted.org/packages/92/c4/3ce07396253a83250ee98564f8d7e9789fab8e58858f35d07a9a2c78de9f/cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5", size = 185320, upload-time = "2025-09-08T23:23:18.087Z" }, + { url = "https://files.pythonhosted.org/packages/59/dd/27e9fa567a23931c838c6b02d0764611c62290062a6d4e8ff7863daf9730/cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13", size = 181487, upload-time = "2025-09-08T23:23:19.622Z" }, + { url = "https://files.pythonhosted.org/packages/d6/43/0e822876f87ea8a4ef95442c3d766a06a51fc5298823f884ef87aaad168c/cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b", size = 220049, upload-time = "2025-09-08T23:23:20.853Z" }, + { url = "https://files.pythonhosted.org/packages/b4/89/76799151d9c2d2d1ead63c2429da9ea9d7aac304603de0c6e8764e6e8e70/cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c", size = 207793, upload-time = "2025-09-08T23:23:22.08Z" }, + { url = "https://files.pythonhosted.org/packages/bb/dd/3465b14bb9e24ee24cb88c9e3730f6de63111fffe513492bf8c808a3547e/cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef", size = 206300, upload-time = "2025-09-08T23:23:23.314Z" }, + { url = "https://files.pythonhosted.org/packages/47/d9/d83e293854571c877a92da46fdec39158f8d7e68da75bf73581225d28e90/cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775", size = 219244, upload-time = "2025-09-08T23:23:24.541Z" }, + { url = "https://files.pythonhosted.org/packages/2b/0f/1f177e3683aead2bb00f7679a16451d302c436b5cbf2505f0ea8146ef59e/cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205", size = 222828, upload-time = "2025-09-08T23:23:26.143Z" }, + { url = "https://files.pythonhosted.org/packages/c6/0f/cafacebd4b040e3119dcb32fed8bdef8dfe94da653155f9d0b9dc660166e/cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1", size = 220926, upload-time = "2025-09-08T23:23:27.873Z" }, + { url = "https://files.pythonhosted.org/packages/3e/aa/df335faa45b395396fcbc03de2dfcab242cd61a9900e914fe682a59170b1/cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f", size = 175328, upload-time = "2025-09-08T23:23:44.61Z" }, + { url = "https://files.pythonhosted.org/packages/bb/92/882c2d30831744296ce713f0feb4c1cd30f346ef747b530b5318715cc367/cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25", size = 185650, upload-time = "2025-09-08T23:23:45.848Z" }, + { url = "https://files.pythonhosted.org/packages/9f/2c/98ece204b9d35a7366b5b2c6539c350313ca13932143e79dc133ba757104/cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad", size = 180687, upload-time = "2025-09-08T23:23:47.105Z" }, + { url = "https://files.pythonhosted.org/packages/3e/61/c768e4d548bfa607abcda77423448df8c471f25dbe64fb2ef6d555eae006/cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9", size = 188773, upload-time = "2025-09-08T23:23:29.347Z" }, + { url = "https://files.pythonhosted.org/packages/2c/ea/5f76bce7cf6fcd0ab1a1058b5af899bfbef198bea4d5686da88471ea0336/cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d", size = 185013, upload-time = "2025-09-08T23:23:30.63Z" }, + { url = "https://files.pythonhosted.org/packages/be/b4/c56878d0d1755cf9caa54ba71e5d049479c52f9e4afc230f06822162ab2f/cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c", size = 221593, upload-time = "2025-09-08T23:23:31.91Z" }, + { url = "https://files.pythonhosted.org/packages/e0/0d/eb704606dfe8033e7128df5e90fee946bbcb64a04fcdaa97321309004000/cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8", size = 209354, upload-time = "2025-09-08T23:23:33.214Z" }, + { url = "https://files.pythonhosted.org/packages/d8/19/3c435d727b368ca475fb8742ab97c9cb13a0de600ce86f62eab7fa3eea60/cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc", size = 208480, upload-time = "2025-09-08T23:23:34.495Z" }, + { url = "https://files.pythonhosted.org/packages/d0/44/681604464ed9541673e486521497406fadcc15b5217c3e326b061696899a/cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592", size = 221584, upload-time = "2025-09-08T23:23:36.096Z" }, + { url = "https://files.pythonhosted.org/packages/25/8e/342a504ff018a2825d395d44d63a767dd8ebc927ebda557fecdaca3ac33a/cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512", size = 224443, upload-time = "2025-09-08T23:23:37.328Z" }, + { url = "https://files.pythonhosted.org/packages/e1/5e/b666bacbbc60fbf415ba9988324a132c9a7a0448a9a8f125074671c0f2c3/cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4", size = 223437, upload-time = "2025-09-08T23:23:38.945Z" }, + { url = "https://files.pythonhosted.org/packages/a0/1d/ec1a60bd1a10daa292d3cd6bb0b359a81607154fb8165f3ec95fe003b85c/cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e", size = 180487, upload-time = "2025-09-08T23:23:40.423Z" }, + { url = "https://files.pythonhosted.org/packages/bf/41/4c1168c74fac325c0c8156f04b6749c8b6a8f405bbf91413ba088359f60d/cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6", size = 191726, upload-time = "2025-09-08T23:23:41.742Z" }, + { url = "https://files.pythonhosted.org/packages/ae/3a/dbeec9d1ee0844c679f6bb5d6ad4e9f198b1224f4e7a32825f47f6192b0c/cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9", size = 184195, upload-time = "2025-09-08T23:23:43.004Z" }, +] + +[[package]] +name = "cfgv" +version = "3.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4e/b5/721b8799b04bf9afe054a3899c6cf4e880fcf8563cc71c15610242490a0c/cfgv-3.5.0.tar.gz", hash = "sha256:d5b1034354820651caa73ede66a6294d6e95c1b00acc5e9b098e917404669132", size = 7334, upload-time = "2025-11-19T20:55:51.612Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/db/3c/33bac158f8ab7f89b2e59426d5fe2e4f63f7ed25df84c036890172b412b5/cfgv-3.5.0-py2.py3-none-any.whl", hash = "sha256:a8dc6b26ad22ff227d2634a65cb388215ce6cc96bbcc5cfde7641ae87e8dacc0", size = 7445, upload-time = "2025-11-19T20:55:50.744Z" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/a1/67fe25fac3c7642725500a3f6cfe5821ad557c3abb11c9d20d12c7008d3e/charset_normalizer-3.4.7.tar.gz", hash = "sha256:ae89db9e5f98a11a4bf50407d4363e7b09b31e55bc117b4f7d80aab97ba009e5", size = 144271, upload-time = "2026-04-02T09:28:39.342Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/08/0f303cb0b529e456bb116f2d50565a482694fbb94340bf56d44677e7ed03/charset_normalizer-3.4.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cdd68a1fb318e290a2077696b7eb7a21a49163c455979c639bf5a5dcdc46617d", size = 315182, upload-time = "2026-04-02T09:25:40.673Z" }, + { url = "https://files.pythonhosted.org/packages/24/47/b192933e94b546f1b1fe4df9cc1f84fcdbf2359f8d1081d46dd029b50207/charset_normalizer-3.4.7-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e17b8d5d6a8c47c85e68ca8379def1303fd360c3e22093a807cd34a71cd082b8", size = 209329, upload-time = "2026-04-02T09:25:42.354Z" }, + { url = "https://files.pythonhosted.org/packages/c2/b4/01fa81c5ca6141024d89a8fc15968002b71da7f825dd14113207113fabbd/charset_normalizer-3.4.7-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:511ef87c8aec0783e08ac18565a16d435372bc1ac25a91e6ac7f5ef2b0bff790", size = 231230, upload-time = "2026-04-02T09:25:44.281Z" }, + { url = "https://files.pythonhosted.org/packages/20/f7/7b991776844dfa058017e600e6e55ff01984a063290ca5622c0b63162f68/charset_normalizer-3.4.7-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:007d05ec7321d12a40227aae9e2bc6dca73f3cb21058999a1df9e193555a9dcc", size = 225890, upload-time = "2026-04-02T09:25:45.475Z" }, + { url = "https://files.pythonhosted.org/packages/20/e7/bed0024a0f4ab0c8a9c64d4445f39b30c99bd1acd228291959e3de664247/charset_normalizer-3.4.7-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cf29836da5119f3c8a8a70667b0ef5fdca3bb12f80fd06487cfa575b3909b393", size = 216930, upload-time = "2026-04-02T09:25:46.58Z" }, + { url = "https://files.pythonhosted.org/packages/e2/ab/b18f0ab31cdd7b3ddb8bb76c4a414aeb8160c9810fdf1bc62f269a539d87/charset_normalizer-3.4.7-cp310-cp310-manylinux_2_31_armv7l.whl", hash = "sha256:12d8baf840cc7889b37c7c770f478adea7adce3dcb3944d02ec87508e2dcf153", size = 202109, upload-time = "2026-04-02T09:25:48.031Z" }, + { url = "https://files.pythonhosted.org/packages/82/e5/7e9440768a06dfb3075936490cb82dbf0ee20a133bf0dd8551fa096914ec/charset_normalizer-3.4.7-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d560742f3c0d62afaccf9f41fe485ed69bd7661a241f86a3ef0f0fb8b1a397af", size = 214684, upload-time = "2026-04-02T09:25:49.245Z" }, + { url = "https://files.pythonhosted.org/packages/71/94/8c61d8da9f062fdf457c80acfa25060ec22bf1d34bbeaca4350f13bcfd07/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b14b2d9dac08e28bb8046a1a0434b1750eb221c8f5b87a68f4fa11a6f97b5e34", size = 212785, upload-time = "2026-04-02T09:25:50.671Z" }, + { url = "https://files.pythonhosted.org/packages/66/cd/6e9889c648e72c0ab2e5967528bb83508f354d706637bc7097190c874e13/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:bc17a677b21b3502a21f66a8cc64f5bfad4df8a0b8434d661666f8ce90ac3af1", size = 203055, upload-time = "2026-04-02T09:25:51.802Z" }, + { url = "https://files.pythonhosted.org/packages/92/2e/7a951d6a08aefb7eb8e1b54cdfb580b1365afdd9dd484dc4bee9e5d8f258/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:750e02e074872a3fad7f233b47734166440af3cdea0add3e95163110816d6752", size = 232502, upload-time = "2026-04-02T09:25:53.388Z" }, + { url = "https://files.pythonhosted.org/packages/58/d5/abcf2d83bf8e0a1286df55cd0dc1d49af0da4282aa77e986df343e7de124/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:4e5163c14bffd570ef2affbfdd77bba66383890797df43dc8b4cc7d6f500bf53", size = 214295, upload-time = "2026-04-02T09:25:54.765Z" }, + { url = "https://files.pythonhosted.org/packages/47/3a/7d4cd7ed54be99973a0dc176032cba5cb1f258082c31fa6df35cff46acfc/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6ed74185b2db44f41ef35fd1617c5888e59792da9bbc9190d6c7300617182616", size = 227145, upload-time = "2026-04-02T09:25:55.904Z" }, + { url = "https://files.pythonhosted.org/packages/1d/98/3a45bf8247889cf28262ebd3d0872edff11565b2a1e3064ccb132db3fbb0/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:94e1885b270625a9a828c9793b4d52a64445299baa1fea5a173bf1d3dd9a1a5a", size = 218884, upload-time = "2026-04-02T09:25:57.074Z" }, + { url = "https://files.pythonhosted.org/packages/ad/80/2e8b7f8915ed5c9ef13aa828d82738e33888c485b65ebf744d615040c7ea/charset_normalizer-3.4.7-cp310-cp310-win32.whl", hash = "sha256:6785f414ae0f3c733c437e0f3929197934f526d19dfaa75e18fdb4f94c6fb374", size = 148343, upload-time = "2026-04-02T09:25:58.199Z" }, + { url = "https://files.pythonhosted.org/packages/35/1b/3b8c8c77184af465ee9ad88b5aea46ea6b2e1f7b9dc9502891e37af21e30/charset_normalizer-3.4.7-cp310-cp310-win_amd64.whl", hash = "sha256:6696b7688f54f5af4462118f0bfa7c1621eeb87154f77fa04b9295ce7a8f2943", size = 159174, upload-time = "2026-04-02T09:25:59.322Z" }, + { url = "https://files.pythonhosted.org/packages/be/c1/feb40dca40dbb21e0a908801782d9288c64fc8d8e562c2098e9994c8c21b/charset_normalizer-3.4.7-cp310-cp310-win_arm64.whl", hash = "sha256:66671f93accb62ed07da56613636f3641f1a12c13046ce91ffc923721f23c008", size = 147805, upload-time = "2026-04-02T09:26:00.756Z" }, + { url = "https://files.pythonhosted.org/packages/c2/d7/b5b7020a0565c2e9fa8c09f4b5fa6232feb326b8c20081ccded47ea368fd/charset_normalizer-3.4.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7641bb8895e77f921102f72833904dcd9901df5d6d72a2ab8f31d04b7e51e4e7", size = 309705, upload-time = "2026-04-02T09:26:02.191Z" }, + { url = "https://files.pythonhosted.org/packages/5a/53/58c29116c340e5456724ecd2fff4196d236b98f3da97b404bc5e51ac3493/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:202389074300232baeb53ae2569a60901f7efadd4245cf3a3bf0617d60b439d7", size = 206419, upload-time = "2026-04-02T09:26:03.583Z" }, + { url = "https://files.pythonhosted.org/packages/b2/02/e8146dc6591a37a00e5144c63f29fb7c97a734ea8a111190783c0e60ab63/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:30b8d1d8c52a48c2c5690e152c169b673487a2a58de1ec7393196753063fcd5e", size = 227901, upload-time = "2026-04-02T09:26:04.738Z" }, + { url = "https://files.pythonhosted.org/packages/fb/73/77486c4cd58f1267bf17db420e930c9afa1b3be3fe8c8b8ebbebc9624359/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:532bc9bf33a68613fd7d65e4b1c71a6a38d7d42604ecf239c77392e9b4e8998c", size = 222742, upload-time = "2026-04-02T09:26:06.36Z" }, + { url = "https://files.pythonhosted.org/packages/a1/fa/f74eb381a7d94ded44739e9d94de18dc5edc9c17fb8c11f0a6890696c0a9/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2fe249cb4651fd12605b7288b24751d8bfd46d35f12a20b1ba33dea122e690df", size = 214061, upload-time = "2026-04-02T09:26:08.347Z" }, + { url = "https://files.pythonhosted.org/packages/dc/92/42bd3cefcf7687253fb86694b45f37b733c97f59af3724f356fa92b8c344/charset_normalizer-3.4.7-cp311-cp311-manylinux_2_31_armv7l.whl", hash = "sha256:65bcd23054beab4d166035cabbc868a09c1a49d1efe458fe8e4361215df40265", size = 199239, upload-time = "2026-04-02T09:26:09.823Z" }, + { url = "https://files.pythonhosted.org/packages/4c/3d/069e7184e2aa3b3cddc700e3dd267413dc259854adc3380421c805c6a17d/charset_normalizer-3.4.7-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:08e721811161356f97b4059a9ba7bafb23ea5ee2255402c42881c214e173c6b4", size = 210173, upload-time = "2026-04-02T09:26:10.953Z" }, + { url = "https://files.pythonhosted.org/packages/62/51/9d56feb5f2e7074c46f93e0ebdbe61f0848ee246e2f0d89f8e20b89ebb8f/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e060d01aec0a910bdccb8be71faf34e7799ce36950f8294c8bf612cba65a2c9e", size = 209841, upload-time = "2026-04-02T09:26:12.142Z" }, + { url = "https://files.pythonhosted.org/packages/d2/59/893d8f99cc4c837dda1fe2f1139079703deb9f321aabcb032355de13b6c7/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:38c0109396c4cfc574d502df99742a45c72c08eff0a36158b6f04000043dbf38", size = 200304, upload-time = "2026-04-02T09:26:13.711Z" }, + { url = "https://files.pythonhosted.org/packages/7d/1d/ee6f3be3464247578d1ed5c46de545ccc3d3ff933695395c402c21fa6b77/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:1c2a768fdd44ee4a9339a9b0b130049139b8ce3c01d2ce09f67f5a68048d477c", size = 229455, upload-time = "2026-04-02T09:26:14.941Z" }, + { url = "https://files.pythonhosted.org/packages/54/bb/8fb0a946296ea96a488928bdce8ef99023998c48e4713af533e9bb98ef07/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:1a87ca9d5df6fe460483d9a5bbf2b18f620cbed41b432e2bddb686228282d10b", size = 210036, upload-time = "2026-04-02T09:26:16.478Z" }, + { url = "https://files.pythonhosted.org/packages/9a/bc/015b2387f913749f82afd4fcba07846d05b6d784dd16123cb66860e0237d/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:d635aab80466bc95771bb78d5370e74d36d1fe31467b6b29b8b57b2a3cd7d22c", size = 224739, upload-time = "2026-04-02T09:26:17.751Z" }, + { url = "https://files.pythonhosted.org/packages/17/ab/63133691f56baae417493cba6b7c641571a2130eb7bceba6773367ab9ec5/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ae196f021b5e7c78e918242d217db021ed2a6ace2bc6ae94c0fc596221c7f58d", size = 216277, upload-time = "2026-04-02T09:26:18.981Z" }, + { url = "https://files.pythonhosted.org/packages/06/6d/3be70e827977f20db77c12a97e6a9f973631a45b8d186c084527e53e77a4/charset_normalizer-3.4.7-cp311-cp311-win32.whl", hash = "sha256:adb2597b428735679446b46c8badf467b4ca5f5056aae4d51a19f9570301b1ad", size = 147819, upload-time = "2026-04-02T09:26:20.295Z" }, + { url = "https://files.pythonhosted.org/packages/20/d9/5f67790f06b735d7c7637171bbfd89882ad67201891b7275e51116ed8207/charset_normalizer-3.4.7-cp311-cp311-win_amd64.whl", hash = "sha256:8e385e4267ab76874ae30db04c627faaaf0b509e1ccc11a95b3fc3e83f855c00", size = 159281, upload-time = "2026-04-02T09:26:21.74Z" }, + { url = "https://files.pythonhosted.org/packages/ca/83/6413f36c5a34afead88ce6f66684d943d91f233d76dd083798f9602b75ae/charset_normalizer-3.4.7-cp311-cp311-win_arm64.whl", hash = "sha256:d4a48e5b3c2a489fae013b7589308a40146ee081f6f509e047e0e096084ceca1", size = 147843, upload-time = "2026-04-02T09:26:22.901Z" }, + { url = "https://files.pythonhosted.org/packages/0c/eb/4fc8d0a7110eb5fc9cc161723a34a8a6c200ce3b4fbf681bc86feee22308/charset_normalizer-3.4.7-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:eca9705049ad3c7345d574e3510665cb2cf844c2f2dcfe675332677f081cbd46", size = 311328, upload-time = "2026-04-02T09:26:24.331Z" }, + { url = "https://files.pythonhosted.org/packages/f8/e3/0fadc706008ac9d7b9b5be6dc767c05f9d3e5df51744ce4cc9605de7b9f4/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6178f72c5508bfc5fd446a5905e698c6212932f25bcdd4b47a757a50605a90e2", size = 208061, upload-time = "2026-04-02T09:26:25.568Z" }, + { url = "https://files.pythonhosted.org/packages/42/f0/3dd1045c47f4a4604df85ec18ad093912ae1344ac706993aff91d38773a2/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e1421b502d83040e6d7fb2fb18dff63957f720da3d77b2fbd3187ceb63755d7b", size = 229031, upload-time = "2026-04-02T09:26:26.865Z" }, + { url = "https://files.pythonhosted.org/packages/dc/67/675a46eb016118a2fbde5a277a5d15f4f69d5f3f5f338e5ee2f8948fcf43/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:edac0f1ab77644605be2cbba52e6b7f630731fc42b34cb0f634be1a6eface56a", size = 225239, upload-time = "2026-04-02T09:26:28.044Z" }, + { url = "https://files.pythonhosted.org/packages/4b/f8/d0118a2f5f23b02cd166fa385c60f9b0d4f9194f574e2b31cef350ad7223/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5649fd1c7bade02f320a462fdefd0b4bd3ce036065836d4f42e0de958038e116", size = 216589, upload-time = "2026-04-02T09:26:29.239Z" }, + { url = "https://files.pythonhosted.org/packages/b1/f1/6d2b0b261b6c4ceef0fcb0d17a01cc5bc53586c2d4796fa04b5c540bc13d/charset_normalizer-3.4.7-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:203104ed3e428044fd943bc4bf45fa73c0730391f9621e37fe39ecf477b128cb", size = 202733, upload-time = "2026-04-02T09:26:30.5Z" }, + { url = "https://files.pythonhosted.org/packages/6f/c0/7b1f943f7e87cc3db9626ba17807d042c38645f0a1d4415c7a14afb5591f/charset_normalizer-3.4.7-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:298930cec56029e05497a76988377cbd7457ba864beeea92ad7e844fe74cd1f1", size = 212652, upload-time = "2026-04-02T09:26:31.709Z" }, + { url = "https://files.pythonhosted.org/packages/38/dd/5a9ab159fe45c6e72079398f277b7d2b523e7f716acc489726115a910097/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:708838739abf24b2ceb208d0e22403dd018faeef86ddac04319a62ae884c4f15", size = 211229, upload-time = "2026-04-02T09:26:33.282Z" }, + { url = "https://files.pythonhosted.org/packages/d5/ff/531a1cad5ca855d1c1a8b69cb71abfd6d85c0291580146fda7c82857caa1/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:0f7eb884681e3938906ed0434f20c63046eacd0111c4ba96f27b76084cd679f5", size = 203552, upload-time = "2026-04-02T09:26:34.845Z" }, + { url = "https://files.pythonhosted.org/packages/c1/4c/a5fb52d528a8ca41f7598cb619409ece30a169fbdf9cdce592e53b46c3a6/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4dc1e73c36828f982bfe79fadf5919923f8a6f4df2860804db9a98c48824ce8d", size = 230806, upload-time = "2026-04-02T09:26:36.152Z" }, + { url = "https://files.pythonhosted.org/packages/59/7a/071feed8124111a32b316b33ae4de83d36923039ef8cf48120266844285b/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:aed52fea0513bac0ccde438c188c8a471c4e0f457c2dd20cdbf6ea7a450046c7", size = 212316, upload-time = "2026-04-02T09:26:37.672Z" }, + { url = "https://files.pythonhosted.org/packages/fd/35/f7dba3994312d7ba508e041eaac39a36b120f32d4c8662b8814dab876431/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:fea24543955a6a729c45a73fe90e08c743f0b3334bbf3201e6c4bc1b0c7fa464", size = 227274, upload-time = "2026-04-02T09:26:38.93Z" }, + { url = "https://files.pythonhosted.org/packages/8a/2d/a572df5c9204ab7688ec1edc895a73ebded3b023bb07364710b05dd1c9be/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bb6d88045545b26da47aa879dd4a89a71d1dce0f0e549b1abcb31dfe4a8eac49", size = 218468, upload-time = "2026-04-02T09:26:40.17Z" }, + { url = "https://files.pythonhosted.org/packages/86/eb/890922a8b03a568ca2f336c36585a4713c55d4d67bf0f0c78924be6315ca/charset_normalizer-3.4.7-cp312-cp312-win32.whl", hash = "sha256:2257141f39fe65a3fdf38aeccae4b953e5f3b3324f4ff0daf9f15b8518666a2c", size = 148460, upload-time = "2026-04-02T09:26:41.416Z" }, + { url = "https://files.pythonhosted.org/packages/35/d9/0e7dffa06c5ab081f75b1b786f0aefc88365825dfcd0ac544bdb7b2b6853/charset_normalizer-3.4.7-cp312-cp312-win_amd64.whl", hash = "sha256:5ed6ab538499c8644b8a3e18debabcd7ce684f3fa91cf867521a7a0279cab2d6", size = 159330, upload-time = "2026-04-02T09:26:42.554Z" }, + { url = "https://files.pythonhosted.org/packages/9e/5d/481bcc2a7c88ea6b0878c299547843b2521ccbc40980cb406267088bc701/charset_normalizer-3.4.7-cp312-cp312-win_arm64.whl", hash = "sha256:56be790f86bfb2c98fb742ce566dfb4816e5a83384616ab59c49e0604d49c51d", size = 147828, upload-time = "2026-04-02T09:26:44.075Z" }, + { url = "https://files.pythonhosted.org/packages/c1/3b/66777e39d3ae1ddc77ee606be4ec6d8cbd4c801f65e5a1b6f2b11b8346dd/charset_normalizer-3.4.7-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:f496c9c3cc02230093d8330875c4c3cdfc3b73612a5fd921c65d39cbcef08063", size = 309627, upload-time = "2026-04-02T09:26:45.198Z" }, + { url = "https://files.pythonhosted.org/packages/2e/4e/b7f84e617b4854ade48a1b7915c8ccfadeba444d2a18c291f696e37f0d3b/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0ea948db76d31190bf08bd371623927ee1339d5f2a0b4b1b4a4439a65298703c", size = 207008, upload-time = "2026-04-02T09:26:46.824Z" }, + { url = "https://files.pythonhosted.org/packages/c4/bb/ec73c0257c9e11b268f018f068f5d00aa0ef8c8b09f7753ebd5f2880e248/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a277ab8928b9f299723bc1a2dabb1265911b1a76341f90a510368ca44ad9ab66", size = 228303, upload-time = "2026-04-02T09:26:48.397Z" }, + { url = "https://files.pythonhosted.org/packages/85/fb/32d1f5033484494619f701e719429c69b766bfc4dbc61aa9e9c8c166528b/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3bec022aec2c514d9cf199522a802bd007cd588ab17ab2525f20f9c34d067c18", size = 224282, upload-time = "2026-04-02T09:26:49.684Z" }, + { url = "https://files.pythonhosted.org/packages/fa/07/330e3a0dda4c404d6da83b327270906e9654a24f6c546dc886a0eb0ffb23/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e044c39e41b92c845bc815e5ae4230804e8e7bc29e399b0437d64222d92809dd", size = 215595, upload-time = "2026-04-02T09:26:50.915Z" }, + { url = "https://files.pythonhosted.org/packages/e3/7c/fc890655786e423f02556e0216d4b8c6bcb6bdfa890160dc66bf52dee468/charset_normalizer-3.4.7-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:f495a1652cf3fbab2eb0639776dad966c2fb874d79d87ca07f9d5f059b8bd215", size = 201986, upload-time = "2026-04-02T09:26:52.197Z" }, + { url = "https://files.pythonhosted.org/packages/d8/97/bfb18b3db2aed3b90cf54dc292ad79fdd5ad65c4eae454099475cbeadd0d/charset_normalizer-3.4.7-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e712b419df8ba5e42b226c510472b37bd57b38e897d3eca5e8cfd410a29fa859", size = 211711, upload-time = "2026-04-02T09:26:53.49Z" }, + { url = "https://files.pythonhosted.org/packages/6f/a5/a581c13798546a7fd557c82614a5c65a13df2157e9ad6373166d2a3e645d/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7804338df6fcc08105c7745f1502ba68d900f45fd770d5bdd5288ddccb8a42d8", size = 210036, upload-time = "2026-04-02T09:26:54.975Z" }, + { url = "https://files.pythonhosted.org/packages/8c/bf/b3ab5bcb478e4193d517644b0fb2bf5497fbceeaa7a1bc0f4d5b50953861/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:481551899c856c704d58119b5025793fa6730adda3571971af568f66d2424bb5", size = 202998, upload-time = "2026-04-02T09:26:56.303Z" }, + { url = "https://files.pythonhosted.org/packages/e7/4e/23efd79b65d314fa320ec6017b4b5834d5c12a58ba4610aa353af2e2f577/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f59099f9b66f0d7145115e6f80dd8b1d847176df89b234a5a6b3f00437aa0832", size = 230056, upload-time = "2026-04-02T09:26:57.554Z" }, + { url = "https://files.pythonhosted.org/packages/b9/9f/1e1941bc3f0e01df116e68dc37a55c4d249df5e6fa77f008841aef68264f/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:f59ad4c0e8f6bba240a9bb85504faa1ab438237199d4cce5f622761507b8f6a6", size = 211537, upload-time = "2026-04-02T09:26:58.843Z" }, + { url = "https://files.pythonhosted.org/packages/80/0f/088cbb3020d44428964a6c97fe1edfb1b9550396bf6d278330281e8b709c/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:3dedcc22d73ec993f42055eff4fcfed9318d1eeb9a6606c55892a26964964e48", size = 226176, upload-time = "2026-04-02T09:27:00.437Z" }, + { url = "https://files.pythonhosted.org/packages/6a/9f/130394f9bbe06f4f63e22641d32fc9b202b7e251c9aef4db044324dac493/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:64f02c6841d7d83f832cd97ccf8eb8a906d06eb95d5276069175c696b024b60a", size = 217723, upload-time = "2026-04-02T09:27:02.021Z" }, + { url = "https://files.pythonhosted.org/packages/73/55/c469897448a06e49f8fa03f6caae97074fde823f432a98f979cc42b90e69/charset_normalizer-3.4.7-cp313-cp313-win32.whl", hash = "sha256:4042d5c8f957e15221d423ba781e85d553722fc4113f523f2feb7b188cc34c5e", size = 148085, upload-time = "2026-04-02T09:27:03.192Z" }, + { url = "https://files.pythonhosted.org/packages/5d/78/1b74c5bbb3f99b77a1715c91b3e0b5bdb6fe302d95ace4f5b1bec37b0167/charset_normalizer-3.4.7-cp313-cp313-win_amd64.whl", hash = "sha256:3946fa46a0cf3e4c8cb1cc52f56bb536310d34f25f01ca9b6c16afa767dab110", size = 158819, upload-time = "2026-04-02T09:27:04.454Z" }, + { url = "https://files.pythonhosted.org/packages/68/86/46bd42279d323deb8687c4a5a811fd548cb7d1de10cf6535d099877a9a9f/charset_normalizer-3.4.7-cp313-cp313-win_arm64.whl", hash = "sha256:80d04837f55fc81da168b98de4f4b797ef007fc8a79ab71c6ec9bc4dd662b15b", size = 147915, upload-time = "2026-04-02T09:27:05.971Z" }, + { url = "https://files.pythonhosted.org/packages/97/c8/c67cb8c70e19ef1960b97b22ed2a1567711de46c4ddf19799923adc836c2/charset_normalizer-3.4.7-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:c36c333c39be2dbca264d7803333c896ab8fa7d4d6f0ab7edb7dfd7aea6e98c0", size = 309234, upload-time = "2026-04-02T09:27:07.194Z" }, + { url = "https://files.pythonhosted.org/packages/99/85/c091fdee33f20de70d6c8b522743b6f831a2f1cd3ff86de4c6a827c48a76/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1c2aed2e5e41f24ea8ef1590b8e848a79b56f3a5564a65ceec43c9d692dc7d8a", size = 208042, upload-time = "2026-04-02T09:27:08.749Z" }, + { url = "https://files.pythonhosted.org/packages/87/1c/ab2ce611b984d2fd5d86a5a8a19c1ae26acac6bad967da4967562c75114d/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:54523e136b8948060c0fa0bc7b1b50c32c186f2fceee897a495406bb6e311d2b", size = 228706, upload-time = "2026-04-02T09:27:09.951Z" }, + { url = "https://files.pythonhosted.org/packages/a8/29/2b1d2cb00bf085f59d29eb773ce58ec2d325430f8c216804a0a5cd83cbca/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:715479b9a2802ecac752a3b0efa2b0b60285cf962ee38414211abdfccc233b41", size = 224727, upload-time = "2026-04-02T09:27:11.175Z" }, + { url = "https://files.pythonhosted.org/packages/47/5c/032c2d5a07fe4d4855fea851209cca2b6f03ebeb6d4e3afdb3358386a684/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bd6c2a1c7573c64738d716488d2cdd3c00e340e4835707d8fdb8dc1a66ef164e", size = 215882, upload-time = "2026-04-02T09:27:12.446Z" }, + { url = "https://files.pythonhosted.org/packages/2c/c2/356065d5a8b78ed04499cae5f339f091946a6a74f91e03476c33f0ab7100/charset_normalizer-3.4.7-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:c45e9440fb78f8ddabcf714b68f936737a121355bf59f3907f4e17721b9d1aae", size = 200860, upload-time = "2026-04-02T09:27:13.721Z" }, + { url = "https://files.pythonhosted.org/packages/0c/cd/a32a84217ced5039f53b29f460962abb2d4420def55afabe45b1c3c7483d/charset_normalizer-3.4.7-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3534e7dcbdcf757da6b85a0bbf5b6868786d5982dd959b065e65481644817a18", size = 211564, upload-time = "2026-04-02T09:27:15.272Z" }, + { url = "https://files.pythonhosted.org/packages/44/86/58e6f13ce26cc3b8f4a36b94a0f22ae2f00a72534520f4ae6857c4b81f89/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e8ac484bf18ce6975760921bb6148041faa8fef0547200386ea0b52b5d27bf7b", size = 211276, upload-time = "2026-04-02T09:27:16.834Z" }, + { url = "https://files.pythonhosted.org/packages/8f/fe/d17c32dc72e17e155e06883efa84514ca375f8a528ba2546bee73fc4df81/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:a5fe03b42827c13cdccd08e6c0247b6a6d4b5e3cdc53fd1749f5896adcdc2356", size = 201238, upload-time = "2026-04-02T09:27:18.229Z" }, + { url = "https://files.pythonhosted.org/packages/6a/29/f33daa50b06525a237451cdb6c69da366c381a3dadcd833fa5676bc468b3/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:2d6eb928e13016cea4f1f21d1e10c1cebd5a421bc57ddf5b1142ae3f86824fab", size = 230189, upload-time = "2026-04-02T09:27:19.445Z" }, + { url = "https://files.pythonhosted.org/packages/b6/6e/52c84015394a6a0bdcd435210a7e944c5f94ea1055f5cc5d56c5fe368e7b/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:e74327fb75de8986940def6e8dee4f127cc9752bee7355bb323cc5b2659b6d46", size = 211352, upload-time = "2026-04-02T09:27:20.79Z" }, + { url = "https://files.pythonhosted.org/packages/8c/d7/4353be581b373033fb9198bf1da3cf8f09c1082561e8e922aa7b39bf9fe8/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:d6038d37043bced98a66e68d3aa2b6a35505dc01328cd65217cefe82f25def44", size = 227024, upload-time = "2026-04-02T09:27:22.063Z" }, + { url = "https://files.pythonhosted.org/packages/30/45/99d18aa925bd1740098ccd3060e238e21115fffbfdcb8f3ece837d0ace6c/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:7579e913a5339fb8fa133f6bbcfd8e6749696206cf05acdbdca71a1b436d8e72", size = 217869, upload-time = "2026-04-02T09:27:23.486Z" }, + { url = "https://files.pythonhosted.org/packages/5c/05/5ee478aa53f4bb7996482153d4bfe1b89e0f087f0ab6b294fcf92d595873/charset_normalizer-3.4.7-cp314-cp314-win32.whl", hash = "sha256:5b77459df20e08151cd6f8b9ef8ef1f961ef73d85c21a555c7eed5b79410ec10", size = 148541, upload-time = "2026-04-02T09:27:25.146Z" }, + { url = "https://files.pythonhosted.org/packages/48/77/72dcb0921b2ce86420b2d79d454c7022bf5be40202a2a07906b9f2a35c97/charset_normalizer-3.4.7-cp314-cp314-win_amd64.whl", hash = "sha256:92a0a01ead5e668468e952e4238cccd7c537364eb7d851ab144ab6627dbbe12f", size = 159634, upload-time = "2026-04-02T09:27:26.642Z" }, + { url = "https://files.pythonhosted.org/packages/c6/a3/c2369911cd72f02386e4e340770f6e158c7980267da16af8f668217abaa0/charset_normalizer-3.4.7-cp314-cp314-win_arm64.whl", hash = "sha256:67f6279d125ca0046a7fd386d01b311c6363844deac3e5b069b514ba3e63c246", size = 148384, upload-time = "2026-04-02T09:27:28.271Z" }, + { url = "https://files.pythonhosted.org/packages/94/09/7e8a7f73d24dba1f0035fbbf014d2c36828fc1bf9c88f84093e57d315935/charset_normalizer-3.4.7-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:effc3f449787117233702311a1b7d8f59cba9ced946ba727bdc329ec69028e24", size = 330133, upload-time = "2026-04-02T09:27:29.474Z" }, + { url = "https://files.pythonhosted.org/packages/8d/da/96975ddb11f8e977f706f45cddd8540fd8242f71ecdb5d18a80723dcf62c/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fbccdc05410c9ee21bbf16a35f4c1d16123dcdeb8a1d38f33654fa21d0234f79", size = 216257, upload-time = "2026-04-02T09:27:30.793Z" }, + { url = "https://files.pythonhosted.org/packages/e5/e8/1d63bf8ef2d388e95c64b2098f45f84758f6d102a087552da1485912637b/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:733784b6d6def852c814bce5f318d25da2ee65dd4839a0718641c696e09a2960", size = 234851, upload-time = "2026-04-02T09:27:32.44Z" }, + { url = "https://files.pythonhosted.org/packages/9b/40/e5ff04233e70da2681fa43969ad6f66ca5611d7e669be0246c4c7aaf6dc8/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a89c23ef8d2c6b27fd200a42aa4ac72786e7c60d40efdc76e6011260b6e949c4", size = 233393, upload-time = "2026-04-02T09:27:34.03Z" }, + { url = "https://files.pythonhosted.org/packages/be/c1/06c6c49d5a5450f76899992f1ee40b41d076aee9279b49cf9974d2f313d5/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6c114670c45346afedc0d947faf3c7f701051d2518b943679c8ff88befe14f8e", size = 223251, upload-time = "2026-04-02T09:27:35.369Z" }, + { url = "https://files.pythonhosted.org/packages/2b/9f/f2ff16fb050946169e3e1f82134d107e5d4ae72647ec8a1b1446c148480f/charset_normalizer-3.4.7-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:a180c5e59792af262bf263b21a3c49353f25945d8d9f70628e73de370d55e1e1", size = 206609, upload-time = "2026-04-02T09:27:36.661Z" }, + { url = "https://files.pythonhosted.org/packages/69/d5/a527c0cd8d64d2eab7459784fb4169a0ac76e5a6fc5237337982fd61347e/charset_normalizer-3.4.7-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3c9a494bc5ec77d43cea229c4f6db1e4d8fe7e1bbffa8b6f0f0032430ff8ab44", size = 220014, upload-time = "2026-04-02T09:27:38.019Z" }, + { url = "https://files.pythonhosted.org/packages/7e/80/8a7b8104a3e203074dc9aa2c613d4b726c0e136bad1cc734594b02867972/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8d828b6667a32a728a1ad1d93957cdf37489c57b97ae6c4de2860fa749b8fc1e", size = 218979, upload-time = "2026-04-02T09:27:39.37Z" }, + { url = "https://files.pythonhosted.org/packages/02/9a/b759b503d507f375b2b5c153e4d2ee0a75aa215b7f2489cf314f4541f2c0/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:cf1493cd8607bec4d8a7b9b004e699fcf8f9103a9284cc94962cb73d20f9d4a3", size = 209238, upload-time = "2026-04-02T09:27:40.722Z" }, + { url = "https://files.pythonhosted.org/packages/c2/4e/0f3f5d47b86bdb79256e7290b26ac847a2832d9a4033f7eb2cd4bcf4bb5b/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:0c96c3b819b5c3e9e165495db84d41914d6894d55181d2d108cc1a69bfc9cce0", size = 236110, upload-time = "2026-04-02T09:27:42.33Z" }, + { url = "https://files.pythonhosted.org/packages/96/23/bce28734eb3ed2c91dcf93abeb8a5cf393a7b2749725030bb630e554fdd8/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:752a45dc4a6934060b3b0dab47e04edc3326575f82be64bc4fc293914566503e", size = 219824, upload-time = "2026-04-02T09:27:43.924Z" }, + { url = "https://files.pythonhosted.org/packages/2c/6f/6e897c6984cc4d41af319b077f2f600fc8214eb2fe2d6bcb79141b882400/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:8778f0c7a52e56f75d12dae53ae320fae900a8b9b4164b981b9c5ce059cd1fcb", size = 233103, upload-time = "2026-04-02T09:27:45.348Z" }, + { url = "https://files.pythonhosted.org/packages/76/22/ef7bd0fe480a0ae9b656189ec00744b60933f68b4f42a7bb06589f6f576a/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ce3412fbe1e31eb81ea42f4169ed94861c56e643189e1e75f0041f3fe7020abe", size = 225194, upload-time = "2026-04-02T09:27:46.706Z" }, + { url = "https://files.pythonhosted.org/packages/c5/a7/0e0ab3e0b5bc1219bd80a6a0d4d72ca74d9250cb2382b7c699c147e06017/charset_normalizer-3.4.7-cp314-cp314t-win32.whl", hash = "sha256:c03a41a8784091e67a39648f70c5f97b5b6a37f216896d44d2cdcb82615339a0", size = 159827, upload-time = "2026-04-02T09:27:48.053Z" }, + { url = "https://files.pythonhosted.org/packages/7a/1d/29d32e0fb40864b1f878c7f5a0b343ae676c6e2b271a2d55cc3a152391da/charset_normalizer-3.4.7-cp314-cp314t-win_amd64.whl", hash = "sha256:03853ed82eeebbce3c2abfdbc98c96dc205f32a79627688ac9a27370ea61a49c", size = 174168, upload-time = "2026-04-02T09:27:49.795Z" }, + { url = "https://files.pythonhosted.org/packages/de/32/d92444ad05c7a6e41fb2036749777c163baf7a0301a040cb672d6b2b1ae9/charset_normalizer-3.4.7-cp314-cp314t-win_arm64.whl", hash = "sha256:c35abb8bfff0185efac5878da64c45dafd2b37fb0383add1be155a763c1f083d", size = 153018, upload-time = "2026-04-02T09:27:51.116Z" }, + { url = "https://files.pythonhosted.org/packages/db/8f/61959034484a4a7c527811f4721e75d02d653a35afb0b6054474d8185d4c/charset_normalizer-3.4.7-py3-none-any.whl", hash = "sha256:3dce51d0f5e7951f8bb4900c257dad282f49190fdbebecd4ba99bcc41fef404d", size = 61958, upload-time = "2026-04-02T09:28:37.794Z" }, +] + +[[package]] +name = "click" +version = "8.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9b/98/518d8e5081007684232226f475082b30087d0f585e8457db087298259f49/click-8.4.1.tar.gz", hash = "sha256:918b5633eddf6b41c32d4f454bf0de810065c74e3f7dbf8ee5452f8be88d3e96", size = 353007, upload-time = "2026-05-22T04:08:37.769Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/0d/67e5b4109ea4a837e80daa87c2c696711955e40449a97e8926672534def2/click-8.4.1-py3-none-any.whl", hash = "sha256:482be17c6991b8c19c5429a1e995d9b0efdbb63172824c41f99965dc0ade8ec2", size = 116639, upload-time = "2026-05-22T04:08:35.26Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "comm" +version = "0.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4c/13/7d740c5849255756bc17888787313b61fd38a0a8304fc4f073dfc46122aa/comm-0.2.3.tar.gz", hash = "sha256:2dc8048c10962d55d7ad693be1e7045d891b7ce8d999c97963a5e3e99c055971", size = 6319, upload-time = "2025-07-25T14:02:04.452Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/97/891a0971e1e4a8c5d2b20bbe0e524dc04548d2307fee33cdeba148fd4fc7/comm-0.2.3-py3-none-any.whl", hash = "sha256:c615d91d75f7f04f095b30d1c1711babd43bdc6419c1be9886a85f2f4e489417", size = 7294, upload-time = "2025-07-25T14:02:02.896Z" }, +] + +[[package]] +name = "contourpy" +version = "1.3.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130'", + "python_full_version < '3.11' and extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version < '3.11' and sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version < '3.11' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", +] +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/54/eb9bfc647b19f2009dd5c7f5ec51c4e6ca831725f1aea7a993034f483147/contourpy-1.3.2.tar.gz", hash = "sha256:b6945942715a034c671b7fc54f9588126b0b8bf23db2696e3ca8328f3ff0ab54", size = 13466130, upload-time = "2025-04-15T17:47:53.79Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/a3/da4153ec8fe25d263aa48c1a4cbde7f49b59af86f0b6f7862788c60da737/contourpy-1.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ba38e3f9f330af820c4b27ceb4b9c7feee5fe0493ea53a8720f4792667465934", size = 268551, upload-time = "2025-04-15T17:34:46.581Z" }, + { url = "https://files.pythonhosted.org/packages/2f/6c/330de89ae1087eb622bfca0177d32a7ece50c3ef07b28002de4757d9d875/contourpy-1.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dc41ba0714aa2968d1f8674ec97504a8f7e334f48eeacebcaa6256213acb0989", size = 253399, upload-time = "2025-04-15T17:34:51.427Z" }, + { url = "https://files.pythonhosted.org/packages/c1/bd/20c6726b1b7f81a8bee5271bed5c165f0a8e1f572578a9d27e2ccb763cb2/contourpy-1.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9be002b31c558d1ddf1b9b415b162c603405414bacd6932d031c5b5a8b757f0d", size = 312061, upload-time = "2025-04-15T17:34:55.961Z" }, + { url = "https://files.pythonhosted.org/packages/22/fc/a9665c88f8a2473f823cf1ec601de9e5375050f1958cbb356cdf06ef1ab6/contourpy-1.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8d2e74acbcba3bfdb6d9d8384cdc4f9260cae86ed9beee8bd5f54fee49a430b9", size = 351956, upload-time = "2025-04-15T17:35:00.992Z" }, + { url = "https://files.pythonhosted.org/packages/25/eb/9f0a0238f305ad8fb7ef42481020d6e20cf15e46be99a1fcf939546a177e/contourpy-1.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e259bced5549ac64410162adc973c5e2fb77f04df4a439d00b478e57a0e65512", size = 320872, upload-time = "2025-04-15T17:35:06.177Z" }, + { url = "https://files.pythonhosted.org/packages/32/5c/1ee32d1c7956923202f00cf8d2a14a62ed7517bdc0ee1e55301227fc273c/contourpy-1.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad687a04bc802cbe8b9c399c07162a3c35e227e2daccf1668eb1f278cb698631", size = 325027, upload-time = "2025-04-15T17:35:11.244Z" }, + { url = "https://files.pythonhosted.org/packages/83/bf/9baed89785ba743ef329c2b07fd0611d12bfecbedbdd3eeecf929d8d3b52/contourpy-1.3.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cdd22595308f53ef2f891040ab2b93d79192513ffccbd7fe19be7aa773a5e09f", size = 1306641, upload-time = "2025-04-15T17:35:26.701Z" }, + { url = "https://files.pythonhosted.org/packages/d4/cc/74e5e83d1e35de2d28bd97033426b450bc4fd96e092a1f7a63dc7369b55d/contourpy-1.3.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b4f54d6a2defe9f257327b0f243612dd051cc43825587520b1bf74a31e2f6ef2", size = 1374075, upload-time = "2025-04-15T17:35:43.204Z" }, + { url = "https://files.pythonhosted.org/packages/0c/42/17f3b798fd5e033b46a16f8d9fcb39f1aba051307f5ebf441bad1ecf78f8/contourpy-1.3.2-cp310-cp310-win32.whl", hash = "sha256:f939a054192ddc596e031e50bb13b657ce318cf13d264f095ce9db7dc6ae81c0", size = 177534, upload-time = "2025-04-15T17:35:46.554Z" }, + { url = "https://files.pythonhosted.org/packages/54/ec/5162b8582f2c994721018d0c9ece9dc6ff769d298a8ac6b6a652c307e7df/contourpy-1.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:c440093bbc8fc21c637c03bafcbef95ccd963bc6e0514ad887932c18ca2a759a", size = 221188, upload-time = "2025-04-15T17:35:50.064Z" }, + { url = "https://files.pythonhosted.org/packages/b3/b9/ede788a0b56fc5b071639d06c33cb893f68b1178938f3425debebe2dab78/contourpy-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6a37a2fb93d4df3fc4c0e363ea4d16f83195fc09c891bc8ce072b9d084853445", size = 269636, upload-time = "2025-04-15T17:35:54.473Z" }, + { url = "https://files.pythonhosted.org/packages/e6/75/3469f011d64b8bbfa04f709bfc23e1dd71be54d05b1b083be9f5b22750d1/contourpy-1.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b7cd50c38f500bbcc9b6a46643a40e0913673f869315d8e70de0438817cb7773", size = 254636, upload-time = "2025-04-15T17:35:58.283Z" }, + { url = "https://files.pythonhosted.org/packages/8d/2f/95adb8dae08ce0ebca4fd8e7ad653159565d9739128b2d5977806656fcd2/contourpy-1.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6658ccc7251a4433eebd89ed2672c2ed96fba367fd25ca9512aa92a4b46c4f1", size = 313053, upload-time = "2025-04-15T17:36:03.235Z" }, + { url = "https://files.pythonhosted.org/packages/c3/a6/8ccf97a50f31adfa36917707fe39c9a0cbc24b3bbb58185577f119736cc9/contourpy-1.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:70771a461aaeb335df14deb6c97439973d253ae70660ca085eec25241137ef43", size = 352985, upload-time = "2025-04-15T17:36:08.275Z" }, + { url = "https://files.pythonhosted.org/packages/1d/b6/7925ab9b77386143f39d9c3243fdd101621b4532eb126743201160ffa7e6/contourpy-1.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65a887a6e8c4cd0897507d814b14c54a8c2e2aa4ac9f7686292f9769fcf9a6ab", size = 323750, upload-time = "2025-04-15T17:36:13.29Z" }, + { url = "https://files.pythonhosted.org/packages/c2/f3/20c5d1ef4f4748e52d60771b8560cf00b69d5c6368b5c2e9311bcfa2a08b/contourpy-1.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3859783aefa2b8355697f16642695a5b9792e7a46ab86da1118a4a23a51a33d7", size = 326246, upload-time = "2025-04-15T17:36:18.329Z" }, + { url = "https://files.pythonhosted.org/packages/8c/e5/9dae809e7e0b2d9d70c52b3d24cba134dd3dad979eb3e5e71f5df22ed1f5/contourpy-1.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:eab0f6db315fa4d70f1d8ab514e527f0366ec021ff853d7ed6a2d33605cf4b83", size = 1308728, upload-time = "2025-04-15T17:36:33.878Z" }, + { url = "https://files.pythonhosted.org/packages/e2/4a/0058ba34aeea35c0b442ae61a4f4d4ca84d6df8f91309bc2d43bb8dd248f/contourpy-1.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d91a3ccc7fea94ca0acab82ceb77f396d50a1f67412efe4c526f5d20264e6ecd", size = 1375762, upload-time = "2025-04-15T17:36:51.295Z" }, + { url = "https://files.pythonhosted.org/packages/09/33/7174bdfc8b7767ef2c08ed81244762d93d5c579336fc0b51ca57b33d1b80/contourpy-1.3.2-cp311-cp311-win32.whl", hash = "sha256:1c48188778d4d2f3d48e4643fb15d8608b1d01e4b4d6b0548d9b336c28fc9b6f", size = 178196, upload-time = "2025-04-15T17:36:55.002Z" }, + { url = "https://files.pythonhosted.org/packages/5e/fe/4029038b4e1c4485cef18e480b0e2cd2d755448bb071eb9977caac80b77b/contourpy-1.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:5ebac872ba09cb8f2131c46b8739a7ff71de28a24c869bcad554477eb089a878", size = 222017, upload-time = "2025-04-15T17:36:58.576Z" }, + { url = "https://files.pythonhosted.org/packages/34/f7/44785876384eff370c251d58fd65f6ad7f39adce4a093c934d4a67a7c6b6/contourpy-1.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4caf2bcd2969402bf77edc4cb6034c7dd7c0803213b3523f111eb7460a51b8d2", size = 271580, upload-time = "2025-04-15T17:37:03.105Z" }, + { url = "https://files.pythonhosted.org/packages/93/3b/0004767622a9826ea3d95f0e9d98cd8729015768075d61f9fea8eeca42a8/contourpy-1.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82199cb78276249796419fe36b7386bd8d2cc3f28b3bc19fe2454fe2e26c4c15", size = 255530, upload-time = "2025-04-15T17:37:07.026Z" }, + { url = "https://files.pythonhosted.org/packages/e7/bb/7bd49e1f4fa805772d9fd130e0d375554ebc771ed7172f48dfcd4ca61549/contourpy-1.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:106fab697af11456fcba3e352ad50effe493a90f893fca6c2ca5c033820cea92", size = 307688, upload-time = "2025-04-15T17:37:11.481Z" }, + { url = "https://files.pythonhosted.org/packages/fc/97/e1d5dbbfa170725ef78357a9a0edc996b09ae4af170927ba8ce977e60a5f/contourpy-1.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d14f12932a8d620e307f715857107b1d1845cc44fdb5da2bc8e850f5ceba9f87", size = 347331, upload-time = "2025-04-15T17:37:18.212Z" }, + { url = "https://files.pythonhosted.org/packages/6f/66/e69e6e904f5ecf6901be3dd16e7e54d41b6ec6ae3405a535286d4418ffb4/contourpy-1.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:532fd26e715560721bb0d5fc7610fce279b3699b018600ab999d1be895b09415", size = 318963, upload-time = "2025-04-15T17:37:22.76Z" }, + { url = "https://files.pythonhosted.org/packages/a8/32/b8a1c8965e4f72482ff2d1ac2cd670ce0b542f203c8e1d34e7c3e6925da7/contourpy-1.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26b383144cf2d2c29f01a1e8170f50dacf0eac02d64139dcd709a8ac4eb3cfe", size = 323681, upload-time = "2025-04-15T17:37:33.001Z" }, + { url = "https://files.pythonhosted.org/packages/30/c6/12a7e6811d08757c7162a541ca4c5c6a34c0f4e98ef2b338791093518e40/contourpy-1.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c49f73e61f1f774650a55d221803b101d966ca0c5a2d6d5e4320ec3997489441", size = 1308674, upload-time = "2025-04-15T17:37:48.64Z" }, + { url = "https://files.pythonhosted.org/packages/2a/8a/bebe5a3f68b484d3a2b8ffaf84704b3e343ef1addea528132ef148e22b3b/contourpy-1.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3d80b2c0300583228ac98d0a927a1ba6a2ba6b8a742463c564f1d419ee5b211e", size = 1380480, upload-time = "2025-04-15T17:38:06.7Z" }, + { url = "https://files.pythonhosted.org/packages/34/db/fcd325f19b5978fb509a7d55e06d99f5f856294c1991097534360b307cf1/contourpy-1.3.2-cp312-cp312-win32.whl", hash = "sha256:90df94c89a91b7362e1142cbee7568f86514412ab8a2c0d0fca72d7e91b62912", size = 178489, upload-time = "2025-04-15T17:38:10.338Z" }, + { url = "https://files.pythonhosted.org/packages/01/c8/fadd0b92ffa7b5eb5949bf340a63a4a496a6930a6c37a7ba0f12acb076d6/contourpy-1.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:8c942a01d9163e2e5cfb05cb66110121b8d07ad438a17f9e766317bcb62abf73", size = 223042, upload-time = "2025-04-15T17:38:14.239Z" }, + { url = "https://files.pythonhosted.org/packages/2e/61/5673f7e364b31e4e7ef6f61a4b5121c5f170f941895912f773d95270f3a2/contourpy-1.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:de39db2604ae755316cb5967728f4bea92685884b1e767b7c24e983ef5f771cb", size = 271630, upload-time = "2025-04-15T17:38:19.142Z" }, + { url = "https://files.pythonhosted.org/packages/ff/66/a40badddd1223822c95798c55292844b7e871e50f6bfd9f158cb25e0bd39/contourpy-1.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3f9e896f447c5c8618f1edb2bafa9a4030f22a575ec418ad70611450720b5b08", size = 255670, upload-time = "2025-04-15T17:38:23.688Z" }, + { url = "https://files.pythonhosted.org/packages/1e/c7/cf9fdee8200805c9bc3b148f49cb9482a4e3ea2719e772602a425c9b09f8/contourpy-1.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71e2bd4a1c4188f5c2b8d274da78faab884b59df20df63c34f74aa1813c4427c", size = 306694, upload-time = "2025-04-15T17:38:28.238Z" }, + { url = "https://files.pythonhosted.org/packages/dd/e7/ccb9bec80e1ba121efbffad7f38021021cda5be87532ec16fd96533bb2e0/contourpy-1.3.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de425af81b6cea33101ae95ece1f696af39446db9682a0b56daaa48cfc29f38f", size = 345986, upload-time = "2025-04-15T17:38:33.502Z" }, + { url = "https://files.pythonhosted.org/packages/dc/49/ca13bb2da90391fa4219fdb23b078d6065ada886658ac7818e5441448b78/contourpy-1.3.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:977e98a0e0480d3fe292246417239d2d45435904afd6d7332d8455981c408b85", size = 318060, upload-time = "2025-04-15T17:38:38.672Z" }, + { url = "https://files.pythonhosted.org/packages/c8/65/5245ce8c548a8422236c13ffcdcdada6a2a812c361e9e0c70548bb40b661/contourpy-1.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:434f0adf84911c924519d2b08fc10491dd282b20bdd3fa8f60fd816ea0b48841", size = 322747, upload-time = "2025-04-15T17:38:43.712Z" }, + { url = "https://files.pythonhosted.org/packages/72/30/669b8eb48e0a01c660ead3752a25b44fdb2e5ebc13a55782f639170772f9/contourpy-1.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c66c4906cdbc50e9cba65978823e6e00b45682eb09adbb78c9775b74eb222422", size = 1308895, upload-time = "2025-04-15T17:39:00.224Z" }, + { url = "https://files.pythonhosted.org/packages/05/5a/b569f4250decee6e8d54498be7bdf29021a4c256e77fe8138c8319ef8eb3/contourpy-1.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8b7fc0cd78ba2f4695fd0a6ad81a19e7e3ab825c31b577f384aa9d7817dc3bef", size = 1379098, upload-time = "2025-04-15T17:43:29.649Z" }, + { url = "https://files.pythonhosted.org/packages/19/ba/b227c3886d120e60e41b28740ac3617b2f2b971b9f601c835661194579f1/contourpy-1.3.2-cp313-cp313-win32.whl", hash = "sha256:15ce6ab60957ca74cff444fe66d9045c1fd3e92c8936894ebd1f3eef2fff075f", size = 178535, upload-time = "2025-04-15T17:44:44.532Z" }, + { url = "https://files.pythonhosted.org/packages/12/6e/2fed56cd47ca739b43e892707ae9a13790a486a3173be063681ca67d2262/contourpy-1.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:e1578f7eafce927b168752ed7e22646dad6cd9bca673c60bff55889fa236ebf9", size = 223096, upload-time = "2025-04-15T17:44:48.194Z" }, + { url = "https://files.pythonhosted.org/packages/54/4c/e76fe2a03014a7c767d79ea35c86a747e9325537a8b7627e0e5b3ba266b4/contourpy-1.3.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0475b1f6604896bc7c53bb070e355e9321e1bc0d381735421a2d2068ec56531f", size = 285090, upload-time = "2025-04-15T17:43:34.084Z" }, + { url = "https://files.pythonhosted.org/packages/7b/e2/5aba47debd55d668e00baf9651b721e7733975dc9fc27264a62b0dd26eb8/contourpy-1.3.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c85bb486e9be652314bb5b9e2e3b0d1b2e643d5eec4992c0fbe8ac71775da739", size = 268643, upload-time = "2025-04-15T17:43:38.626Z" }, + { url = "https://files.pythonhosted.org/packages/a1/37/cd45f1f051fe6230f751cc5cdd2728bb3a203f5619510ef11e732109593c/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:745b57db7758f3ffc05a10254edd3182a2a83402a89c00957a8e8a22f5582823", size = 310443, upload-time = "2025-04-15T17:43:44.522Z" }, + { url = "https://files.pythonhosted.org/packages/8b/a2/36ea6140c306c9ff6dd38e3bcec80b3b018474ef4d17eb68ceecd26675f4/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:970e9173dbd7eba9b4e01aab19215a48ee5dd3f43cef736eebde064a171f89a5", size = 349865, upload-time = "2025-04-15T17:43:49.545Z" }, + { url = "https://files.pythonhosted.org/packages/95/b7/2fc76bc539693180488f7b6cc518da7acbbb9e3b931fd9280504128bf956/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6c4639a9c22230276b7bffb6a850dfc8258a2521305e1faefe804d006b2e532", size = 321162, upload-time = "2025-04-15T17:43:54.203Z" }, + { url = "https://files.pythonhosted.org/packages/f4/10/76d4f778458b0aa83f96e59d65ece72a060bacb20cfbee46cf6cd5ceba41/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc829960f34ba36aad4302e78eabf3ef16a3a100863f0d4eeddf30e8a485a03b", size = 327355, upload-time = "2025-04-15T17:44:01.025Z" }, + { url = "https://files.pythonhosted.org/packages/43/a3/10cf483ea683f9f8ab096c24bad3cce20e0d1dd9a4baa0e2093c1c962d9d/contourpy-1.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d32530b534e986374fc19eaa77fcb87e8a99e5431499949b828312bdcd20ac52", size = 1307935, upload-time = "2025-04-15T17:44:17.322Z" }, + { url = "https://files.pythonhosted.org/packages/78/73/69dd9a024444489e22d86108e7b913f3528f56cfc312b5c5727a44188471/contourpy-1.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e298e7e70cf4eb179cc1077be1c725b5fd131ebc81181bf0c03525c8abc297fd", size = 1372168, upload-time = "2025-04-15T17:44:33.43Z" }, + { url = "https://files.pythonhosted.org/packages/0f/1b/96d586ccf1b1a9d2004dd519b25fbf104a11589abfd05484ff12199cca21/contourpy-1.3.2-cp313-cp313t-win32.whl", hash = "sha256:d0e589ae0d55204991450bb5c23f571c64fe43adaa53f93fc902a84c96f52fe1", size = 189550, upload-time = "2025-04-15T17:44:37.092Z" }, + { url = "https://files.pythonhosted.org/packages/b0/e6/6000d0094e8a5e32ad62591c8609e269febb6e4db83a1c75ff8868b42731/contourpy-1.3.2-cp313-cp313t-win_amd64.whl", hash = "sha256:78e9253c3de756b3f6a5174d024c4835acd59eb3f8e2ca13e775dbffe1558f69", size = 238214, upload-time = "2025-04-15T17:44:40.827Z" }, + { url = "https://files.pythonhosted.org/packages/33/05/b26e3c6ecc05f349ee0013f0bb850a761016d89cec528a98193a48c34033/contourpy-1.3.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:fd93cc7f3139b6dd7aab2f26a90dde0aa9fc264dbf70f6740d498a70b860b82c", size = 265681, upload-time = "2025-04-15T17:44:59.314Z" }, + { url = "https://files.pythonhosted.org/packages/2b/25/ac07d6ad12affa7d1ffed11b77417d0a6308170f44ff20fa1d5aa6333f03/contourpy-1.3.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:107ba8a6a7eec58bb475329e6d3b95deba9440667c4d62b9b6063942b61d7f16", size = 315101, upload-time = "2025-04-15T17:45:04.165Z" }, + { url = "https://files.pythonhosted.org/packages/8f/4d/5bb3192bbe9d3f27e3061a6a8e7733c9120e203cb8515767d30973f71030/contourpy-1.3.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ded1706ed0c1049224531b81128efbd5084598f18d8a2d9efae833edbd2b40ad", size = 220599, upload-time = "2025-04-15T17:45:08.456Z" }, + { url = "https://files.pythonhosted.org/packages/ff/c0/91f1215d0d9f9f343e4773ba6c9b89e8c0cc7a64a6263f21139da639d848/contourpy-1.3.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5f5964cdad279256c084b69c3f412b7801e15356b16efa9d78aa974041903da0", size = 266807, upload-time = "2025-04-15T17:45:15.535Z" }, + { url = "https://files.pythonhosted.org/packages/d4/79/6be7e90c955c0487e7712660d6cead01fa17bff98e0ea275737cc2bc8e71/contourpy-1.3.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49b65a95d642d4efa8f64ba12558fcb83407e58a2dfba9d796d77b63ccfcaff5", size = 318729, upload-time = "2025-04-15T17:45:20.166Z" }, + { url = "https://files.pythonhosted.org/packages/87/68/7f46fb537958e87427d98a4074bcde4b67a70b04900cfc5ce29bc2f556c1/contourpy-1.3.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:8c5acb8dddb0752bf252e01a3035b21443158910ac16a3b0d20e7fed7d534ce5", size = 221791, upload-time = "2025-04-15T17:45:24.794Z" }, +] + +[[package]] +name = "contourpy" +version = "1.3.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130'", + "python_full_version == '3.11.*' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130'", + "python_full_version >= '3.12' and extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version == '3.11.*' and extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version >= '3.12' and sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version == '3.11.*' and sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version >= '3.12' and sys_platform == 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version == '3.11.*' and sys_platform == 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version >= '3.12' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version == '3.11.*' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", +] +dependencies = [ + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/58/01/1253e6698a07380cd31a736d248a3f2a50a7c88779a1813da27503cadc2a/contourpy-1.3.3.tar.gz", hash = "sha256:083e12155b210502d0bca491432bb04d56dc3432f95a979b429f2848c3dbe880", size = 13466174, upload-time = "2025-07-26T12:03:12.549Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/91/2e/c4390a31919d8a78b90e8ecf87cd4b4c4f05a5b48d05ec17db8e5404c6f4/contourpy-1.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:709a48ef9a690e1343202916450bc48b9e51c049b089c7f79a267b46cffcdaa1", size = 288773, upload-time = "2025-07-26T12:01:02.277Z" }, + { url = "https://files.pythonhosted.org/packages/0d/44/c4b0b6095fef4dc9c420e041799591e3b63e9619e3044f7f4f6c21c0ab24/contourpy-1.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:23416f38bfd74d5d28ab8429cc4d63fa67d5068bd711a85edb1c3fb0c3e2f381", size = 270149, upload-time = "2025-07-26T12:01:04.072Z" }, + { url = "https://files.pythonhosted.org/packages/30/2e/dd4ced42fefac8470661d7cb7e264808425e6c5d56d175291e93890cce09/contourpy-1.3.3-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:929ddf8c4c7f348e4c0a5a3a714b5c8542ffaa8c22954862a46ca1813b667ee7", size = 329222, upload-time = "2025-07-26T12:01:05.688Z" }, + { url = "https://files.pythonhosted.org/packages/f2/74/cc6ec2548e3d276c71389ea4802a774b7aa3558223b7bade3f25787fafc2/contourpy-1.3.3-cp311-cp311-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9e999574eddae35f1312c2b4b717b7885d4edd6cb46700e04f7f02db454e67c1", size = 377234, upload-time = "2025-07-26T12:01:07.054Z" }, + { url = "https://files.pythonhosted.org/packages/03/b3/64ef723029f917410f75c09da54254c5f9ea90ef89b143ccadb09df14c15/contourpy-1.3.3-cp311-cp311-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0bf67e0e3f482cb69779dd3061b534eb35ac9b17f163d851e2a547d56dba0a3a", size = 380555, upload-time = "2025-07-26T12:01:08.801Z" }, + { url = "https://files.pythonhosted.org/packages/5f/4b/6157f24ca425b89fe2eb7e7be642375711ab671135be21e6faa100f7448c/contourpy-1.3.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:51e79c1f7470158e838808d4a996fa9bac72c498e93d8ebe5119bc1e6becb0db", size = 355238, upload-time = "2025-07-26T12:01:10.319Z" }, + { url = "https://files.pythonhosted.org/packages/98/56/f914f0dd678480708a04cfd2206e7c382533249bc5001eb9f58aa693e200/contourpy-1.3.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:598c3aaece21c503615fd59c92a3598b428b2f01bfb4b8ca9c4edeecc2438620", size = 1326218, upload-time = "2025-07-26T12:01:12.659Z" }, + { url = "https://files.pythonhosted.org/packages/fb/d7/4a972334a0c971acd5172389671113ae82aa7527073980c38d5868ff1161/contourpy-1.3.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:322ab1c99b008dad206d406bb61d014cf0174df491ae9d9d0fac6a6fda4f977f", size = 1392867, upload-time = "2025-07-26T12:01:15.533Z" }, + { url = "https://files.pythonhosted.org/packages/75/3e/f2cc6cd56dc8cff46b1a56232eabc6feea52720083ea71ab15523daab796/contourpy-1.3.3-cp311-cp311-win32.whl", hash = "sha256:fd907ae12cd483cd83e414b12941c632a969171bf90fc937d0c9f268a31cafff", size = 183677, upload-time = "2025-07-26T12:01:17.088Z" }, + { url = "https://files.pythonhosted.org/packages/98/4b/9bd370b004b5c9d8045c6c33cf65bae018b27aca550a3f657cdc99acdbd8/contourpy-1.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:3519428f6be58431c56581f1694ba8e50626f2dd550af225f82fb5f5814d2a42", size = 225234, upload-time = "2025-07-26T12:01:18.256Z" }, + { url = "https://files.pythonhosted.org/packages/d9/b6/71771e02c2e004450c12b1120a5f488cad2e4d5b590b1af8bad060360fe4/contourpy-1.3.3-cp311-cp311-win_arm64.whl", hash = "sha256:15ff10bfada4bf92ec8b31c62bf7c1834c244019b4a33095a68000d7075df470", size = 193123, upload-time = "2025-07-26T12:01:19.848Z" }, + { url = "https://files.pythonhosted.org/packages/be/45/adfee365d9ea3d853550b2e735f9d66366701c65db7855cd07621732ccfc/contourpy-1.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b08a32ea2f8e42cf1d4be3169a98dd4be32bafe4f22b6c4cb4ba810fa9e5d2cb", size = 293419, upload-time = "2025-07-26T12:01:21.16Z" }, + { url = "https://files.pythonhosted.org/packages/53/3e/405b59cfa13021a56bba395a6b3aca8cec012b45bf177b0eaf7a202cde2c/contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:556dba8fb6f5d8742f2923fe9457dbdd51e1049c4a43fd3986a0b14a1d815fc6", size = 273979, upload-time = "2025-07-26T12:01:22.448Z" }, + { url = "https://files.pythonhosted.org/packages/d4/1c/a12359b9b2ca3a845e8f7f9ac08bdf776114eb931392fcad91743e2ea17b/contourpy-1.3.3-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92d9abc807cf7d0e047b95ca5d957cf4792fcd04e920ca70d48add15c1a90ea7", size = 332653, upload-time = "2025-07-26T12:01:24.155Z" }, + { url = "https://files.pythonhosted.org/packages/63/12/897aeebfb475b7748ea67b61e045accdfcf0d971f8a588b67108ed7f5512/contourpy-1.3.3-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b2e8faa0ed68cb29af51edd8e24798bb661eac3bd9f65420c1887b6ca89987c8", size = 379536, upload-time = "2025-07-26T12:01:25.91Z" }, + { url = "https://files.pythonhosted.org/packages/43/8a/a8c584b82deb248930ce069e71576fc09bd7174bbd35183b7943fb1064fd/contourpy-1.3.3-cp312-cp312-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:626d60935cf668e70a5ce6ff184fd713e9683fb458898e4249b63be9e28286ea", size = 384397, upload-time = "2025-07-26T12:01:27.152Z" }, + { url = "https://files.pythonhosted.org/packages/cc/8f/ec6289987824b29529d0dfda0d74a07cec60e54b9c92f3c9da4c0ac732de/contourpy-1.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4d00e655fcef08aba35ec9610536bfe90267d7ab5ba944f7032549c55a146da1", size = 362601, upload-time = "2025-07-26T12:01:28.808Z" }, + { url = "https://files.pythonhosted.org/packages/05/0a/a3fe3be3ee2dceb3e615ebb4df97ae6f3828aa915d3e10549ce016302bd1/contourpy-1.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:451e71b5a7d597379ef572de31eeb909a87246974d960049a9848c3bc6c41bf7", size = 1331288, upload-time = "2025-07-26T12:01:31.198Z" }, + { url = "https://files.pythonhosted.org/packages/33/1d/acad9bd4e97f13f3e2b18a3977fe1b4a37ecf3d38d815333980c6c72e963/contourpy-1.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:459c1f020cd59fcfe6650180678a9993932d80d44ccde1fa1868977438f0b411", size = 1403386, upload-time = "2025-07-26T12:01:33.947Z" }, + { url = "https://files.pythonhosted.org/packages/cf/8f/5847f44a7fddf859704217a99a23a4f6417b10e5ab1256a179264561540e/contourpy-1.3.3-cp312-cp312-win32.whl", hash = "sha256:023b44101dfe49d7d53932be418477dba359649246075c996866106da069af69", size = 185018, upload-time = "2025-07-26T12:01:35.64Z" }, + { url = "https://files.pythonhosted.org/packages/19/e8/6026ed58a64563186a9ee3f29f41261fd1828f527dd93d33b60feca63352/contourpy-1.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:8153b8bfc11e1e4d75bcb0bff1db232f9e10b274e0929de9d608027e0d34ff8b", size = 226567, upload-time = "2025-07-26T12:01:36.804Z" }, + { url = "https://files.pythonhosted.org/packages/d1/e2/f05240d2c39a1ed228d8328a78b6f44cd695f7ef47beb3e684cf93604f86/contourpy-1.3.3-cp312-cp312-win_arm64.whl", hash = "sha256:07ce5ed73ecdc4a03ffe3e1b3e3c1166db35ae7584be76f65dbbe28a7791b0cc", size = 193655, upload-time = "2025-07-26T12:01:37.999Z" }, + { url = "https://files.pythonhosted.org/packages/68/35/0167aad910bbdb9599272bd96d01a9ec6852f36b9455cf2ca67bd4cc2d23/contourpy-1.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:177fb367556747a686509d6fef71d221a4b198a3905fe824430e5ea0fda54eb5", size = 293257, upload-time = "2025-07-26T12:01:39.367Z" }, + { url = "https://files.pythonhosted.org/packages/96/e4/7adcd9c8362745b2210728f209bfbcf7d91ba868a2c5f40d8b58f54c509b/contourpy-1.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d002b6f00d73d69333dac9d0b8d5e84d9724ff9ef044fd63c5986e62b7c9e1b1", size = 274034, upload-time = "2025-07-26T12:01:40.645Z" }, + { url = "https://files.pythonhosted.org/packages/73/23/90e31ceeed1de63058a02cb04b12f2de4b40e3bef5e082a7c18d9c8ae281/contourpy-1.3.3-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:348ac1f5d4f1d66d3322420f01d42e43122f43616e0f194fc1c9f5d830c5b286", size = 334672, upload-time = "2025-07-26T12:01:41.942Z" }, + { url = "https://files.pythonhosted.org/packages/ed/93/b43d8acbe67392e659e1d984700e79eb67e2acb2bd7f62012b583a7f1b55/contourpy-1.3.3-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:655456777ff65c2c548b7c454af9c6f33f16c8884f11083244b5819cc214f1b5", size = 381234, upload-time = "2025-07-26T12:01:43.499Z" }, + { url = "https://files.pythonhosted.org/packages/46/3b/bec82a3ea06f66711520f75a40c8fc0b113b2a75edb36aa633eb11c4f50f/contourpy-1.3.3-cp313-cp313-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:644a6853d15b2512d67881586bd03f462c7ab755db95f16f14d7e238f2852c67", size = 385169, upload-time = "2025-07-26T12:01:45.219Z" }, + { url = "https://files.pythonhosted.org/packages/4b/32/e0f13a1c5b0f8572d0ec6ae2f6c677b7991fafd95da523159c19eff0696a/contourpy-1.3.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4debd64f124ca62069f313a9cb86656ff087786016d76927ae2cf37846b006c9", size = 362859, upload-time = "2025-07-26T12:01:46.519Z" }, + { url = "https://files.pythonhosted.org/packages/33/71/e2a7945b7de4e58af42d708a219f3b2f4cff7386e6b6ab0a0fa0033c49a9/contourpy-1.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a15459b0f4615b00bbd1e91f1b9e19b7e63aea7483d03d804186f278c0af2659", size = 1332062, upload-time = "2025-07-26T12:01:48.964Z" }, + { url = "https://files.pythonhosted.org/packages/12/fc/4e87ac754220ccc0e807284f88e943d6d43b43843614f0a8afa469801db0/contourpy-1.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ca0fdcd73925568ca027e0b17ab07aad764be4706d0a925b89227e447d9737b7", size = 1403932, upload-time = "2025-07-26T12:01:51.979Z" }, + { url = "https://files.pythonhosted.org/packages/a6/2e/adc197a37443f934594112222ac1aa7dc9a98faf9c3842884df9a9d8751d/contourpy-1.3.3-cp313-cp313-win32.whl", hash = "sha256:b20c7c9a3bf701366556e1b1984ed2d0cedf999903c51311417cf5f591d8c78d", size = 185024, upload-time = "2025-07-26T12:01:53.245Z" }, + { url = "https://files.pythonhosted.org/packages/18/0b/0098c214843213759692cc638fce7de5c289200a830e5035d1791d7a2338/contourpy-1.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:1cadd8b8969f060ba45ed7c1b714fe69185812ab43bd6b86a9123fe8f99c3263", size = 226578, upload-time = "2025-07-26T12:01:54.422Z" }, + { url = "https://files.pythonhosted.org/packages/8a/9a/2f6024a0c5995243cd63afdeb3651c984f0d2bc727fd98066d40e141ad73/contourpy-1.3.3-cp313-cp313-win_arm64.whl", hash = "sha256:fd914713266421b7536de2bfa8181aa8c699432b6763a0ea64195ebe28bff6a9", size = 193524, upload-time = "2025-07-26T12:01:55.73Z" }, + { url = "https://files.pythonhosted.org/packages/c0/b3/f8a1a86bd3298513f500e5b1f5fd92b69896449f6cab6a146a5d52715479/contourpy-1.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:88df9880d507169449d434c293467418b9f6cbe82edd19284aa0409e7fdb933d", size = 306730, upload-time = "2025-07-26T12:01:57.051Z" }, + { url = "https://files.pythonhosted.org/packages/3f/11/4780db94ae62fc0c2053909b65dc3246bd7cecfc4f8a20d957ad43aa4ad8/contourpy-1.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:d06bb1f751ba5d417047db62bca3c8fde202b8c11fb50742ab3ab962c81e8216", size = 287897, upload-time = "2025-07-26T12:01:58.663Z" }, + { url = "https://files.pythonhosted.org/packages/ae/15/e59f5f3ffdd6f3d4daa3e47114c53daabcb18574a26c21f03dc9e4e42ff0/contourpy-1.3.3-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e4e6b05a45525357e382909a4c1600444e2a45b4795163d3b22669285591c1ae", size = 326751, upload-time = "2025-07-26T12:02:00.343Z" }, + { url = "https://files.pythonhosted.org/packages/0f/81/03b45cfad088e4770b1dcf72ea78d3802d04200009fb364d18a493857210/contourpy-1.3.3-cp313-cp313t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ab3074b48c4e2cf1a960e6bbeb7f04566bf36b1861d5c9d4d8ac04b82e38ba20", size = 375486, upload-time = "2025-07-26T12:02:02.128Z" }, + { url = "https://files.pythonhosted.org/packages/0c/ba/49923366492ffbdd4486e970d421b289a670ae8cf539c1ea9a09822b371a/contourpy-1.3.3-cp313-cp313t-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6c3d53c796f8647d6deb1abe867daeb66dcc8a97e8455efa729516b997b8ed99", size = 388106, upload-time = "2025-07-26T12:02:03.615Z" }, + { url = "https://files.pythonhosted.org/packages/9f/52/5b00ea89525f8f143651f9f03a0df371d3cbd2fccd21ca9b768c7a6500c2/contourpy-1.3.3-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:50ed930df7289ff2a8d7afeb9603f8289e5704755c7e5c3bbd929c90c817164b", size = 352548, upload-time = "2025-07-26T12:02:05.165Z" }, + { url = "https://files.pythonhosted.org/packages/32/1d/a209ec1a3a3452d490f6b14dd92e72280c99ae3d1e73da74f8277d4ee08f/contourpy-1.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4feffb6537d64b84877da813a5c30f1422ea5739566abf0bd18065ac040e120a", size = 1322297, upload-time = "2025-07-26T12:02:07.379Z" }, + { url = "https://files.pythonhosted.org/packages/bc/9e/46f0e8ebdd884ca0e8877e46a3f4e633f6c9c8c4f3f6e72be3fe075994aa/contourpy-1.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:2b7e9480ffe2b0cd2e787e4df64270e3a0440d9db8dc823312e2c940c167df7e", size = 1391023, upload-time = "2025-07-26T12:02:10.171Z" }, + { url = "https://files.pythonhosted.org/packages/b9/70/f308384a3ae9cd2209e0849f33c913f658d3326900d0ff5d378d6a1422d2/contourpy-1.3.3-cp313-cp313t-win32.whl", hash = "sha256:283edd842a01e3dcd435b1c5116798d661378d83d36d337b8dde1d16a5fc9ba3", size = 196157, upload-time = "2025-07-26T12:02:11.488Z" }, + { url = "https://files.pythonhosted.org/packages/b2/dd/880f890a6663b84d9e34a6f88cded89d78f0091e0045a284427cb6b18521/contourpy-1.3.3-cp313-cp313t-win_amd64.whl", hash = "sha256:87acf5963fc2b34825e5b6b048f40e3635dd547f590b04d2ab317c2619ef7ae8", size = 240570, upload-time = "2025-07-26T12:02:12.754Z" }, + { url = "https://files.pythonhosted.org/packages/80/99/2adc7d8ffead633234817ef8e9a87115c8a11927a94478f6bb3d3f4d4f7d/contourpy-1.3.3-cp313-cp313t-win_arm64.whl", hash = "sha256:3c30273eb2a55024ff31ba7d052dde990d7d8e5450f4bbb6e913558b3d6c2301", size = 199713, upload-time = "2025-07-26T12:02:14.4Z" }, + { url = "https://files.pythonhosted.org/packages/72/8b/4546f3ab60f78c514ffb7d01a0bd743f90de36f0019d1be84d0a708a580a/contourpy-1.3.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fde6c716d51c04b1c25d0b90364d0be954624a0ee9d60e23e850e8d48353d07a", size = 292189, upload-time = "2025-07-26T12:02:16.095Z" }, + { url = "https://files.pythonhosted.org/packages/fd/e1/3542a9cb596cadd76fcef413f19c79216e002623158befe6daa03dbfa88c/contourpy-1.3.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:cbedb772ed74ff5be440fa8eee9bd49f64f6e3fc09436d9c7d8f1c287b121d77", size = 273251, upload-time = "2025-07-26T12:02:17.524Z" }, + { url = "https://files.pythonhosted.org/packages/b1/71/f93e1e9471d189f79d0ce2497007731c1e6bf9ef6d1d61b911430c3db4e5/contourpy-1.3.3-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:22e9b1bd7a9b1d652cd77388465dc358dafcd2e217d35552424aa4f996f524f5", size = 335810, upload-time = "2025-07-26T12:02:18.9Z" }, + { url = "https://files.pythonhosted.org/packages/91/f9/e35f4c1c93f9275d4e38681a80506b5510e9327350c51f8d4a5a724d178c/contourpy-1.3.3-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a22738912262aa3e254e4f3cb079a95a67132fc5a063890e224393596902f5a4", size = 382871, upload-time = "2025-07-26T12:02:20.418Z" }, + { url = "https://files.pythonhosted.org/packages/b5/71/47b512f936f66a0a900d81c396a7e60d73419868fba959c61efed7a8ab46/contourpy-1.3.3-cp314-cp314-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:afe5a512f31ee6bd7d0dda52ec9864c984ca3d66664444f2d72e0dc4eb832e36", size = 386264, upload-time = "2025-07-26T12:02:21.916Z" }, + { url = "https://files.pythonhosted.org/packages/04/5f/9ff93450ba96b09c7c2b3f81c94de31c89f92292f1380261bd7195bea4ea/contourpy-1.3.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f64836de09927cba6f79dcd00fdd7d5329f3fccc633468507079c829ca4db4e3", size = 363819, upload-time = "2025-07-26T12:02:23.759Z" }, + { url = "https://files.pythonhosted.org/packages/3e/a6/0b185d4cc480ee494945cde102cb0149ae830b5fa17bf855b95f2e70ad13/contourpy-1.3.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1fd43c3be4c8e5fd6e4f2baeae35ae18176cf2e5cced681cca908addf1cdd53b", size = 1333650, upload-time = "2025-07-26T12:02:26.181Z" }, + { url = "https://files.pythonhosted.org/packages/43/d7/afdc95580ca56f30fbcd3060250f66cedbde69b4547028863abd8aa3b47e/contourpy-1.3.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:6afc576f7b33cf00996e5c1102dc2a8f7cc89e39c0b55df93a0b78c1bd992b36", size = 1404833, upload-time = "2025-07-26T12:02:28.782Z" }, + { url = "https://files.pythonhosted.org/packages/e2/e2/366af18a6d386f41132a48f033cbd2102e9b0cf6345d35ff0826cd984566/contourpy-1.3.3-cp314-cp314-win32.whl", hash = "sha256:66c8a43a4f7b8df8b71ee1840e4211a3c8d93b214b213f590e18a1beca458f7d", size = 189692, upload-time = "2025-07-26T12:02:30.128Z" }, + { url = "https://files.pythonhosted.org/packages/7d/c2/57f54b03d0f22d4044b8afb9ca0e184f8b1afd57b4f735c2fa70883dc601/contourpy-1.3.3-cp314-cp314-win_amd64.whl", hash = "sha256:cf9022ef053f2694e31d630feaacb21ea24224be1c3ad0520b13d844274614fd", size = 232424, upload-time = "2025-07-26T12:02:31.395Z" }, + { url = "https://files.pythonhosted.org/packages/18/79/a9416650df9b525737ab521aa181ccc42d56016d2123ddcb7b58e926a42c/contourpy-1.3.3-cp314-cp314-win_arm64.whl", hash = "sha256:95b181891b4c71de4bb404c6621e7e2390745f887f2a026b2d99e92c17892339", size = 198300, upload-time = "2025-07-26T12:02:32.956Z" }, + { url = "https://files.pythonhosted.org/packages/1f/42/38c159a7d0f2b7b9c04c64ab317042bb6952b713ba875c1681529a2932fe/contourpy-1.3.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:33c82d0138c0a062380332c861387650c82e4cf1747aaa6938b9b6516762e772", size = 306769, upload-time = "2025-07-26T12:02:34.2Z" }, + { url = "https://files.pythonhosted.org/packages/c3/6c/26a8205f24bca10974e77460de68d3d7c63e282e23782f1239f226fcae6f/contourpy-1.3.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ea37e7b45949df430fe649e5de8351c423430046a2af20b1c1961cae3afcda77", size = 287892, upload-time = "2025-07-26T12:02:35.807Z" }, + { url = "https://files.pythonhosted.org/packages/66/06/8a475c8ab718ebfd7925661747dbb3c3ee9c82ac834ccb3570be49d129f4/contourpy-1.3.3-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d304906ecc71672e9c89e87c4675dc5c2645e1f4269a5063b99b0bb29f232d13", size = 326748, upload-time = "2025-07-26T12:02:37.193Z" }, + { url = "https://files.pythonhosted.org/packages/b4/a3/c5ca9f010a44c223f098fccd8b158bb1cb287378a31ac141f04730dc49be/contourpy-1.3.3-cp314-cp314t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ca658cd1a680a5c9ea96dc61cdbae1e85c8f25849843aa799dfd3cb370ad4fbe", size = 375554, upload-time = "2025-07-26T12:02:38.894Z" }, + { url = "https://files.pythonhosted.org/packages/80/5b/68bd33ae63fac658a4145088c1e894405e07584a316738710b636c6d0333/contourpy-1.3.3-cp314-cp314t-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ab2fd90904c503739a75b7c8c5c01160130ba67944a7b77bbf36ef8054576e7f", size = 388118, upload-time = "2025-07-26T12:02:40.642Z" }, + { url = "https://files.pythonhosted.org/packages/40/52/4c285a6435940ae25d7410a6c36bda5145839bc3f0beb20c707cda18b9d2/contourpy-1.3.3-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7301b89040075c30e5768810bc96a8e8d78085b47d8be6e4c3f5a0b4ed478a0", size = 352555, upload-time = "2025-07-26T12:02:42.25Z" }, + { url = "https://files.pythonhosted.org/packages/24/ee/3e81e1dd174f5c7fefe50e85d0892de05ca4e26ef1c9a59c2a57e43b865a/contourpy-1.3.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:2a2a8b627d5cc6b7c41a4beff6c5ad5eb848c88255fda4a8745f7e901b32d8e4", size = 1322295, upload-time = "2025-07-26T12:02:44.668Z" }, + { url = "https://files.pythonhosted.org/packages/3c/b2/6d913d4d04e14379de429057cd169e5e00f6c2af3bb13e1710bcbdb5da12/contourpy-1.3.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:fd6ec6be509c787f1caf6b247f0b1ca598bef13f4ddeaa126b7658215529ba0f", size = 1391027, upload-time = "2025-07-26T12:02:47.09Z" }, + { url = "https://files.pythonhosted.org/packages/93/8a/68a4ec5c55a2971213d29a9374913f7e9f18581945a7a31d1a39b5d2dfe5/contourpy-1.3.3-cp314-cp314t-win32.whl", hash = "sha256:e74a9a0f5e3fff48fb5a7f2fd2b9b70a3fe014a67522f79b7cca4c0c7e43c9ae", size = 202428, upload-time = "2025-07-26T12:02:48.691Z" }, + { url = "https://files.pythonhosted.org/packages/fa/96/fd9f641ffedc4fa3ace923af73b9d07e869496c9cc7a459103e6e978992f/contourpy-1.3.3-cp314-cp314t-win_amd64.whl", hash = "sha256:13b68d6a62db8eafaebb8039218921399baf6e47bf85006fd8529f2a08ef33fc", size = 250331, upload-time = "2025-07-26T12:02:50.137Z" }, + { url = "https://files.pythonhosted.org/packages/ae/8c/469afb6465b853afff216f9528ffda78a915ff880ed58813ba4faf4ba0b6/contourpy-1.3.3-cp314-cp314t-win_arm64.whl", hash = "sha256:b7448cb5a725bb1e35ce88771b86fba35ef418952474492cf7c764059933ff8b", size = 203831, upload-time = "2025-07-26T12:02:51.449Z" }, + { url = "https://files.pythonhosted.org/packages/a5/29/8dcfe16f0107943fa92388c23f6e05cff0ba58058c4c95b00280d4c75a14/contourpy-1.3.3-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cd5dfcaeb10f7b7f9dc8941717c6c2ade08f587be2226222c12b25f0483ed497", size = 278809, upload-time = "2025-07-26T12:02:52.74Z" }, + { url = "https://files.pythonhosted.org/packages/85/a9/8b37ef4f7dafeb335daee3c8254645ef5725be4d9c6aa70b50ec46ef2f7e/contourpy-1.3.3-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:0c1fc238306b35f246d61a1d416a627348b5cf0648648a031e14bb8705fcdfe8", size = 261593, upload-time = "2025-07-26T12:02:54.037Z" }, + { url = "https://files.pythonhosted.org/packages/0a/59/ebfb8c677c75605cc27f7122c90313fd2f375ff3c8d19a1694bda74aaa63/contourpy-1.3.3-pp311-pypy311_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:70f9aad7de812d6541d29d2bbf8feb22ff7e1c299523db288004e3157ff4674e", size = 302202, upload-time = "2025-07-26T12:02:55.947Z" }, + { url = "https://files.pythonhosted.org/packages/3c/37/21972a15834d90bfbfb009b9d004779bd5a07a0ec0234e5ba8f64d5736f4/contourpy-1.3.3-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5ed3657edf08512fc3fe81b510e35c2012fbd3081d2e26160f27ca28affec989", size = 329207, upload-time = "2025-07-26T12:02:57.468Z" }, + { url = "https://files.pythonhosted.org/packages/0c/58/bd257695f39d05594ca4ad60df5bcb7e32247f9951fd09a9b8edb82d1daa/contourpy-1.3.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:3d1a3799d62d45c18bafd41c5fa05120b96a28079f2393af559b843d1a966a77", size = 225315, upload-time = "2025-07-26T12:02:58.801Z" }, +] + +[[package]] +name = "coverage" +version = "7.14.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/fd/0ab2772530e946e1be1abd0bc09e647ec9b02e88f0867857601fefca8953/coverage-7.14.1.tar.gz", hash = "sha256:30c08f7d90415aa98b3c990385dea2939b0da55f38515e5b369b83655f8523be", size = 920132, upload-time = "2026-05-26T20:41:36.783Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/92/69/0d2ef01ff4b8fcecd4cba920d11e92fa4f96ae412441d3b56a90a258e69b/coverage-7.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3e3680291c4a1d0dadfa84a2c459576a4af5133abb617905714339a0c73138cf", size = 219722, upload-time = "2026-05-26T20:38:14.002Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ae/9afdeaa31b9d9ce98124b6abf8bb49119bf71aecae04f8567c189d91299f/coverage-7.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a5274669f37f2343635a347b91a60777621341ab3378e9c6ac9335eee704bddf", size = 220240, upload-time = "2026-05-26T20:38:17.424Z" }, + { url = "https://files.pythonhosted.org/packages/51/69/c998589871df7ea7dba865cc5ee32b5a3e1d47ba6c68ef91104c7c46fa5e/coverage-7.14.1-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:cfe5a5fec635799ef33428f1e5e61bafa45a92a96190ba731561ba558ccc214d", size = 246981, upload-time = "2026-05-26T20:38:19.266Z" }, + { url = "https://files.pythonhosted.org/packages/fc/10/1c7d04c13040dac531d21b712bbe08f902e6dd9b58f5d77875c4d030f8f2/coverage-7.14.1-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:62a9f70b52e0b5a95cfef4a5c5641b06983cadc5e538a3feeb5c00211f523ac2", size = 248812, upload-time = "2026-05-26T20:38:20.75Z" }, + { url = "https://files.pythonhosted.org/packages/c1/65/2a38a4607ef27cadcfbcee034dba5830ae2569f90144a0f4c7dbf47d30b0/coverage-7.14.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3c18ebc343e15be53049b3a2dce38fe82d58f37e20ab9094b3a39c0aa4f6bb47", size = 250675, upload-time = "2026-05-26T20:38:22.159Z" }, + { url = "https://files.pythonhosted.org/packages/c9/a2/a446ed9752a4a59b79e0fb6cbb319f6facb2183045c0725462625e66f87e/coverage-7.14.1-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b84ffdf877644e7096aa936991efeed873f7f3df57b9cd001312b7668ab08550", size = 252590, upload-time = "2026-05-26T20:38:23.63Z" }, + { url = "https://files.pythonhosted.org/packages/9e/fd/e81fbd7ba752365546e9842b1cbdaad3d6919d2a522c590aef16a281ec5e/coverage-7.14.1-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e854312c4103f2ad4c0dc023b69b77ebfd2c89db5f86c4c94dc2353f9a92167e", size = 247691, upload-time = "2026-05-26T20:38:25.057Z" }, + { url = "https://files.pythonhosted.org/packages/53/35/f3c26fdaae9ea937d154ca4d372e5ea0a4167ff70d36c6074ac2eacb2f83/coverage-7.14.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c643734307300234fafa36bf2a040a7235f8f177ea1fd6ec1423aea6fb7b929f", size = 248716, upload-time = "2026-05-26T20:38:26.406Z" }, + { url = "https://files.pythonhosted.org/packages/2e/14/940b6c49551fd343e8507ee2b0ba7af5d0aa04ed5bf768285cb7c72a9884/coverage-7.14.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:84ac9499e48700399a5dd0ea7085b5091961fec52c68d66b4ec0d3cf7f4441b1", size = 246721, upload-time = "2026-05-26T20:38:28.282Z" }, + { url = "https://files.pythonhosted.org/packages/aa/2c/40fc0634186c28292a662dff578866b3913983d6c375a3c2a74020938719/coverage-7.14.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:7f02d09f70776579b926d889a4c9c235070a1f47c40458aeaca563fae5acfdb5", size = 250533, upload-time = "2026-05-26T20:38:29.753Z" }, + { url = "https://files.pythonhosted.org/packages/de/e3/2c26bf1e811f9df991ff2a9bdddebdd13ee0665d564df7d05979f9146297/coverage-7.14.1-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:ce66d8e46da2bb5ee313a745cbd2e391d319176c1f7a9451bfcd3a2fb920859b", size = 246990, upload-time = "2026-05-26T20:38:31.516Z" }, + { url = "https://files.pythonhosted.org/packages/a8/b0/060260ef56bd92363ebdce0c7095ce422b06e69aae71828efeca473ab1ca/coverage-7.14.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c912c259304cfb5ee584481cfb7ce1ff932b4d61e6c9140b8f19cb7b5ed82332", size = 247593, upload-time = "2026-05-26T20:38:33.065Z" }, + { url = "https://files.pythonhosted.org/packages/63/f3/501502046efeb0d6d94b5ca54941d95f1184183dd6bdb7f283985783bb4a/coverage-7.14.1-cp310-cp310-win32.whl", hash = "sha256:1238cb94638e610e972c60dac68e813f868dc7d6e982535270558443058d9d59", size = 222330, upload-time = "2026-05-26T20:38:35.36Z" }, + { url = "https://files.pythonhosted.org/packages/a0/5d/1bf99f2c558f128faf7906817ccbdb576ba815d3b41ce2ac1719b70a3663/coverage-7.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:fc459e5d73be2d6332fcfe8dbf3d8994671fe33c700f4565988ecfa511547253", size = 223261, upload-time = "2026-05-26T20:38:37.196Z" }, + { url = "https://files.pythonhosted.org/packages/7d/d7/477ad149490e6cb849f28abea1dabb9c823cea72e7500c81b4240ce619c0/coverage-7.14.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:478b5bcd63c2e1357c5c7e16c070690df7b07f676b1c114d7b93e533c664309f", size = 219848, upload-time = "2026-05-26T20:38:38.715Z" }, + { url = "https://files.pythonhosted.org/packages/91/82/a5eb47257c50601bb7b9a9d2857c67b7a3a85ad74180eb2c98bb1fbe0ce5/coverage-7.14.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a24a81f9715ee42ef59a316cc11611c98fe23920f7c81861315c9f3ff4a230f4", size = 220354, upload-time = "2026-05-26T20:38:40.232Z" }, + { url = "https://files.pythonhosted.org/packages/43/8b/78419b5391a5cb706b6544390507e469d83ffc9a8248b02c4011aceb9365/coverage-7.14.1-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:196a13319ad88d6d8ef5ab489ec4f44ddde2143c0c7d5b27786f6c3ffd56a7e1", size = 250771, upload-time = "2026-05-26T20:38:41.782Z" }, + { url = "https://files.pythonhosted.org/packages/77/63/e77aaacd491182210d639636b7a8bba23ffffa9b82aa3762da9431855fa9/coverage-7.14.1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:3d452fd08b5c72c5167c93e6867b5c08500bd40f2a21e1e854a500550b6cc36f", size = 252683, upload-time = "2026-05-26T20:38:43.305Z" }, + { url = "https://files.pythonhosted.org/packages/65/1c/a022e3cfbec2ac241640003cb3a817e161d9c7f5aa9b49173756cdc03204/coverage-7.14.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:23bf7fa51ac02e07fc7c96849b82946da47ae862dc8f86d183b2a4864fc38129", size = 254791, upload-time = "2026-05-26T20:38:45.361Z" }, + { url = "https://files.pythonhosted.org/packages/61/d6/967e408aca4c1ceb88cb0cc677169110ae7f5995fb5eaf5fb1f5a1bb8f5d/coverage-7.14.1-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:bcaa50684dcaadfa599ac48f81103c756d791cfd85c97203d2217c593d48b860", size = 256748, upload-time = "2026-05-26T20:38:46.91Z" }, + { url = "https://files.pythonhosted.org/packages/b8/be/869188f7fe28638078ec479331ace6dc5f7b40b7153eb616f47ab79404d8/coverage-7.14.1-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:4ea1c034f95c9b056e856b794630b17f9fa3d57e4800ff1e503d3be0f9c9078c", size = 250907, upload-time = "2026-05-26T20:38:48.493Z" }, + { url = "https://files.pythonhosted.org/packages/07/aa/adb7d3b4278d690e68703abcd76ab1b948242e3668d921711551b78f9ddb/coverage-7.14.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c7e057326434e441306226fbeb5d1aaf14a2637efe97ba668306635835f32ad7", size = 252483, upload-time = "2026-05-26T20:38:50.074Z" }, + { url = "https://files.pythonhosted.org/packages/43/61/331c74103c62dcb0c4b9b3a0de9a61aca016208b0a90f109592a9f9ecc28/coverage-7.14.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:59baf88468dbc8d63b1887afd92bda52e40bb1561696e5819670601403810cec", size = 250545, upload-time = "2026-05-26T20:38:51.613Z" }, + { url = "https://files.pythonhosted.org/packages/f6/b6/c5dae3c104d89be04828f61810e6b3473825482e4c288cc4ed04553e08ae/coverage-7.14.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:d34d75f892b3ab73ba11cab5442cce7b3e168fd64162b16f0e1e0d09c508edef", size = 254310, upload-time = "2026-05-26T20:38:53.503Z" }, + { url = "https://files.pythonhosted.org/packages/ad/a1/2b9d5863e3b83c01ad8199e3c597802fbb3a9dc90b058885804c20296d31/coverage-7.14.1-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:3a56abc20a472baf0304c455721bc601477440d28ecfde8a03dde79ede07e0df", size = 250266, upload-time = "2026-05-26T20:38:55.414Z" }, + { url = "https://files.pythonhosted.org/packages/7f/5e/0e511fbdb269359be26fe678a1c3fa1f2aa2a01573cc3f54268c8d6d4797/coverage-7.14.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6a3cb83d1552c0cd1b4906655b6a33fd4a8473229633a901c6b73bf86914dee9", size = 251174, upload-time = "2026-05-26T20:38:57.141Z" }, + { url = "https://files.pythonhosted.org/packages/85/10/e55307b622b3dd9671cb321824502dc10f93e72f2802b9946159a8edadeb/coverage-7.14.1-cp311-cp311-win32.whl", hash = "sha256:10274a1fbeb8ec5d72966e17bb198a3104257aca4ac09d98667c5f8aca8c8548", size = 222354, upload-time = "2026-05-26T20:38:58.727Z" }, + { url = "https://files.pythonhosted.org/packages/71/cf/107421693cfb71e4f1ca5bf70443f64d4161878068d07a3e51c7ad21d17b/coverage-7.14.1-cp311-cp311-win_amd64.whl", hash = "sha256:87ebdf787d4888e3f3f2d523eadc6e18c6d18c6d0eb173801a189641627fb37e", size = 223290, upload-time = "2026-05-26T20:39:00.413Z" }, + { url = "https://files.pythonhosted.org/packages/b8/1d/3e3644585eb29e9dafefb19555078529a4d7cce12bd21929664eea989277/coverage-7.14.1-cp311-cp311-win_arm64.whl", hash = "sha256:dd34767fa19848d35659ffc0a75314f58c7af3f1cd87ec521e8292a1238398a3", size = 221953, upload-time = "2026-05-26T20:39:02.159Z" }, + { url = "https://files.pythonhosted.org/packages/3d/b7/bdbb725ba02c5b42825b200c940f38b7a54fcad24627b7192f78f8110d76/coverage-7.14.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a06c76364a9360e33d6d23769aefdf7f66f38e2ffb60ceb1baaa4989d83b695c", size = 220022, upload-time = "2026-05-26T20:39:03.702Z" }, + { url = "https://files.pythonhosted.org/packages/72/81/fdc0898a55c6219223291ec1a1fe89966ef212ce82276aa0899df84b5de0/coverage-7.14.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fad54e871165f6ec2f536063ac74c3104508a12963e64072ba44bd822de52b0c", size = 220379, upload-time = "2026-05-26T20:39:05.381Z" }, + { url = "https://files.pythonhosted.org/packages/de/72/de048c4a25e13bce59ac6a339351c10bdf2515e07459afcdaf04dc3143a2/coverage-7.14.1-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:84b535f00655ecafe1d929d1fb00ed5d6fa3051ea643ab2c161a3887b86f294b", size = 251888, upload-time = "2026-05-26T20:39:07.367Z" }, + { url = "https://files.pythonhosted.org/packages/28/30/300c343f68beb9d4cbb64ec81e58c5b6b80b56927f72d2b38654ac26e013/coverage-7.14.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:6b6b0853b895fe0e98cbfc580d1ec3393d9302b4b1e96a77b3f5c91fdab899e6", size = 254624, upload-time = "2026-05-26T20:39:09.037Z" }, + { url = "https://files.pythonhosted.org/packages/b1/ed/7b25642496e8170b6bac14adce00537c6e5fa2d586159401a4de3e8b49e6/coverage-7.14.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:442cc9c952b2df400cda54bb04ab87330cf2cd08a8692cbbea36773531eb6f37", size = 255739, upload-time = "2026-05-26T20:39:10.889Z" }, + { url = "https://files.pythonhosted.org/packages/7f/a2/abd210b8c4e29c24e4624916db97bb519097a91034aaeb767f937e7da794/coverage-7.14.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8270544c361ed405a27a060dbc9ed2c124b084d96dfdc2d9a2510482aef981ad", size = 257998, upload-time = "2026-05-26T20:39:12.722Z" }, + { url = "https://files.pythonhosted.org/packages/7f/24/7c50beed3792fe62f6ce0545c6686ce83379719e2c0276179333d97eae92/coverage-7.14.1-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:48b283b1dd6372e8de2a7a9a4c4d5dc06f4d4fd209b876f3c88a7a205a0c8f84", size = 252296, upload-time = "2026-05-26T20:39:14.259Z" }, + { url = "https://files.pythonhosted.org/packages/15/05/0f874628ebcbfc77ead559ff210281ef06a97db08481832e7dd39274a135/coverage-7.14.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5b0c99ba93a07d56f6df340bb79be53202a082b2fdb81bfe6190b741a3470d54", size = 253658, upload-time = "2026-05-26T20:39:15.923Z" }, + { url = "https://files.pythonhosted.org/packages/99/6f/ca6ad067364b337ef997802115e7ecad2abd2248b05471464b0dea02b4d4/coverage-7.14.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e471bc5769ff073b058cfadb0d736b56ce067c8560eabeb0da88462df98c23e7", size = 251803, upload-time = "2026-05-26T20:39:17.537Z" }, + { url = "https://files.pythonhosted.org/packages/c0/30/b9b4d377cd9f40baf228068f5a81faf8450c6228503011bd499708483a50/coverage-7.14.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f497a1ea81d4cd7c10ddcaa685135b9aabd291af3d55775a9ddf3cb7a364cdd9", size = 255873, upload-time = "2026-05-26T20:39:19.414Z" }, + { url = "https://files.pythonhosted.org/packages/3c/21/7c721a9e5e6bb88547d30a787aefb97512d3f54c1324c7488d9b3743f7f9/coverage-7.14.1-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:2222be86d0b54f5dd5a38f45f17f315f737245e857bf0bdedc70734f84a13c02", size = 251372, upload-time = "2026-05-26T20:39:21.169Z" }, + { url = "https://files.pythonhosted.org/packages/9d/8c/f8ae5a2200130e1503cd7661a6cd3b2b7bacef98277fbf3571fb13f8b766/coverage-7.14.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:85e85586565842f6932abebd4c18bcb1074223dc0b3576e7d173ca710622813a", size = 253245, upload-time = "2026-05-26T20:39:23.097Z" }, + { url = "https://files.pythonhosted.org/packages/34/62/70a9024672a5f6910517d9628c52c9afbdd3cf8f46426af52bb148a56fff/coverage-7.14.1-cp312-cp312-win32.whl", hash = "sha256:4a28fd227808366b196a75476dced2eb35b351d6766ba9c858dc93319e87f4f1", size = 222567, upload-time = "2026-05-26T20:39:24.868Z" }, + { url = "https://files.pythonhosted.org/packages/f6/81/8b7cd386839b039ebe1855733b9f9449a8dec5d79564018234f185a7fa70/coverage-7.14.1-cp312-cp312-win_amd64.whl", hash = "sha256:54acdb6674a4661768d7bf7db32dfb9f46ab1d764f8aba6df75ce1a6a088724e", size = 223372, upload-time = "2026-05-26T20:39:26.603Z" }, + { url = "https://files.pythonhosted.org/packages/ae/ba/b44d472022f620d289d95fa830143235c0c36461c6f2437ea8d51e5481ed/coverage-7.14.1-cp312-cp312-win_arm64.whl", hash = "sha256:99cd41ff91afd94896fea3bc002706b6ae4ce95727d06e4a0f39c0a8d8bd8b1a", size = 221989, upload-time = "2026-05-26T20:39:28.242Z" }, + { url = "https://files.pythonhosted.org/packages/8a/9e/5f6d56327c62b185225d145191c607e07515294a0aa6338e58805cd4a5ac/coverage-7.14.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:be9f2c802dcfce3f71298303aa5dad0dce440a76c52f2f60dacd8656dab78793", size = 220044, upload-time = "2026-05-26T20:39:29.902Z" }, + { url = "https://files.pythonhosted.org/packages/75/92/e82aca356744cbbc0f77a0b623e38918c1872361963413a3bab5d0340393/coverage-7.14.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6223a72fd0e4c7156353ec0f08a5f93623e1d3034d0e2683b9bb8ea674131b1d", size = 220412, upload-time = "2026-05-26T20:39:31.561Z" }, + { url = "https://files.pythonhosted.org/packages/27/c9/385bde0bf7ed0f4bf3a7ee5367060a86b5d218718cfd6fb943c0f836b34f/coverage-7.14.1-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:7279d2110a28cebc738b6459ecda2771735a4c18465fbbd36b3288fe5ed92247", size = 251412, upload-time = "2026-05-26T20:39:33.337Z" }, + { url = "https://files.pythonhosted.org/packages/51/8c/23faf6a2343a0d17f960a4bd56c43bc7eb4cf312f774dd6ceebd82c7d8fc/coverage-7.14.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9eeb3fcbc13ba40dfbdb22d01d196a28e9cef9ed4c29b60061a1e0e823a9929d", size = 254008, upload-time = "2026-05-26T20:39:35.009Z" }, + { url = "https://files.pythonhosted.org/packages/42/06/36f4aa9ca8a815e6036156e80706a67828bb97bd826948244f6996dda957/coverage-7.14.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f0cfc27c539f07cf5c0a4cfe211d0b6cae039f8f40526dbaa71944e64b50a7b", size = 255241, upload-time = "2026-05-26T20:39:36.71Z" }, + { url = "https://files.pythonhosted.org/packages/ca/79/95266316352f90f6b1c6736bb413302edfde2453fb32422d3911642691b3/coverage-7.14.1-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:221c70f316241a78e77e607c227cefc8808d4e08f28d99c04f35694690e940be", size = 257373, upload-time = "2026-05-26T20:39:38.412Z" }, + { url = "https://files.pythonhosted.org/packages/e3/9c/58316d1f66c488b5fca8a0eb3e98348807813efa8a0d0833b9021be27488/coverage-7.14.1-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:da028256b04ec30e5e0114b6f76172938c313991f0a2d3d894271315cf5d5e43", size = 251635, upload-time = "2026-05-26T20:39:40.268Z" }, + { url = "https://files.pythonhosted.org/packages/ef/5a/ca2398a568e16fed7bb713e84ba3603a7164fb65779abe645c565ec890d5/coverage-7.14.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:76a085d7005236a767e3426148b2c407e53ad61695c562f8a81da2d373324901", size = 253373, upload-time = "2026-05-26T20:39:42.145Z" }, + { url = "https://files.pythonhosted.org/packages/6e/2c/0396562c32deaebe7be51d865b3a41e9a87d7561acafe1a28f53b07e019a/coverage-7.14.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b553d04b5e778a8e56d57eb134aff42a92718ecba45e79c4764ecfa40efd92ff", size = 251341, upload-time = "2026-05-26T20:39:43.907Z" }, + { url = "https://files.pythonhosted.org/packages/fd/8f/a94f9221184c9cae1ee115820e3798e48b6b17777a9f19e46fb9a0c8dc74/coverage-7.14.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:46f714d2fb8ae2f4f29f23ada7f1e79b759fff5a70f94a1dac23af204c3ec9e4", size = 255497, upload-time = "2026-05-26T20:39:46.166Z" }, + { url = "https://files.pythonhosted.org/packages/71/69/505d70e47db1eaebcd002c39759707621ef184cd6b1ae084d9f41293f323/coverage-7.14.1-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:1896f5e19ff3f0431c7ce2172adc54890fd97f86b59ced8ca1649145d9ffe35d", size = 251159, upload-time = "2026-05-26T20:39:48.03Z" }, + { url = "https://files.pythonhosted.org/packages/e0/aa/58681c383aa33a9d2ed40a02d7a22fbf780d1fa4d575396365777828198c/coverage-7.14.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:62fd185ef9df3c33d1c8178c5af105f762afbad96038de9a4ae100aa6297ca33", size = 252934, upload-time = "2026-05-26T20:39:49.872Z" }, + { url = "https://files.pythonhosted.org/packages/eb/fd/11c928cd6bdffc7074bb5965c173d9ebf517fb00205e1da524b98d29ef92/coverage-7.14.1-cp313-cp313-win32.whl", hash = "sha256:ab4af6352741a604c431c6072fce5bee33bf0f20dc7a56618d6bf6bb89e9810c", size = 222584, upload-time = "2026-05-26T20:39:51.68Z" }, + { url = "https://files.pythonhosted.org/packages/6f/92/fb416fc26d340dcba19518c418d6048e913186e17243982c5e435e41fa7a/coverage-7.14.1-cp313-cp313-win_amd64.whl", hash = "sha256:7af486dabe8954d03b087f0021540897afe084f04e16ff5579e08cc46f871416", size = 223394, upload-time = "2026-05-26T20:39:53.472Z" }, + { url = "https://files.pythonhosted.org/packages/73/c6/02d56e3867972f77d5036de924643f26c056e848f00452cafb4dbc3c29b4/coverage-7.14.1-cp313-cp313-win_arm64.whl", hash = "sha256:2224f89ffd0c5605ccce1ed7a584da162bc7c55f601ab1c946bc9de31a486b42", size = 222015, upload-time = "2026-05-26T20:39:55.374Z" }, + { url = "https://files.pythonhosted.org/packages/4d/9e/fcc77914050df73f7662fa1f00902774c79c075a8388ab334074574bf77e/coverage-7.14.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:de286598cc65d2b489411174b1faec2f5a7775fb3201fd925db2a76b4030f37d", size = 220733, upload-time = "2026-05-26T20:39:57.189Z" }, + { url = "https://files.pythonhosted.org/packages/f7/67/2963cbdaf5cbadec44efa3a1e39eaa1f02df4079585f05387607a221e126/coverage-7.14.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:042c46ded7c288aeb07cf14a28b6c1e10b78fcba40171c3fa1e939377eeef0b5", size = 221086, upload-time = "2026-05-26T20:39:59.019Z" }, + { url = "https://files.pythonhosted.org/packages/c8/c5/8701645574e11881f2f47d8930f98bc48b5d43b25eb5b4430dfc4a2f9f48/coverage-7.14.1-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:f4ddbe407477f04c45115d1a4e5bc480f753553b534d338d4c3358b1cdd0ea52", size = 262381, upload-time = "2026-05-26T20:40:00.822Z" }, + { url = "https://files.pythonhosted.org/packages/7c/28/7a64d73598263e0c5abd5084211a8474488d31b3c552ff531c719dfcff62/coverage-7.14.1-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:d13e6725992e2d2fd7d81d4f5241952d13740121dfd501da09201be39b2c003a", size = 264458, upload-time = "2026-05-26T20:40:02.506Z" }, + { url = "https://files.pythonhosted.org/packages/fa/d8/4969179db9f7eb4df218e69540adf829d1c835f59452513d065d15446802/coverage-7.14.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f747dc8edcfe740130f28f32f3995e955494285717e86ee25af51db2219df08a", size = 266884, upload-time = "2026-05-26T20:40:04.421Z" }, + { url = "https://files.pythonhosted.org/packages/a6/78/a45d5794dbc9bafd97afc96a4377c86c7820d78b6cf51b89bc1d4e919275/coverage-7.14.1-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ced2f09ef276fd58611a1ef502164ad266d2b75174e5a40cabbdb4033f9f6cf2", size = 268022, upload-time = "2026-05-26T20:40:06.298Z" }, + { url = "https://files.pythonhosted.org/packages/21/cb/4f5e354e9e3e67af96bd4e57113e6db6b22298c7168b13eec408a549903d/coverage-7.14.1-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b84800013769a78ccb9ef4659402e26d06867e337b61ec365f77ad008adea80e", size = 261631, upload-time = "2026-05-26T20:40:08.226Z" }, + { url = "https://files.pythonhosted.org/packages/ec/49/eced49af4cb996d5d8b7e94e736175c513e4facd3398507b89892b4326d8/coverage-7.14.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:ea8cd6ca0ee9f616aaef3afc6882e32c2cbf18b00d96313ffd76af650574034d", size = 264443, upload-time = "2026-05-26T20:40:10.137Z" }, + { url = "https://files.pythonhosted.org/packages/f1/d8/5603a88a7c5913a6b54f6cb1a8c46f7b39cbb30f27cd3f492908da09b2d7/coverage-7.14.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:aa5e304a873fabddc11e484e9b6b738bd38bd7bed17b09aa84eecf5332e8b8bb", size = 262069, upload-time = "2026-05-26T20:40:11.999Z" }, + { url = "https://files.pythonhosted.org/packages/f0/59/2ae3cb79da554a06c8619d6c88ea19dd1e4aed4b834b6a83bb1fa243bdc5/coverage-7.14.1-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:5a1c5215be81035e629d5bc756650634d0bf31991038db7a0eccb90f025ce16d", size = 265780, upload-time = "2026-05-26T20:40:13.858Z" }, + { url = "https://files.pythonhosted.org/packages/af/5f/b130c1dc999031f2648bd25317fbce505ad8d5562079b4ed81e736a84967/coverage-7.14.1-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:79058c47dae6788504b5effb319961bcd72d7240551464b91d474bc0ed186d69", size = 260970, upload-time = "2026-05-26T20:40:16.142Z" }, + { url = "https://files.pythonhosted.org/packages/87/d1/ec13ccddeb48ec963bdfa72a11224bac2584bd045ba13beca82f8113e9c7/coverage-7.14.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:370c5afae3fa0658e11694a32b24c2778f6bc2d17718121f94ee185e69f26b54", size = 263157, upload-time = "2026-05-26T20:40:18.382Z" }, + { url = "https://files.pythonhosted.org/packages/cf/c2/cd91ead503045161092d3845f7bb95ea2f25131ce96d3e314dd835d91b9c/coverage-7.14.1-cp313-cp313t-win32.whl", hash = "sha256:3758dd0a7f1fa57365ef2e781df0f0731d38b6e3772259d13dae4bd8a958d4b1", size = 223259, upload-time = "2026-05-26T20:40:20.381Z" }, + { url = "https://files.pythonhosted.org/packages/71/9f/1e28d97e6bd2c76b07f38b7c02870f1371255ff6717f54eca578fcbbdd0e/coverage-7.14.1-cp313-cp313t-win_amd64.whl", hash = "sha256:6ff665fb023a77386fe11685190cee1f60a7d635994a30d9b0a061533d470fce", size = 224320, upload-time = "2026-05-26T20:40:22.316Z" }, + { url = "https://files.pythonhosted.org/packages/a9/e0/d936e908f0e1efa55e52b91e01b52f1055cef5e1ab2718493390ed8e2fb8/coverage-7.14.1-cp313-cp313t-win_arm64.whl", hash = "sha256:17a5a241e5997621a956a7f402a7433ef4221e5152809b785bec79e2323799f1", size = 222577, upload-time = "2026-05-26T20:40:24.894Z" }, + { url = "https://files.pythonhosted.org/packages/d6/34/fc2f101b151af3799a101f0550b0454aa008afdc0add677394ec4aa8ea10/coverage-7.14.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:d5ed429d0b8edaac649e889b4ffcedb6c80b06629a3f93050e3dddfb99235bee", size = 220091, upload-time = "2026-05-26T20:40:27.249Z" }, + { url = "https://files.pythonhosted.org/packages/3d/a7/1ebae2ab5b961b5c79bb09fe7b3ac99edb190d8be4a8c510b2cf66f46468/coverage-7.14.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:8011224a62280e50dab346960c03cf47aca1a1e09e608c0fb33fd6e0cc8e9500", size = 220421, upload-time = "2026-05-26T20:40:30.084Z" }, + { url = "https://files.pythonhosted.org/packages/5e/90/92aca9cf0acc95123c96cd1eb1f08917897a7f5dee01e15738922971ec31/coverage-7.14.1-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:12c42ec1e14f553c4f817e989365982e646e27211f10a0f717855b94a79c8906", size = 251466, upload-time = "2026-05-26T20:40:32.542Z" }, + { url = "https://files.pythonhosted.org/packages/26/2b/78048cbe3b999f6cbf9cc0d90abba6a88a3e0863a8c1c6cbc762f3f8802f/coverage-7.14.1-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:06144cd511cf2624873a035c5069cf297144f6e77a73ee3d7a55b605ec5efb42", size = 253973, upload-time = "2026-05-26T20:40:34.473Z" }, + { url = "https://files.pythonhosted.org/packages/8e/21/c2e33b29d1cfde484a19d437afc343c6cd30b08d78cbbf9f5aff14e57b2b/coverage-7.14.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a311d8e1da24be5c1ccf85cbfb06315dbaa1703d5a1eab3f6432c72b837917c8", size = 255318, upload-time = "2026-05-26T20:40:38.154Z" }, + { url = "https://files.pythonhosted.org/packages/8e/ee/aad2f108d63b769121005302f16bf66db8625c88ceaba466942e09a2607e/coverage-7.14.1-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c79cead5b5bc584d9c71451cb984d0e3a84e0c0937379c8efcbf27c8d661b851", size = 257633, upload-time = "2026-05-26T20:40:40.164Z" }, + { url = "https://files.pythonhosted.org/packages/c2/f8/11a2c29b4fd76d9849f81d0bb812ec0017a9396df3217214e38934a8c837/coverage-7.14.1-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:dcbf65f1f66a26cdd88c35cf68fb4729c5d1cd2e88added72420541dfb212034", size = 251488, upload-time = "2026-05-26T20:40:42.631Z" }, + { url = "https://files.pythonhosted.org/packages/c9/b8/9a5820de4b8ac2b71d85e3b5fb49108d7469c665f0e2ad0dd7569023e305/coverage-7.14.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:fd86572566fb40189a8260446158235159bc7a82dfbc87a3b39cf4fb57fcec1c", size = 253329, upload-time = "2026-05-26T20:40:45.208Z" }, + { url = "https://files.pythonhosted.org/packages/6b/ff/f33e4823667e27548e8fd8df44217515303f9808d0ff29817db56f87d990/coverage-7.14.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:7771b601718fdde84832c3a434ca9bbf4ae9adbc49d84198b4110700c3c77c36", size = 251291, upload-time = "2026-05-26T20:40:47.502Z" }, + { url = "https://files.pythonhosted.org/packages/68/9b/489db0ebb209054766b90a9014a45f6d26eb724c02ec21311c3733b5a644/coverage-7.14.1-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:39b21e212c55af06fa375e3dbf90a8a8e38792f3a910c580066d23563830ddd5", size = 255564, upload-time = "2026-05-26T20:40:49.372Z" }, + { url = "https://files.pythonhosted.org/packages/27/b5/16bc2d4c2409b23c7737edb68c83bc89e345f378050549fe1d75ac7d34d5/coverage-7.14.1-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:f2302660e32562a532b442480121aef8aa61a5bdb20b30bf0adab29f10a5a4b4", size = 251107, upload-time = "2026-05-26T20:40:51.677Z" }, + { url = "https://files.pythonhosted.org/packages/7d/0c/2629997469a00cd069d588a41c9dc887610f2775ae89d250c4791e65272a/coverage-7.14.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:03a6f93c1ec3b7f2e77b5dbcc5573a2c21f12529a5c6bbe0f16f72303cc2fa4d", size = 252764, upload-time = "2026-05-26T20:40:54.267Z" }, + { url = "https://files.pythonhosted.org/packages/d2/ee/f78d63c8f079e0d7211c7e2401fa17e311514534ba61bae03e4b287ce4ab/coverage-7.14.1-cp314-cp314-win32.whl", hash = "sha256:8a3ce026d73290f42f08dafecbd82c193a74df280461fbf97300fec51fd133ee", size = 222837, upload-time = "2026-05-26T20:40:56.496Z" }, + { url = "https://files.pythonhosted.org/packages/dc/b9/be539854f93a70dfbeec69117f33ec70dc42ff0b65b5b07ab8d40d04228e/coverage-7.14.1-cp314-cp314-win_amd64.whl", hash = "sha256:114c95ef29302423b87d159075805f4ab973254a2638a5d7d046c94887cc87d7", size = 223650, upload-time = "2026-05-26T20:40:58.351Z" }, + { url = "https://files.pythonhosted.org/packages/fe/9e/24e2842fef40f35ac82ba3a7719c8023d011bf3bf652d0675316a9d088a1/coverage-7.14.1-cp314-cp314-win_arm64.whl", hash = "sha256:a07891c3f4805442b31b71e84ba3cf29ed1aa9a428284e06deeb4b23e5b46343", size = 222218, upload-time = "2026-05-26T20:41:00.321Z" }, + { url = "https://files.pythonhosted.org/packages/0a/1d/ac0a9df5fe31c1e8bdd658074905fc12844a05c1a7e3fdb8417e97c31e23/coverage-7.14.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:1101a5ebb083aecb625ebb6209d4105b58f647b093cb2dc8122d7b33f743cfe1", size = 220822, upload-time = "2026-05-26T20:41:02.281Z" }, + { url = "https://files.pythonhosted.org/packages/32/cf/f964fd9aff20323f9f1a726c97135f8a76bcd87b92dad141a456a43f3c64/coverage-7.14.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:851b9e1e4e8a4608e77c79714b2e77c0970d2ed7202a05e92ae407817481887b", size = 221084, upload-time = "2026-05-26T20:41:04.593Z" }, + { url = "https://files.pythonhosted.org/packages/d8/5e/7e5ef2aba844de2b80d678619fcf0841b42e3f37f16411226f3fe4c1016f/coverage-7.14.1-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:d5b89cdfb2ee051b71e8c3c70bd81a9eff81100f736a269136fe1a68efe00474", size = 262454, upload-time = "2026-05-26T20:41:06.641Z" }, + { url = "https://files.pythonhosted.org/packages/64/62/75809bded87015cc4935524218a2a8ed8dd1a8498bfed30a2f4f7a4b4d34/coverage-7.14.1-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:0177614a0370f227888b4e436a7c55686d6a9f90eb1ade2b624ba685a1686e86", size = 264578, upload-time = "2026-05-26T20:41:08.556Z" }, + { url = "https://files.pythonhosted.org/packages/f3/42/d33392dc14633525012d2d504fa1a33b05538bf535f5c1d64675e5754b78/coverage-7.14.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2d69af5dea2de76fc485a83032a630523f985198b7e25be901ec60181587b01e", size = 266981, upload-time = "2026-05-26T20:41:10.824Z" }, + { url = "https://files.pythonhosted.org/packages/2a/49/0157c4428c2aca7f1e09d5565930586fd5ae36f1655f08b0daa7cf1fcae1/coverage-7.14.1-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:35ab22d91de736e8966b980dc355cbcdd2c6dbbcfe275f9a2991bc8a91b3df65", size = 268112, upload-time = "2026-05-26T20:41:12.966Z" }, + { url = "https://files.pythonhosted.org/packages/96/26/86b9ce71f4092b1ed325ce1421698081df1286b833400b6836912834d6e0/coverage-7.14.1-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:357d4e32935c36588aaba057d734fa32428c360c9fc2e4442afbf1b646beee6e", size = 261558, upload-time = "2026-05-26T20:41:15Z" }, + { url = "https://files.pythonhosted.org/packages/20/4c/c311210c5472cf5401d8422b0d7812cdd520f24417673afabda6c323faca/coverage-7.14.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:51bd64741cc6fa065abd300ede1afe5a5291ece9c31da8b24884deda48bcc3f8", size = 264447, upload-time = "2026-05-26T20:41:17.369Z" }, + { url = "https://files.pythonhosted.org/packages/fb/71/59513f8710ed3e6b0ac0a050a5b7e977bb9c9e880354863b5d00d8809256/coverage-7.14.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:9132cd363a68a4c3daa7c8704a654b1e39d3360f6f5b8ddd470608a945236c07", size = 262048, upload-time = "2026-05-26T20:41:19.309Z" }, + { url = "https://files.pythonhosted.org/packages/84/8d/bceed32dc494f5bbf50f775cd2e78ca814953942b5ea28d3c1c3ac316f14/coverage-7.14.1-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:07c6290b1697b862c0478eab545eec949a0d0e4d6d03497f446d706da3b4f2de", size = 265781, upload-time = "2026-05-26T20:41:21.559Z" }, + { url = "https://files.pythonhosted.org/packages/e7/c5/9348fe40dbfd4991aaf78df2c6c3098bfb2cc834d1fd362a64b4efef855a/coverage-7.14.1-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:5ea0c297e27133853b4d8a3eb799bff5a2dbd9f2f41537a240d337ac9b4df890", size = 260896, upload-time = "2026-05-26T20:41:23.428Z" }, + { url = "https://files.pythonhosted.org/packages/ca/92/1ea0f03929da7cf87206b1fa24f4c8e9c158be0455481af29ec0a1f3503f/coverage-7.14.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:01b7733daad0237daa01ef80fe2dfceffc911e6a17fa7b55d14aa8214eaaaecd", size = 263214, upload-time = "2026-05-26T20:41:25.419Z" }, + { url = "https://files.pythonhosted.org/packages/f6/a9/b2493c054c0e01a643266742ab45e15744e60743f9260cd930c7142b1124/coverage-7.14.1-cp314-cp314t-win32.whl", hash = "sha256:6adc5a36984624a70bf11d7184e20fa0a49aa7c47ffab43804106a1a695ea22e", size = 223624, upload-time = "2026-05-26T20:41:27.795Z" }, + { url = "https://files.pythonhosted.org/packages/fc/bd/3e1e6a57fccd2d7c83fcdf338e93ba98eb85c6e877dd34731ac585375490/coverage-7.14.1-cp314-cp314t-win_amd64.whl", hash = "sha256:ddf799247318f34dbcd2efa8c95a8d0642674e926bb1774cf9b63dfd2a389d1c", size = 224728, upload-time = "2026-05-26T20:41:30.098Z" }, + { url = "https://files.pythonhosted.org/packages/bb/d7/31066cf1d2f0c6c797fce911bcfa01dd35642dc6da992a950256097c5860/coverage-7.14.1-cp314-cp314t-win_arm64.whl", hash = "sha256:145986fe66647eb489f18d9a997567a3fd358584c4b5a808769113abc07466af", size = 222752, upload-time = "2026-05-26T20:41:32.123Z" }, + { url = "https://files.pythonhosted.org/packages/8a/3c/1a983b9a745d7f83d53f057bcc5bf79ba6a2bbc08266b3f0c7d6fe630c9b/coverage-7.14.1-py3-none-any.whl", hash = "sha256:a252f21c27e38347e60111a3266b03827422a7d5525951aceee313aa68bab1d2", size = 211815, upload-time = "2026-05-26T20:41:34.078Z" }, +] + +[package.optional-dependencies] +toml = [ + { name = "tomli", marker = "python_full_version <= '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, +] + +[[package]] +name = "cryptography" +version = "48.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "(platform_python_implementation != 'PyPy' and sys_platform != 'darwin') or (platform_python_implementation != 'PyPy' and extra != 'extra-13-torchpfaffian-cpu') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "typing-extensions", marker = "(python_full_version < '3.11' and sys_platform != 'darwin') or (python_full_version < '3.11' and extra != 'extra-13-torchpfaffian-cpu') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/12/45/870e7f4bef50e5f53b9f51d4428aee5290eedf58ba443f16b1ebb7ab8e66/cryptography-48.0.1.tar.gz", hash = "sha256:266f4ee051abb2f725b74ef8072b521ce1feacf685a3364fa6a6b45548db791a", size = 832989, upload-time = "2026-06-09T22:32:31.8Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1b/bc/ee4137cbbe105652c0ee4252792b78fc8e7afa4b8e61d9d5dc05a7f45731/cryptography-48.0.1-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:3e4a1a3232eef2e6c732827d5722db29a0cc8b27af2a4d865b094cf954be9ca1", size = 8008324, upload-time = "2026-06-09T22:31:00.702Z" }, + { url = "https://files.pythonhosted.org/packages/d5/85/6379d42181bfc713094f081360fc5784d6c816b599d45e7f082502d173ce/cryptography-48.0.1-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:32143b24adb918f078134e1e230f1eb8cc04886b92c28b5f0041aaf3e5699225", size = 4696243, upload-time = "2026-06-09T22:32:33.446Z" }, + { url = "https://files.pythonhosted.org/packages/9c/87/c85d147b53323c7eb4d850920c8901377323c2a0ff8d79c262d4fee89aa2/cryptography-48.0.1-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f0d27a5696721ef7a672b8c810f6aded391058e0b9486e63e6d93baf765da691", size = 4713235, upload-time = "2026-06-09T22:31:40.141Z" }, + { url = "https://files.pythonhosted.org/packages/79/58/67cbf8cf1ee7c54b439ca07bbecf8362c07afc11a3724fea70f745784add/cryptography-48.0.1-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:eb86ce1af36fe65041b6db9a8bb064ee621a7e5fded0f80d475ec243477cd242", size = 4702323, upload-time = "2026-06-09T22:31:42.191Z" }, + { url = "https://files.pythonhosted.org/packages/89/c6/24266ac10c47f6cd2a865f4446062b466da1d1f10b27189eac00e61bf0c9/cryptography-48.0.1-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:b024e784ad6c077ee0147b35ea9cbfc1e34e1fd4c1dcca214c2794d73a12df08", size = 5300085, upload-time = "2026-06-09T22:31:58.703Z" }, + { url = "https://files.pythonhosted.org/packages/d2/bb/cc4b78784f97efc8c5874c2a9743708d172be6663024b34a0467885ae0c8/cryptography-48.0.1-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3752f2dbc8f07a30aad2932c986cea495b03bb554887828225da104f732852b6", size = 4746137, upload-time = "2026-06-09T22:31:31.01Z" }, + { url = "https://files.pythonhosted.org/packages/1f/52/0c44de3f5267f8fbe8e835138017522a333436166e406f0db9b9e6e3033f/cryptography-48.0.1-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:bd81490cd5801d755cf97bb68ac191f14b708470b1c7cf4580f669b9c9264cd8", size = 4333867, upload-time = "2026-06-09T22:32:28.096Z" }, + { url = "https://files.pythonhosted.org/packages/9a/2e/772d7adbfa931537bc401640b7cac9976bff689bda187833e5d63b428e49/cryptography-48.0.1-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:66fd0771e7b9c6dcd44cf1120690d2338d16d72795cf40cae2786a39eba65429", size = 4701805, upload-time = "2026-06-09T22:31:38.284Z" }, + { url = "https://files.pythonhosted.org/packages/f8/a3/b06844f303873493c963caf581c04df31c7035e0c1b0f02c4814d319ec80/cryptography-48.0.1-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:3fd2ca57062b241c856670b073487d2e86c4637937ca5601e48f97bf8e11fc8f", size = 5258461, upload-time = "2026-06-09T22:31:04.187Z" }, + { url = "https://files.pythonhosted.org/packages/9f/13/8b765e2e12b07c74941caadb9d1c8fdc006c4dfbf2b8f2d610519758954d/cryptography-48.0.1-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:0ee6ea481db1ab889cba043ec1eda17bb9c1ea79db6722f779c3667f9f70322f", size = 4745488, upload-time = "2026-06-09T22:32:30.07Z" }, + { url = "https://files.pythonhosted.org/packages/2e/aa/48972bce55049b32a94f4907eda4d75fa385aad8a39506cc2fc72196ecf0/cryptography-48.0.1-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:f2ceef93cb096aa3c4cc4b5c94ca6131f9196d28c64d6111533402a9b2054d41", size = 4830256, upload-time = "2026-06-09T22:31:43.868Z" }, + { url = "https://files.pythonhosted.org/packages/47/a2/e5079a032fb85cf6005046ca92bbd78b0c82dad2b5751ab8c311659da06f/cryptography-48.0.1-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:9bd3f92d76217892b15df84ca256c2c113d386fdda7a7d8691aeeced976507c6", size = 4979117, upload-time = "2026-06-09T22:31:05.845Z" }, + { url = "https://files.pythonhosted.org/packages/b7/a0/8f50cae9c74e718ed769d63ed5c74bd0ea830c9550a74629cebd1b9c7bc7/cryptography-48.0.1-cp311-abi3-win32.whl", hash = "sha256:b9a32b876490d66c8bcc9963ef220199569748434ab01a9d6aaeabf88e7f5158", size = 3304154, upload-time = "2026-06-09T22:32:16.845Z" }, + { url = "https://files.pythonhosted.org/packages/c5/69/0572c77dbace6fef72f33755bd52ea399c71367250d366237f8691826b9e/cryptography-48.0.1-cp311-abi3-win_amd64.whl", hash = "sha256:39489bfca54c7a1f6b297efcd8bc608ab92d16c4ca631b0cad4da46724588b24", size = 3817138, upload-time = "2026-06-09T22:32:00.388Z" }, + { url = "https://files.pythonhosted.org/packages/42/06/3e768b4c3bc78201583fa35a0e18f640dd782ff41afba88f8545481a8874/cryptography-48.0.1-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:f817adc181390bd54f2f700107a7419040fb7c1bdf2fc26f36551a06a68c3345", size = 7989830, upload-time = "2026-06-09T22:31:07.8Z" }, + { url = "https://files.pythonhosted.org/packages/8a/13/6476736484b94041110c8340a3eb63962fea4975baea8cb4a512adb44d4d/cryptography-48.0.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d5d30989c6917b478b5817902e85fddaea2261efa8648383d965381ccb9e1ac4", size = 4689201, upload-time = "2026-06-09T22:31:09.745Z" }, + { url = "https://files.pythonhosted.org/packages/79/62/65a87f34d2a431546e2509b85d55e8c90df86d668f6731da64d538512ac2/cryptography-48.0.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:df637c05205ea7c1d7fbcbe54bbfea648a52951155f997af13d895d0ecc96991", size = 4702822, upload-time = "2026-06-09T22:32:24.409Z" }, + { url = "https://files.pythonhosted.org/packages/7f/59/810b5204b0a9b10f4b6bc06bd551a8b609803cd931806bc3b71884b225e5/cryptography-48.0.1-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:869c3b8a53bfe27147832df48b32adadf558249d50e76cb3769d40e986b13265", size = 4694875, upload-time = "2026-06-09T22:32:08.737Z" }, + { url = "https://files.pythonhosted.org/packages/24/dc/d8ca05ffea724eec6d232ea6f18e74c269eb6bdfdcc9bfba689790d1325f/cryptography-48.0.1-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:e361afba8918070d376df76f408a4f67fec0ee9cff81a99e48fe9a233ef59e17", size = 5290385, upload-time = "2026-06-09T22:31:15.212Z" }, + { url = "https://files.pythonhosted.org/packages/03/8c/3be6cb4da181f5bb6c19cf560c2359d60644a6b5fc5b57854e528f47b296/cryptography-48.0.1-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:d069066deead00ac7f090be101be875a06855908f7ec004c27b8fefb4acfb411", size = 4737082, upload-time = "2026-06-09T22:32:22.66Z" }, + { url = "https://files.pythonhosted.org/packages/aa/f6/d5f60a5a1434dbfd949e227fd0065d194c7e6b6ac526b17f5c06152b8231/cryptography-48.0.1-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:09f73a725d582cef64b91281a322cd798d14a33b2b6f2b7ad9531dc336d84c02", size = 4325328, upload-time = "2026-06-09T22:32:10.777Z" }, + { url = "https://files.pythonhosted.org/packages/17/b7/ba75dd947a14b6ad907b01ae8f6b5b348cdd1b48142f0063dee9e20c1d9d/cryptography-48.0.1-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:15254441469dd6bf027039453288e2072124f8b6603563f5d759e1c9b69273fa", size = 4694530, upload-time = "2026-06-09T22:31:53.105Z" }, + { url = "https://files.pythonhosted.org/packages/62/29/50d6b9e8aff12d8b67afaeb3569335e32dc83a5723e3bbded24fdac9f809/cryptography-48.0.1-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:8ace4507d1e6533c125f4fac754f8bb8b6a74c08e92179dabd7e16571a3efbf3", size = 5245046, upload-time = "2026-06-09T22:31:25.774Z" }, + { url = "https://files.pythonhosted.org/packages/9f/04/618f4115cfc0add0838c82507aa18a346089428da8653ad38b3ff36f5cb3/cryptography-48.0.1-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:b4e391975f038e66432328639620a4aff2d307513b004f1ca06d6225bced815c", size = 4736660, upload-time = "2026-06-09T22:32:12.676Z" }, + { url = "https://files.pythonhosted.org/packages/24/9c/06e062462a0de28a3b3911322eded4c16deb9f441b1b7575d3dc59488ab5/cryptography-48.0.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:42fcd8e26fe555d9b3577a135f5091fefa0aa4e99129c23fb56787a1bd4ada72", size = 4822229, upload-time = "2026-06-09T22:31:17.062Z" }, + { url = "https://files.pythonhosted.org/packages/f4/be/0561971eaaee4b8a0e7d5113c536921063ab91aaf23278ac374eaf881e11/cryptography-48.0.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c1400da5e32a43253392277eac7490a60e497d810a63dd5608d71bbd7af507c9", size = 4966364, upload-time = "2026-06-09T22:31:32.842Z" }, + { url = "https://files.pythonhosted.org/packages/a4/27/728c77876f12b000820b69ae490f3c4083775e79e07827e9e60be07ad209/cryptography-48.0.1-cp314-cp314t-win32.whl", hash = "sha256:0df56b056bc17c1b7d6821dfa65216e62bd232d8ab05eb3db44e71d235651471", size = 3278498, upload-time = "2026-06-09T22:31:29.154Z" }, + { url = "https://files.pythonhosted.org/packages/06/e3/79a612c6d7b1e6ee0edd43633d53035bec2cfb78c82b76f7864f39e36f34/cryptography-48.0.1-cp314-cp314t-win_amd64.whl", hash = "sha256:9de21387aa95e2a895823d0745b430bed4f33503ba9ab5e0b5311f33e37d66d2", size = 3798790, upload-time = "2026-06-09T22:31:56.697Z" }, + { url = "https://files.pythonhosted.org/packages/ca/6c/00fa2a95997164c8b2072ce327c23d4ab20809ccc323ea5fab91e53a4bba/cryptography-48.0.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:4fdc69f8e4316bcf0c8c8ec1f26f285d12e8142d88d96c876a59a03be3f6ae67", size = 7987408, upload-time = "2026-06-09T22:32:20.777Z" }, + { url = "https://files.pythonhosted.org/packages/b0/d9/45f309a7e4e5f3f8f121d6d3be9e94024a7726ec598d6e08ae04edb2f04d/cryptography-48.0.1-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:48fe40804d4caa2288f24e70ca8c64c42dd826da0ad7e4f1b41b2128d679e6c8", size = 4690196, upload-time = "2026-06-09T22:31:54.74Z" }, + { url = "https://files.pythonhosted.org/packages/5f/9f/a1bc8bcc798811b8527eb374bbccf30a3f3e806829d967118222bf1125eb/cryptography-48.0.1-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:86be3b1b0b6bf09482fb50a979c508d2950ed95f5621ec77f4e385962006b83a", size = 4696782, upload-time = "2026-06-09T22:31:45.615Z" }, + { url = "https://files.pythonhosted.org/packages/66/c2/81a4fb4e4373c500bb526bc337ac5719dd31dd15b970b84a238168c6aa08/cryptography-48.0.1-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:4ab0a343c807bbcd90c971cd1ecf072937cd01847a9e002bef88fb47ac6be577", size = 4696618, upload-time = "2026-06-09T22:31:11.564Z" }, + { url = "https://files.pythonhosted.org/packages/e5/0b/aa68b221dde92d09cb29a024ede17550ee21e77a404e59fc093c82bb51e1/cryptography-48.0.1-cp39-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:9621de99d2da096006b629979efd8ae7eb2d8b822488d0c89ee4000c306c59b1", size = 5289970, upload-time = "2026-06-09T22:31:20.368Z" }, + { url = "https://files.pythonhosted.org/packages/78/13/fba657f958d2af66ea959a4ba01212632089249d34af1ae48054136344d7/cryptography-48.0.1-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:88c852a0ae366e262e5a1744b685e6a433dc8788dd2a277e418bf4904203609d", size = 4731873, upload-time = "2026-06-09T22:31:22.253Z" }, + { url = "https://files.pythonhosted.org/packages/4c/4c/9a964756d24a26b3e34dfcb16f961b89838786e6700b635b0d1e3adff4b6/cryptography-48.0.1-cp39-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:43c5835e2cb98c8733d86f57d6fc879b613f5c3478607281c3e36daffc6dd8a6", size = 4330804, upload-time = "2026-06-09T22:31:36.56Z" }, + { url = "https://files.pythonhosted.org/packages/4b/0f/a10f3a6eb12950a10e3a874070283aa2dd5875b2bfd15fad8a3e17b3f13e/cryptography-48.0.1-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:fe0180af5bf9236518a087e35bf2d9a347d5f5f51e63c579d683ddff424e3d46", size = 4696217, upload-time = "2026-06-09T22:31:13.351Z" }, + { url = "https://files.pythonhosted.org/packages/f3/6f/5cd12f951165ea73ef85266775d97e4c763b2474ccfd816dd69d3a18d6f8/cryptography-48.0.1-cp39-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:b7a2d1a937a738a881737cec135a38bb61470589b17515b9f73f571d0ae10401", size = 5245252, upload-time = "2026-06-09T22:32:02.193Z" }, + { url = "https://files.pythonhosted.org/packages/68/ab/8aaa12e4516ec4464033ab79b6f3b592bd5a92102467c4ace8a0d970203f/cryptography-48.0.1-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:b74ca3b8e5ecdd833bf6a002ca41b4793bb27fb8f1c06ffaf2643c9e9140e31b", size = 4731388, upload-time = "2026-06-09T22:32:04.019Z" }, + { url = "https://files.pythonhosted.org/packages/1b/24/50027ea4dca85ec1f40688f3c24fb32ccacd520583c9592c3cc95628e6fb/cryptography-48.0.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2c37f2461406063b417837f5f3daab668652acd82423efcd7f0a9f04be972de1", size = 4824186, upload-time = "2026-06-09T22:32:18.707Z" }, + { url = "https://files.pythonhosted.org/packages/52/41/04cb5eb17085ade6f50cc611fb657df6a0f5885350de8764ece89c050197/cryptography-48.0.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:86fe77abb1bd87afb251d4d02ada7ecf53a32cee9b67d976abb2e45a13297475", size = 4964539, upload-time = "2026-06-09T22:31:18.793Z" }, + { url = "https://files.pythonhosted.org/packages/36/bf/ed70785c496e89d7e73b7cda2d21f2447fd6d4e821714b8d04ff217fed92/cryptography-48.0.1-cp39-abi3-win32.whl", hash = "sha256:6b2c0c3e6ccf3ade7750f836ef3ee36eea250cc467d45c256895573ac08cc6f1", size = 3282307, upload-time = "2026-06-09T22:30:53.162Z" }, + { url = "https://files.pythonhosted.org/packages/b3/ff/371ea7d252656ee1eb6d83eeeef3d1d0c6baf1d6497687d081ea03814670/cryptography-48.0.1-cp39-abi3-win_amd64.whl", hash = "sha256:9a49ca6c81417f6a5edb50375a60cccdd70fa0a91a5211829dbea74eba94d2ac", size = 3793408, upload-time = "2026-06-09T22:32:15.191Z" }, + { url = "https://files.pythonhosted.org/packages/a9/d3/eb4e394e587341fdad09a09101fa76478ead3a78b0ad63e55c22f0d75c02/cryptography-48.0.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:08a597acce1ff37f347400087776599e2348a3a8bc53b44120e463cd274efe4a", size = 3951747, upload-time = "2026-06-09T22:31:23.871Z" }, + { url = "https://files.pythonhosted.org/packages/e0/4a/3f43451b4f858bfceaaaffc649e6e787e8d4fb332a1d443af39ab02cc8f1/cryptography-48.0.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:735824ec41b7f74a7c45fb1591349333e4c696cb6c044e5f46356e560143e4cd", size = 4641226, upload-time = "2026-06-09T22:31:02.532Z" }, + { url = "https://files.pythonhosted.org/packages/73/4e/855584c2c23b09e4ce2d3b9c30e983e679cd60b068c513c6bbdb91e11782/cryptography-48.0.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:92a46e1d638daa264ba2971c0b0489c9409787943efae4d60ffda3d091ef832c", size = 4668958, upload-time = "2026-06-09T22:32:06.213Z" }, + { url = "https://files.pythonhosted.org/packages/42/3b/d35750e41d803d1e516fd6d6011f065424924da7af1748cef4cc9cb3ede1/cryptography-48.0.1-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:7e234ac052af99f2700826a5c29ea99d9c1b1f80341cde62d11c8154dc8e0bd9", size = 4640793, upload-time = "2026-06-09T22:32:26.331Z" }, + { url = "https://files.pythonhosted.org/packages/ca/aa/cdb7181fe865285e87e96825aaab239400f1de0c3bfba9bd9769b79f1a92/cryptography-48.0.1-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:33842cf0888951cef5bc7ac724ab844a42044c1727b967b7f8997289a0464f92", size = 4668505, upload-time = "2026-06-09T22:31:27.534Z" }, + { url = "https://files.pythonhosted.org/packages/5d/8c/ce3823c06c2804f194f9e64f0d67fa3f4094a39f2bb1a990cd03603af8fc/cryptography-48.0.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:6184ca7b174f28d7c703f1290d4b297217c45355f77a98f67e9b7f14549ac54a", size = 3742204, upload-time = "2026-06-09T22:31:34.773Z" }, +] + +[[package]] +name = "cuda-bindings" +version = "12.9.4" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", + "python_full_version < '3.11'", +] +dependencies = [ + { name = "cuda-pathfinder", marker = "extra == 'extra-13-torchpfaffian-cu128' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/37/31/bfcc870f69c6a017c4ad5c42316207fc7551940db6f3639aa4466ec5faf3/cuda_bindings-12.9.4-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a022c96b8bd847e8dc0675523431149a4c3e872f440e3002213dbb9e08f0331a", size = 11800959, upload-time = "2025-10-21T14:51:26.458Z" }, + { url = "https://files.pythonhosted.org/packages/7a/d8/b546104b8da3f562c1ff8ab36d130c8fe1dd6a045ced80b4f6ad74f7d4e1/cuda_bindings-12.9.4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4d3c842c2a4303b2a580fe955018e31aea30278be19795ae05226235268032e5", size = 12148218, upload-time = "2025-10-21T14:51:28.855Z" }, + { url = "https://files.pythonhosted.org/packages/b5/1e/9c8ed3f3dbed7b7d038805fdc65cbc65fda9983e84437778a9571e7092bc/cuda_bindings-12.9.4-cp310-cp310-win_amd64.whl", hash = "sha256:f69107389e6b9948969bfd0a20c4f571fd1aefcfb1d2e1b72cc8ba5ecb7918ab", size = 11464568, upload-time = "2025-10-21T14:51:31.454Z" }, + { url = "https://files.pythonhosted.org/packages/a9/2b/ebcbb60aa6dba830474cd360c42e10282f7a343c0a1f58d24fbd3b7c2d77/cuda_bindings-12.9.4-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a6a429dc6c13148ff1e27c44f40a3dd23203823e637b87fd0854205195988306", size = 11840604, upload-time = "2025-10-21T14:51:34.565Z" }, + { url = "https://files.pythonhosted.org/packages/45/e7/b47792cc2d01c7e1d37c32402182524774dadd2d26339bd224e0e913832e/cuda_bindings-12.9.4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c912a3d9e6b6651853eed8eed96d6800d69c08e94052c292fec3f282c5a817c9", size = 12210593, upload-time = "2025-10-21T14:51:36.574Z" }, + { url = "https://files.pythonhosted.org/packages/dd/be/90d32049e06abcfba4b2e7df1dbcb5e16215c8852eef0cd8b25f38a66bd4/cuda_bindings-12.9.4-cp311-cp311-win_amd64.whl", hash = "sha256:443b0875916879c2e4c3722941e25e42d5ab9bcbf34c9e83404fb100fa1f6913", size = 11490933, upload-time = "2025-10-21T14:51:38.792Z" }, + { url = "https://files.pythonhosted.org/packages/0c/c2/65bfd79292b8ff18be4dd7f7442cea37bcbc1a228c1886f1dea515c45b67/cuda_bindings-12.9.4-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:694ba35023846625ef471257e6b5a4bc8af690f961d197d77d34b1d1db393f56", size = 11760260, upload-time = "2025-10-21T14:51:40.79Z" }, + { url = "https://files.pythonhosted.org/packages/a9/c1/dabe88f52c3e3760d861401bb994df08f672ec893b8f7592dc91626adcf3/cuda_bindings-12.9.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fda147a344e8eaeca0c6ff113d2851ffca8f7dfc0a6c932374ee5c47caa649c8", size = 12151019, upload-time = "2025-10-21T14:51:43.167Z" }, + { url = "https://files.pythonhosted.org/packages/df/6b/9c1b1a6c01392bfdd758e9486f52a1a72bc8f49e98f9355774ef98b5fb4e/cuda_bindings-12.9.4-cp312-cp312-win_amd64.whl", hash = "sha256:696ca75d249ddf287d01b9a698b8e2d8a05046495a9c051ca15659dc52d17615", size = 11586961, upload-time = "2025-10-21T14:51:45.394Z" }, + { url = "https://files.pythonhosted.org/packages/05/8b/b4b2d1c7775fa403b64333e720cfcfccef8dcb9cdeb99947061ca5a77628/cuda_bindings-12.9.4-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cf8bfaedc238f3b115d957d1fd6562b7e8435ba57f6d0e2f87d0e7149ccb2da5", size = 11570071, upload-time = "2025-10-21T14:51:47.472Z" }, + { url = "https://files.pythonhosted.org/packages/63/56/e465c31dc9111be3441a9ba7df1941fe98f4aa6e71e8788a3fb4534ce24d/cuda_bindings-12.9.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:32bdc5a76906be4c61eb98f546a6786c5773a881f3b166486449b5d141e4a39f", size = 11906628, upload-time = "2025-10-21T14:51:49.905Z" }, + { url = "https://files.pythonhosted.org/packages/05/d0/d0e4e2e047d8e899f023fa15ad5e9894ce951253f4c894f1cd68490fdb14/cuda_bindings-12.9.4-cp313-cp313-win_amd64.whl", hash = "sha256:a2e82c8985948f953c2be51df45c3fe11c812a928fca525154fb9503190b3e64", size = 11556719, upload-time = "2025-10-21T14:51:52.248Z" }, + { url = "https://files.pythonhosted.org/packages/ec/07/6aff13bc1e977e35aaa6b22f52b172e2890c608c6db22438cf7ed2bf43a6/cuda_bindings-12.9.4-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3adf4958dcf68ae7801a59b73fb00a8b37f8d0595060d66ceae111b1002de38d", size = 11566797, upload-time = "2025-10-21T14:51:54.581Z" }, + { url = "https://files.pythonhosted.org/packages/a3/84/1e6be415e37478070aeeee5884c2022713c1ecc735e6d82d744de0252eee/cuda_bindings-12.9.4-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:56e0043c457a99ac473ddc926fe0dc4046694d99caef633e92601ab52cbe17eb", size = 11925991, upload-time = "2025-10-21T14:51:56.535Z" }, + { url = "https://files.pythonhosted.org/packages/4d/3c/972edfddb4ae8a9fccd3c3766ed47453b6f805b6026b32f10209dd4b8ad4/cuda_bindings-12.9.4-cp313-cp313t-win_amd64.whl", hash = "sha256:b32d8b685f0e66f5658bcf4601ef034e89fc2843582886f0a58784a4302da06c", size = 11894363, upload-time = "2025-10-21T14:51:58.633Z" }, + { url = "https://files.pythonhosted.org/packages/1e/b5/96a6696e20c4ffd2b327f54c7d0fde2259bdb998d045c25d5dedbbe30290/cuda_bindings-12.9.4-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1f53a7f453d4b2643d8663d036bafe29b5ba89eb904c133180f295df6dc151e5", size = 11624530, upload-time = "2025-10-21T14:52:01.539Z" }, + { url = "https://files.pythonhosted.org/packages/d1/af/6dfd8f2ed90b1d4719bc053ff8940e494640fe4212dc3dd72f383e4992da/cuda_bindings-12.9.4-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8b72ee72a9cc1b531db31eebaaee5c69a8ec3500e32c6933f2d3b15297b53686", size = 11922703, upload-time = "2025-10-21T14:52:03.585Z" }, + { url = "https://files.pythonhosted.org/packages/e6/87/652796522cc1a7af559460e1ce59b642e05c1468b9c08522a9a096b4cf04/cuda_bindings-12.9.4-cp314-cp314-win_amd64.whl", hash = "sha256:53a10c71fdbdb743e0268d07964e5a996dd00b4e43831cbfce9804515d97d575", size = 11517716, upload-time = "2025-10-21T14:52:06.013Z" }, + { url = "https://files.pythonhosted.org/packages/39/73/d2fc40c043bac699c3880bf88d3cebe9d88410cd043795382826c93a89f0/cuda_bindings-12.9.4-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:20f2699d61d724de3eb3f3369d57e2b245f93085cab44fd37c3bea036cea1a6f", size = 11565056, upload-time = "2025-10-21T14:52:08.338Z" }, + { url = "https://files.pythonhosted.org/packages/6c/19/90ac264acc00f6df8a49378eedec9fd2db3061bf9263bf9f39fd3d8377c3/cuda_bindings-12.9.4-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d80bffc357df9988dca279734bc9674c3934a654cab10cadeed27ce17d8635ee", size = 11924658, upload-time = "2025-10-21T14:52:10.411Z" }, + { url = "https://files.pythonhosted.org/packages/ab/52/a30f46e822bfa6b4a659d1e8de8c4a4adf908ea075dac568b55362541bd8/cuda_bindings-12.9.4-cp314-cp314t-win_amd64.whl", hash = "sha256:53e11991a92ff6f26a0c8a98554cd5d6721c308a6b7bfb08bebac9201e039e43", size = 12055608, upload-time = "2025-10-21T14:52:12.335Z" }, +] + +[[package]] +name = "cuda-bindings" +version = "13.0.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", + "python_full_version < '3.11'", +] +dependencies = [ + { name = "cuda-pathfinder", marker = "(extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra != 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/98/0666ee759cd2e5306f911cbc95d2c6c814326906ed6b9c09e817a4b4a7c8/cuda_bindings-13.0.3-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d56e46a9e984bb754e56b9d060cf027fe99f08a97651ce6d8aa1c2032476d01e", size = 11762523, upload-time = "2025-10-21T15:08:45.913Z" }, + { url = "https://files.pythonhosted.org/packages/e1/36/2b2a43c8a6f8d8ff7a5ec7de1357ba3f1438ea69281c9deb90df29d55d56/cuda_bindings-13.0.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c5f797ce534a303525259be0ae7ee9cfcf4f7874b22f1f9b8e85555509dccb83", size = 12136098, upload-time = "2025-10-21T15:08:48.233Z" }, + { url = "https://files.pythonhosted.org/packages/47/67/5de1d48189511114859a1a131193896f88271c067a64b1159787e2d9f89b/cuda_bindings-13.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:74307cea1feee6c32a6e27b42e77beb22cd21cff4b7764fd214fa6ff89f8bd69", size = 11106982, upload-time = "2025-10-21T15:08:50.433Z" }, + { url = "https://files.pythonhosted.org/packages/dc/67/9e171ee6359d4aabf2d8202802c85487cae6c2eb52b9352bb7754583802f/cuda_bindings-13.0.3-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:dfd66c25a133365c4f93e3396c38c64b04400ccafd18c3a889ae251a1bfabaa1", size = 11807212, upload-time = "2025-10-21T15:08:52.988Z" }, + { url = "https://files.pythonhosted.org/packages/3a/66/d7036d9e402e6b5b57877a7496aba3bf2a0090f4fa3f072743fce3373eba/cuda_bindings-13.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9afede5937474864aa794eb57399dbdf5d2b05427aadcac275209b0857528a61", size = 12198791, upload-time = "2025-10-21T15:08:55.687Z" }, + { url = "https://files.pythonhosted.org/packages/83/25/620ce2afb6ea6d5da89d98375c85641f691924eef574247f7f0dd99f8bee/cuda_bindings-13.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:fce6d6b162457475b35e1a259ab643e683d1d20a84459fea898782e2f1e10a3b", size = 11138783, upload-time = "2025-10-21T15:08:57.741Z" }, + { url = "https://files.pythonhosted.org/packages/61/3c/c33fd3aa5fcc89aa1c135e477a0561f29142ab5fe028ca425fc87f7f0a74/cuda_bindings-13.0.3-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b899e5a513c11eaa18648f9bf5265d8de2a93f76ef66a6bfca0a2887303965cd", size = 11709086, upload-time = "2025-10-21T15:09:00.005Z" }, + { url = "https://files.pythonhosted.org/packages/21/ac/6b34452a3836c9fbabcd360689a353409d15f500dd9d9ced7f837549e383/cuda_bindings-13.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cf41d9e69019939aa15296fa66ea7d3fdb8d2c6383f729f4b1156c8b37808a06", size = 12128303, upload-time = "2025-10-21T15:09:02.889Z" }, + { url = "https://files.pythonhosted.org/packages/a8/76/ad9cc2f0496886c37aefbc00256197a6043a3f04bbe959481e6908310afe/cuda_bindings-13.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:6b12ccd98f447aea9589d32caf9efda0c193994080752a60f790b646d519fe8c", size = 11237397, upload-time = "2025-10-21T15:09:05.421Z" }, + { url = "https://files.pythonhosted.org/packages/2f/36/41ccc303eb6be8ae82c5edd2ccae938876e8a794660e8bb96a193174a978/cuda_bindings-13.0.3-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fb16a7f769c9c67469add7a1d9f6c14dd44637f6921cb6b9eb82cb5015b35c3d", size = 11537064, upload-time = "2025-10-21T15:09:07.84Z" }, + { url = "https://files.pythonhosted.org/packages/ab/ac/699889100536f1b63779646291e74eefa818087a0974eb271314d850f5dc/cuda_bindings-13.0.3-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:512d0d803a5e47a8a42d5a34ce0932802bf72fe952fdb11ac798715a35c6e5cb", size = 11910447, upload-time = "2025-10-21T15:09:09.942Z" }, + { url = "https://files.pythonhosted.org/packages/8c/f9/a2f5910aaf21f4cd43f456ea80f47f1424eece5b8f063dac1980304b8ef0/cuda_bindings-13.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:dd83e8d79587e265b82d3e589ba6b061770537443dfb1bb4a74f755c8b13f62b", size = 11211659, upload-time = "2025-10-21T15:09:12.639Z" }, + { url = "https://files.pythonhosted.org/packages/11/67/9656e003f18c5b32e1a2496998b24f4355ec978c5f3639b0eb9f6d0ff83f/cuda_bindings-13.0.3-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c859e326c776a47e66c50386a10c84fe34291eb6e711610c9fd7cc27d446334f", size = 11522409, upload-time = "2025-10-21T15:09:14.674Z" }, + { url = "https://files.pythonhosted.org/packages/18/d8/a83379caa7c1bed4195e704c24467a6c07fe8e29c7055ccd4f00c5702363/cuda_bindings-13.0.3-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e675dbd009fb5e66d63fd13a8ff35f849120f01bcc4dafadbced3004605c3588", size = 11903148, upload-time = "2025-10-21T15:09:16.918Z" }, + { url = "https://files.pythonhosted.org/packages/7c/e0/ff1eeda06364df8c750843432ac6efb33a06df38261f0a1ceee59bb7dac2/cuda_bindings-13.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:193762306b6032c00a141fc38bcef92c6fb4d332fd2d6a550c7f950e7fd8acd8", size = 11543153, upload-time = "2025-10-21T15:09:19.252Z" }, + { url = "https://files.pythonhosted.org/packages/e8/99/0042dc5e98e3364480b1aaabc0f5c150d037825b264bba35ac7a883e46ee/cuda_bindings-13.0.3-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7c7e6e89cdfc9b34f16a065cc6ad6c4bab19ce5dcef8da3ace8ad10bda899fa0", size = 11594384, upload-time = "2025-10-21T15:09:21.938Z" }, + { url = "https://files.pythonhosted.org/packages/7a/c4/a931a90ce763bd7d587e18e73e4ce246b8547c78247c4f50ee24efc0e984/cuda_bindings-13.0.3-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e93866465e7ff4b7ebdf711cf9cd680499cd875f992058c68be08d4775ac233d", size = 11920899, upload-time = "2025-10-21T15:09:26.306Z" }, + { url = "https://files.pythonhosted.org/packages/14/3e/5725b2e5b9ac22bf19a50ec5f7611301ab6111c98ccf1b6b125fdaa71550/cuda_bindings-13.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:bd2364bc49925837ce18dda259c3a36e539977ca0297799a54891cae1d5213f5", size = 11160621, upload-time = "2025-10-21T15:09:28.7Z" }, + { url = "https://files.pythonhosted.org/packages/6f/2c/ec611e27ba48a9056f3b0610c5e27727e539f3905356cfe07acea18e772c/cuda_bindings-13.0.3-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ed06ef3507bd0aefb0da367e3d15676a8c7443bd68a88f298562d60b41078c20", size = 11521928, upload-time = "2025-10-21T15:09:30.714Z" }, + { url = "https://files.pythonhosted.org/packages/d4/2e/02cebf281ef5201b6bb9ea193b1a4d26e6233c46571cfb04c4a7dede12b9/cuda_bindings-13.0.3-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3ab845487ca2c14accdcb393a559a3070469ea4b591d05e6ef439471f47f3e24", size = 11902749, upload-time = "2025-10-21T15:09:32.688Z" }, + { url = "https://files.pythonhosted.org/packages/36/d2/088c28751f54df7a251259ef3f99d34c428e12653f15db02fd62a96247af/cuda_bindings-13.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:aaa0934e16aa20ec10fbb1ecc53a6961b8d1c06a970fe05cc6ee7d2a805a090f", size = 11697137, upload-time = "2025-10-21T15:09:35.232Z" }, +] + +[[package]] +name = "cuda-pathfinder" +version = "1.5.5" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/c8/26f2e4aae92f11522a96043892ba39a90eac610d5242523aa863212bc1c7/cuda_pathfinder-1.5.5-py3-none-any.whl", hash = "sha256:0228c023f95d1480f143ef5c8922d27a2ab052087a942e81dc289c9eb8f91689", size = 51671, upload-time = "2026-05-27T01:21:25.413Z" }, +] + +[[package]] +name = "cycler" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a9/95/a3dbbb5028f35eafb79008e7522a75244477d2838f38cbb722248dabc2a8/cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c", size = 7615, upload-time = "2023-10-07T05:32:18.335Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321, upload-time = "2023-10-07T05:32:16.783Z" }, +] + +[[package]] +name = "debugpy" +version = "1.8.21" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/aa/12037145b7a56eaa5b29b41872f7a21b538e807e13f32c4d3c46e59be084/debugpy-1.8.21.tar.gz", hash = "sha256:a3c53278e84c94e11bd87c53970ec391d1a67396c8b22609fcac576520e611a6", size = 1697577, upload-time = "2026-06-01T19:30:35.156Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fc/f3/6b1d4c71f4cbb5360009f928934a03b42906f28fc7b3f7f35f04e58acead/debugpy-1.8.21-cp310-cp310-macosx_15_0_x86_64.whl", hash = "sha256:8eeab7b5462f683452c57c0126aaa5ec4e974ddb705f39ba87dff8818c8e08f9", size = 2113873, upload-time = "2026-06-01T19:30:37.148Z" }, + { url = "https://files.pythonhosted.org/packages/1c/f2/17c3bf91cebc173bfbf5734cd2669723d0a35c0cf9d2fd2124546efeae83/debugpy-1.8.21-cp310-cp310-manylinux_2_34_x86_64.whl", hash = "sha256:0fddfdc130ac6d8bfc0415b0409822fa901c8f310e5c945ac5653a0352532344", size = 3004715, upload-time = "2026-06-01T19:30:38.888Z" }, + { url = "https://files.pythonhosted.org/packages/5a/22/1f8efd80c7b5909e760f9cfd0c9e8681d2d35d532f7c0a40760cd4da4a19/debugpy-1.8.21-cp310-cp310-win32.whl", hash = "sha256:72b5d676c4cbfac3bac5bb01c138a4656e843f93f03ce2a5f4e394ad49fbee73", size = 5303455, upload-time = "2026-06-01T19:30:40.52Z" }, + { url = "https://files.pythonhosted.org/packages/da/ce/54c79abd6cccef92fa7b43d97e3acafedf4d645557267ece05e948b5e4b8/debugpy-1.8.21-cp310-cp310-win_amd64.whl", hash = "sha256:a7fe47fd23da57b9e0bec3f4a8ee65a2dc55782455ed7f2141d75ab5d2eaeef5", size = 5331751, upload-time = "2026-06-01T19:30:42.146Z" }, + { url = "https://files.pythonhosted.org/packages/89/fb/cbf306d6e07a313a91e7171a98669054502840931432c227cfd505ee367f/debugpy-1.8.21-cp311-cp311-macosx_15_0_universal2.whl", hash = "sha256:da456226c7b4c69e35dbe35dcee6623d912000a77816db7856a41af1c72a0264", size = 2203120, upload-time = "2026-06-01T19:30:43.964Z" }, + { url = "https://files.pythonhosted.org/packages/aa/57/aa739bd4ad2cbf96aeb1b20b56918ddd5ae4c28b68709bfcd327f02123ee/debugpy-1.8.21-cp311-cp311-manylinux_2_34_x86_64.whl", hash = "sha256:f68b891688e61bdc08b8d364d919ff0051e0b94657b39dcd027bc3173edb7cdc", size = 3059958, upload-time = "2026-06-01T19:30:45.622Z" }, + { url = "https://files.pythonhosted.org/packages/a8/31/453d2c9a23d133fe2c8ec7ca1d816ded52a913487fe3ffef7c01b4b706af/debugpy-1.8.21-cp311-cp311-win32.whl", hash = "sha256:f843a8b08c2edeaf9b1582eed4f25441af21a297c22ff16bf76a662557aa9c9e", size = 5236515, upload-time = "2026-06-01T19:30:47.461Z" }, + { url = "https://files.pythonhosted.org/packages/60/94/6660de2f2d7bf388f229335ba4637646eebabdbf38564cb439a95a9193c9/debugpy-1.8.21-cp311-cp311-win_amd64.whl", hash = "sha256:84c564d8cc701d41843b29a92814c1f1bef6798724ca9d675c284ad9f6a547d7", size = 5256138, upload-time = "2026-06-01T19:30:49.113Z" }, + { url = "https://files.pythonhosted.org/packages/a2/df/bf625547431a9cadc9f4cbfeda38866e2b17f6aed147b625377e87834449/debugpy-1.8.21-cp312-cp312-macosx_15_0_universal2.whl", hash = "sha256:9f96713896f39c3dff0ee841f47320c3f2983d33c341e009361bb0ebc79adc4e", size = 2483609, upload-time = "2026-06-01T19:30:50.794Z" }, + { url = "https://files.pythonhosted.org/packages/bf/09/59324b903599031ff9faaec1758292409f6561a0ec2492fe4b703327705a/debugpy-1.8.21-cp312-cp312-manylinux_2_34_x86_64.whl", hash = "sha256:c193d474f0a211191f2b4449d2d06157c689013035bd952f3b617e0ef422b176", size = 3968900, upload-time = "2026-06-01T19:30:52.341Z" }, + { url = "https://files.pythonhosted.org/packages/14/cd/27f65b805d7fe005c44e1a36b9183ecdfbcdbf9d3e721a5115d461ecc7ee/debugpy-1.8.21-cp312-cp312-win32.whl", hash = "sha256:4743373c1cac7f9e74a1b9915bf1dbe0e900eca657ffb170ae07ac8363205ae9", size = 5336340, upload-time = "2026-06-01T19:30:54.047Z" }, + { url = "https://files.pythonhosted.org/packages/77/1d/c84e30c0c674184948b66f076ab271c01d940618a2824c23cd035a27bc20/debugpy-1.8.21-cp312-cp312-win_amd64.whl", hash = "sha256:bd7ba9dd3daa7c2f942c6ca8d4695a16bf9ac16b63615261c7982bc74f7ed20c", size = 5374751, upload-time = "2026-06-01T19:30:55.891Z" }, + { url = "https://files.pythonhosted.org/packages/77/6b/d817e1f8cc77aa055d37fba092e0febfdff40fe652d8d53d4cd7a86ad98d/debugpy-1.8.21-cp313-cp313-macosx_15_0_universal2.whl", hash = "sha256:13678151fc401e2d68c9880b91e28714f797d40422994572b24560ef80910a88", size = 2477398, upload-time = "2026-06-01T19:30:57.644Z" }, + { url = "https://files.pythonhosted.org/packages/48/57/412421516afc3055fa577516f00beec3d663f9b0ab330639547ae6c57720/debugpy-1.8.21-cp313-cp313-manylinux_2_34_x86_64.whl", hash = "sha256:ecbd158386c31ffe71d46f72d44d56e66331ab9b16cad649156d514368f23ab2", size = 3962096, upload-time = "2026-06-01T19:30:59.235Z" }, + { url = "https://files.pythonhosted.org/packages/c1/62/2c616337cf6ba7b07ebbc97f02c6c945a8e2f76b365e33ee809c32ee36d1/debugpy-1.8.21-cp313-cp313-win32.whl", hash = "sha256:2c2ae706dec41d99a9ca1f7ebc987a83e65578363be6f6b3ac9067504917fae1", size = 5336288, upload-time = "2026-06-01T19:31:00.79Z" }, + { url = "https://files.pythonhosted.org/packages/f8/99/9175103392f84c4b1bf7622888cdc68da07f0ff7d9e581266428f6776033/debugpy-1.8.21-cp313-cp313-win_amd64.whl", hash = "sha256:aa648733047443eb1d07682c4ef287d36a54507b643ffdf38b09a3ef002c72a0", size = 5376567, upload-time = "2026-06-01T19:31:02.56Z" }, + { url = "https://files.pythonhosted.org/packages/ce/3d/f4bbb323a548bfab2af3d6b4ffd9bf22636e55956a1285d317a1de643aad/debugpy-1.8.21-cp314-cp314-macosx_15_0_universal2.whl", hash = "sha256:9bb2a685287a2ac9b181cde89edcec64845cb51de7faaa75badb9a698bc24782", size = 2477209, upload-time = "2026-06-01T19:31:04.157Z" }, + { url = "https://files.pythonhosted.org/packages/8c/2d/6e7ec524984a1702777868de49a4c53202bddac2a432a76a093469587750/debugpy-1.8.21-cp314-cp314-manylinux_2_34_x86_64.whl", hash = "sha256:3d6922439bf33fd38a3e2c447869ebc7b97da5cd3d329ff1ef9bc06c4903437e", size = 3927115, upload-time = "2026-06-01T19:31:05.863Z" }, + { url = "https://files.pythonhosted.org/packages/97/47/d1aa6d64005a98a9144647d99306b419396f9ad7bf1d73c119e17a81fb4d/debugpy-1.8.21-cp314-cp314-win32.whl", hash = "sha256:15d4963bd5ffa48f0da0947fd06757fa7621945048a14ad7705431566d3c0e7c", size = 5336724, upload-time = "2026-06-01T19:31:07.711Z" }, + { url = "https://files.pythonhosted.org/packages/5f/67/b905b90d163af11878c1af8abafa4a25206335e112e284e413454543a6da/debugpy-1.8.21-cp314-cp314-win_amd64.whl", hash = "sha256:fe0744a12353406de0ae8ccff0d0a4a666f00801a3db8fd04e7a5f761cd520e8", size = 5373803, upload-time = "2026-06-01T19:31:09.469Z" }, + { url = "https://files.pythonhosted.org/packages/95/51/67e7cf11a53e40694f720457d5b3a1cdaaa3d5a9a633e482f225456b93ff/debugpy-1.8.21-py2.py3-none-any.whl", hash = "sha256:b1e37d333663c8851516a47364ef473da127f9caebe4417e6df6f5825a7e9a92", size = 5352888, upload-time = "2026-06-01T19:31:25.186Z" }, +] + +[[package]] +name = "decorator" +version = "5.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/60/8b/32f9823da46cde7df2087faa08cd98d01b908f8dcab982cdba9c84e85355/decorator-5.3.1.tar.gz", hash = "sha256:4cbcdd55a6efadb9dbea26b858f4fb3264567b52d69ca0d25b721b553f60ea82", size = 58084, upload-time = "2026-05-18T06:03:28.057Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/7f/798705f5296a58ca505d600456748d1be48078eac8a7050d8a98bc9edb89/decorator-5.3.1-py3-none-any.whl", hash = "sha256:f47fe6fdbd2edd623ecfe36875d37aba411624e2670dd395dddae1358689bb3c", size = 10365, upload-time = "2026-05-18T06:03:26.517Z" }, +] + +[[package]] +name = "defusedxml" +version = "0.7.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520, upload-time = "2021-03-08T10:59:26.269Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604, upload-time = "2021-03-08T10:59:24.45Z" }, +] + +[[package]] +name = "distlib" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/46/8d/873e9252ea2c0e0c857884e0a2899ec43ade132345df1925ef24cbe64f18/distlib-0.4.2.tar.gz", hash = "sha256:baeb401c90f27acd15c4861ae0847d1e731c27ac3dbf4210643ba61fa1e813db", size = 614914, upload-time = "2026-06-08T16:24:15.439Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/60/aa891c893821d4d127292ed66c6940d1d715894bd5a0ce048056bc641773/distlib-0.4.2-py2.py3-none-any.whl", hash = "sha256:ca4cb11e5d746b5ec13c199cbf19ae27a241f89702b54e153a74332955446067", size = 470510, upload-time = "2026-06-08T16:24:13.208Z" }, +] + +[[package]] +name = "docutils" +version = "0.19" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6b/5c/330ea8d383eb2ce973df34d1239b3b21e91cd8c865d21ff82902d952f91f/docutils-0.19.tar.gz", hash = "sha256:33995a6753c30b7f577febfc2c50411fec6aac7f7ffeb7c4cfe5991072dcf9e6", size = 2056383, upload-time = "2022-07-05T20:17:31.045Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/93/69/e391bd51bc08ed9141ecd899a0ddb61ab6465309f1eb470905c0c8868081/docutils-0.19-py3-none-any.whl", hash = "sha256:5e1de4d849fee02c63b040a4a3fd567f4ab104defd8a5511fbbc24a8a017efbc", size = 570472, upload-time = "2022-07-05T20:17:26.388Z" }, +] + +[[package]] +name = "exceptiongroup" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598", size = 16740, upload-time = "2025-11-21T23:01:53.443Z" }, +] + +[[package]] +name = "execnet" +version = "2.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bf/89/780e11f9588d9e7128a3f87788354c7946a9cbb1401ad38a48c4db9a4f07/execnet-2.1.2.tar.gz", hash = "sha256:63d83bfdd9a23e35b9c6a3261412324f964c2ec8dcd8d3c6916ee9373e0befcd", size = 166622, upload-time = "2025-11-12T09:56:37.75Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ab/84/02fc1827e8cdded4aa65baef11296a9bbe595c474f0d6d758af082d849fd/execnet-2.1.2-py3-none-any.whl", hash = "sha256:67fba928dd5a544b783f6056f449e5e3931a5c378b128bc18501f7ea79e296ec", size = 40708, upload-time = "2025-11-12T09:56:36.333Z" }, +] + +[[package]] +name = "executing" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cc/28/c14e053b6762b1044f34a13aab6859bbf40456d37d23aa286ac24cfd9a5d/executing-2.2.1.tar.gz", hash = "sha256:3632cc370565f6648cc328b32435bd120a1e4ebb20c77e3fdde9a13cd1e533c4", size = 1129488, upload-time = "2025-09-01T09:48:10.866Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl", hash = "sha256:760643d3452b4d777d295bb167ccc74c64a81df23fb5e08eff250c425a4b2017", size = 28317, upload-time = "2025-09-01T09:48:08.5Z" }, +] + +[[package]] +name = "fastjsonschema" +version = "2.21.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/b5/23b216d9d985a956623b6bd12d4086b60f0059b27799f23016af04a74ea1/fastjsonschema-2.21.2.tar.gz", hash = "sha256:b1eb43748041c880796cd077f1a07c3d94e93ae84bba5ed36800a33554ae05de", size = 374130, upload-time = "2025-08-14T18:49:36.666Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/a8/20d0723294217e47de6d9e2e40fd4a9d2f7c4b6ef974babd482a59743694/fastjsonschema-2.21.2-py3-none-any.whl", hash = "sha256:1c797122d0a86c5cace2e54bf4e819c36223b552017172f32c5c024a6b77e463", size = 24024, upload-time = "2025-08-14T18:49:34.776Z" }, +] + +[[package]] +name = "filelock" +version = "3.29.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1f/f9/f38573ed5844586db374d085911740a501ccfa373b455fc9413f09f85237/filelock-3.29.1.tar.gz", hash = "sha256:d97e6b1b9757569626c58caa07dc4beb1613f4a2938b1e8cc81afca398906c9e", size = 59335, upload-time = "2026-06-03T15:19:04.053Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4c/a0/614c5fe402fd88951df45f4dda2fa3b4e17a99ecd92340771929169b3b95/filelock-3.29.1-py3-none-any.whl", hash = "sha256:85199dfd706869641b72b2e8955d5416a4b2b7dc4b0e8e6d97b4cc1299a6983b", size = 40750, upload-time = "2026-06-03T15:19:02.959Z" }, +] + +[[package]] +name = "fonttools" +version = "4.63.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/84/69/c97f2c18e0db87d2c7b15da1974dace76ae938f1cfa22e2727a648b7ed43/fonttools-4.63.0.tar.gz", hash = "sha256:caeb583deeb5168e694b65cda8b4ee62abedfa66cf88488734466f2366b9c4e0", size = 3597189, upload-time = "2026-05-14T12:04:30.958Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f2/c9/4141c90a90db20f807c7e10bfd689fe53eb8f7f4caff58ee4d4dfe46919f/fonttools-4.63.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e3297a6a4059b4acc3a1e9a8b04741f240a80044eef08ebd32e8b5bcdddce75b", size = 2884632, upload-time = "2026-05-14T12:02:38.56Z" }, + { url = "https://files.pythonhosted.org/packages/b8/46/ad12b5c10eae602d7ef814b02afa08aacbf89da917fed5b071282b7eadc2/fonttools-4.63.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b1cd75a03ad8cb5bc40c90bfde68c0c47de423aa19e5c0f362b43520645eea94", size = 2429441, upload-time = "2026-05-14T12:02:41.162Z" }, + { url = "https://files.pythonhosted.org/packages/90/8f/bdca24a84c81d56fffed052229cdcff368f6e05882e526f4558891481f65/fonttools-4.63.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0425b277a59cff3d80ca42162a8de360f318438a2ac83570842a678d826d579", size = 4946346, upload-time = "2026-05-14T12:02:43.41Z" }, + { url = "https://files.pythonhosted.org/packages/04/59/a639c0e136441ee91a65b56fdf89e5d075927e7a09c559d1b0f5276577db/fonttools-4.63.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d7e5c9973aa04c95650c96e5f5ad865fbf42d62079163ecfab1e01cbc2504c22", size = 4903184, upload-time = "2026-05-14T12:02:45.742Z" }, + { url = "https://files.pythonhosted.org/packages/e6/53/91b7e0cb45b536f3da1b29ba8cbab89f27e8b986809e0b1982303a3f4eca/fonttools-4.63.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cb014d58140a38135f16064c74c652ed57aa0b75cbf8bb59cac821f7edb5334e", size = 4922967, upload-time = "2026-05-14T12:02:48.386Z" }, + { url = "https://files.pythonhosted.org/packages/c7/b7/87439bf44e6b97c5538cd29d0b7e366a5b8ce2cc132a4134fb67fa3f2fa2/fonttools-4.63.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:032038247a96c1690f9f31e377c389383c902531b085aa4e4dabd6f57f870e69", size = 5042799, upload-time = "2026-05-14T12:02:50.424Z" }, + { url = "https://files.pythonhosted.org/packages/ad/7c/8b96c3263b89ef99cded544c0f0636686f85dbd3c211c4dceef0231fca23/fonttools-4.63.0-cp310-cp310-win32.whl", hash = "sha256:a8b33a82979e0a6a34ff435cc81317be1f95ec1ebb7a3a2d1c8a6a54f02ae44e", size = 1519704, upload-time = "2026-05-14T12:02:52.523Z" }, + { url = "https://files.pythonhosted.org/packages/e5/4d/2c2f0069970b6907de8fb5b05c5c0193cc22f717df151d1c7aef1c738f58/fonttools-4.63.0-cp310-cp310-win_amd64.whl", hash = "sha256:0c18358a155d75034911c5ee397a5b44cd19dd325dbb8b35fb60bf421d6a72ac", size = 1568666, upload-time = "2026-05-14T12:02:54.917Z" }, + { url = "https://files.pythonhosted.org/packages/75/2b/a7f1545bdf5da69c4bda0cea2a5781f0ad2a6623e0277267672db43c5fe6/fonttools-4.63.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2b8ae05d9eacf6081414d759c0a352769ac28ce31280d6bb8e77b03f9e3c449f", size = 2881793, upload-time = "2026-05-14T12:02:56.645Z" }, + { url = "https://files.pythonhosted.org/packages/49/50/965308c703f085f225db2886813b27e015b8b3438c350b22dd65b52c2a2c/fonttools-4.63.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:79cdc9f567aec74a72918fd060283911406750cbc9fd28c1316023deb6ce31a9", size = 2428130, upload-time = "2026-05-14T12:02:58.891Z" }, + { url = "https://files.pythonhosted.org/packages/d8/38/6937fbd7f2dc3a6b48725851bc2c15ec949b9af14d9bbcb5fe83cdf9bdf9/fonttools-4.63.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2c14b4fd138c4bafcca294765c547914e1aa431ae1ca94ab99d8db08c958bd3b", size = 5111952, upload-time = "2026-05-14T12:03:01.263Z" }, + { url = "https://files.pythonhosted.org/packages/0b/43/a81f20050a3115b57d62c8e781446949512eac36690dc384ccea65ff4cc1/fonttools-4.63.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d76ac49f929aecaf82d83250b8347e099d7aecba0f4726c1d9b6df3b8bb5fe18", size = 5082308, upload-time = "2026-05-14T12:03:03.211Z" }, + { url = "https://files.pythonhosted.org/packages/67/00/cdd9d4944ca6ae280d01e69cc37bde3bf663630b837a6fc6d2cd65d80e0e/fonttools-4.63.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dcf076a4474fe0d7367e5bbf5b052c7284fa1feca729c04176ce513521afd8a0", size = 5087932, upload-time = "2026-05-14T12:03:05.147Z" }, + { url = "https://files.pythonhosted.org/packages/f5/f1/0aa0dbea778c75adbef223c42019fd47d22262b905974d62d829545d485f/fonttools-4.63.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7dd683fef0663e9f0f45cf541d788d24caa3ec9db50796b588e1757d8b3bc007", size = 5213271, upload-time = "2026-05-14T12:03:07.238Z" }, + { url = "https://files.pythonhosted.org/packages/a8/99/253e4056e1f0e67b9390125a154b73b5eb73ad521bece95c004858fdeec2/fonttools-4.63.0-cp311-cp311-win32.whl", hash = "sha256:afefc1ed0a59785a7fb06ea7e1678e849c193e1e387db783579bc7b3056fcfcb", size = 2304473, upload-time = "2026-05-14T12:03:09.271Z" }, + { url = "https://files.pythonhosted.org/packages/08/60/defa5e69641db890a63be281f41345f4c33b157824eaf0b9fad3e08b0dcb/fonttools-4.63.0-cp311-cp311-win_amd64.whl", hash = "sha256:063e08bd17bd5a90127a14123de0d6a952dbc847695fd98b63c043d58057f90c", size = 2356389, upload-time = "2026-05-14T12:03:11.53Z" }, + { url = "https://files.pythonhosted.org/packages/08/ef/b3c6b9b5be2f82416d73fe2ed2e96e2793cd80e7510bd6a17ca79cdd88ec/fonttools-4.63.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:37dd23e621e3b0aef1baa70a303b80aaf38449632cfc8fd2a55fb285bbccfc02", size = 2881131, upload-time = "2026-05-14T12:03:13.386Z" }, + { url = "https://files.pythonhosted.org/packages/44/a0/c815bea63117fa63e4e1c01f8a1110d2112fa003f838e6467094ec2432ce/fonttools-4.63.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a9faff9e0c1f76f9fd55899d2ce785832efebab37eb8ae13995853aef178bef0", size = 2426704, upload-time = "2026-05-14T12:03:15.801Z" }, + { url = "https://files.pythonhosted.org/packages/44/04/0b91d8e916e92ad1fac9e4624760baf0fd5ff2ead614c2f68fb21373f03f/fonttools-4.63.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ef3048ef05dbb552b89817713d9cac912e00d0fde4a3105c00d29e52e10c89af", size = 5044298, upload-time = "2026-05-14T12:03:18.085Z" }, + { url = "https://files.pythonhosted.org/packages/77/c7/2342da9830e3e9d4870305ca5d2091d2a83284f2953079b7bdd3b5e029d8/fonttools-4.63.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:58dc6bb86a78d782f00f9190ca02c119cf5bbe2807536e361e18d42019f877d8", size = 4999800, upload-time = "2026-05-14T12:03:20.161Z" }, + { url = "https://files.pythonhosted.org/packages/e6/6d/67fe16c48d7ce050979b33f47e0d28a318f02da030602e944c34f7a16ef3/fonttools-4.63.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ee08ebfa58f6e1aeff5697ab9582105bb620008c1caafb681e4c557e7483027b", size = 4982666, upload-time = "2026-05-14T12:03:22.87Z" }, + { url = "https://files.pythonhosted.org/packages/f2/00/3bbab338c07c71fa56269953845e92c951a61457bbbb0f1022551ea266d9/fonttools-4.63.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:27fdc65af8da6f88b9c6121c47a464cbe359fcfff7ff6fc2d37a1f395d755b78", size = 5133598, upload-time = "2026-05-14T12:03:25.168Z" }, + { url = "https://files.pythonhosted.org/packages/62/f2/aa27c7f98db5b064883dadcc5283947e81e034de42e22a33675878d98b54/fonttools-4.63.0-cp312-cp312-win32.whl", hash = "sha256:af2fd1664d00a397d75f806985ddb36282091c2131a73a6485c23b4a34722263", size = 2292575, upload-time = "2026-05-14T12:03:27.496Z" }, + { url = "https://files.pythonhosted.org/packages/87/36/cccb9bc2a6ab63d1b2980374f0dca72ce95ae267c9b4cfe77455bb70d0d4/fonttools-4.63.0-cp312-cp312-win_amd64.whl", hash = "sha256:59ac449f8cca9b4ffa08d2e7bbadad87ce710d69d1eda5c3c1ce579baa987272", size = 2343211, upload-time = "2026-05-14T12:03:30.057Z" }, + { url = "https://files.pythonhosted.org/packages/0f/8d/d8fec3dcde2963f8c908fb315e5ff2cd0ac34f82394bbbf73a2aa5145ce3/fonttools-4.63.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:cd7e9857e5e63738b9d9fd707bc1f59c8b09e5177726d23664db393c59bb08bd", size = 2876062, upload-time = "2026-05-14T12:03:32.554Z" }, + { url = "https://files.pythonhosted.org/packages/ef/71/d935dc54e4ff121bfdd11e08702db63a7e6f25af21d8a3d7b7212df53641/fonttools-4.63.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c2a2a42198b696a6f48fad91709afb55176e66a5e566131219dba372fb7f8c59", size = 2424594, upload-time = "2026-05-14T12:03:34.86Z" }, + { url = "https://files.pythonhosted.org/packages/8e/40/e76320afa1df918e146155ef239b1719ee266092e96f5423bfd075affba1/fonttools-4.63.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1e874792a8212b44583ea02189d9e693906b2f78b261f372f95d6c563210ac1d", size = 5024840, upload-time = "2026-05-14T12:03:36.745Z" }, + { url = "https://files.pythonhosted.org/packages/ce/36/0b805d8c485f872f65a509cbe3b58a5d0d17bee855333b54a150c79d3061/fonttools-4.63.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:22135da48a348785c5e2d5d2d9d6bec5ed44adacbaeb9db12d9493bf6c6bfa68", size = 4975801, upload-time = "2026-05-14T12:03:38.833Z" }, + { url = "https://files.pythonhosted.org/packages/c8/26/2cee03d0aa083ab022da5c07aff9ed3f689da1defb81ad6917c9627896da/fonttools-4.63.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ccf41f2efdf56994d22d73bef4ced1052161958169428d06ba9724ea9e9a64be", size = 4965009, upload-time = "2026-05-14T12:03:41.494Z" }, + { url = "https://files.pythonhosted.org/packages/7e/48/cc4b66d9058c0d0982c833fad10127c4b0e9324606aafa41382295ca4102/fonttools-4.63.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9ced0bd02ac751dd6319b0da88aaef24414e3b0dbc32bb4f24944821a3741a27", size = 5105892, upload-time = "2026-05-14T12:03:43.525Z" }, + { url = "https://files.pythonhosted.org/packages/d8/1f/a98a30a814b9ddef3a2e706025f90b9e0bc94890e6cb15254bc86547d11a/fonttools-4.63.0-cp313-cp313-win32.whl", hash = "sha256:85be818f5506e8a7753153def2c9550178f0ecae6a47b5e0e8dbb23f7cc90380", size = 2291313, upload-time = "2026-05-14T12:03:45.594Z" }, + { url = "https://files.pythonhosted.org/packages/92/46/5177b01f3b4abfdd4409f31cca4ab279c9343a26efbe9ec78c97fc612e02/fonttools-4.63.0-cp313-cp313-win_amd64.whl", hash = "sha256:ba04cb5891d4c0c21b6da95eda8d7b090021508a294fff33464fc7d241e0856b", size = 2342299, upload-time = "2026-05-14T12:03:47.414Z" }, + { url = "https://files.pythonhosted.org/packages/27/d2/23d25e3f247b328be58d04a4c9f894178a0d1eda7d42867cfb388adaf416/fonttools-4.63.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:fd1e3094f42d806d3d7c79162fc59e5910fcbe3a7360c385b8da969bc4493745", size = 2875338, upload-time = "2026-05-14T12:03:50.052Z" }, + { url = "https://files.pythonhosted.org/packages/cd/58/7dfa0c761cb3b2964e2a84c4dc986c926a87de0cb9fb60d5b28ded3f2914/fonttools-4.63.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:6e528da43bc3791085f8cb6141b1d13e459226790240340fcbb4625649238b03", size = 2422661, upload-time = "2026-05-14T12:03:52.154Z" }, + { url = "https://files.pythonhosted.org/packages/dd/87/64cfa18a7a1621d17b7f4502b2b0ed8a135a90c3db51ea590ee99043e76b/fonttools-4.63.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b2248c5decb223562f7902ff6325077a073f608ee8e33e88ad88db734eb9f49", size = 5010526, upload-time = "2026-05-14T12:03:54.647Z" }, + { url = "https://files.pythonhosted.org/packages/36/e1/a8933a72c45a87177fbde2696e0d0755c8c9062f8c077a961c6215fa27b1/fonttools-4.63.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:308f957cdeaf8abe4e5f2f124902ef405448af92c90f80e302a3b771c2e6116b", size = 4923946, upload-time = "2026-05-14T12:03:56.984Z" }, + { url = "https://files.pythonhosted.org/packages/27/60/872e6e233b8c5e8b41413796ff18b7fe479661bd40147e071b450dfad7a1/fonttools-4.63.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:bf00f21eb5fb721dbaf73d1e9da6d02a1af7768f2ebcf9798be98beab8ba90f6", size = 4962489, upload-time = "2026-05-14T12:03:59.443Z" }, + { url = "https://files.pythonhosted.org/packages/30/c4/83c24f2ec38b90cfda84bf4b1a1f49df80e84a1db4e7ac6e0d41bf23bc39/fonttools-4.63.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:c1aaa4b9c75798400ac043ce04d74e7830376c85095a5a6ed7cba2f17a266bf4", size = 5071870, upload-time = "2026-05-14T12:04:02.122Z" }, + { url = "https://files.pythonhosted.org/packages/de/40/3ae22b60ff1d41ce0bd044b31238cdc72cef99f28b976f1e128ebd618c9b/fonttools-4.63.0-cp314-cp314-win32.whl", hash = "sha256:22693918177bd9ceabec4736d338045f357769416fc6b0b2508eefef75b08616", size = 2295026, upload-time = "2026-05-14T12:04:04.47Z" }, + { url = "https://files.pythonhosted.org/packages/c3/d4/98078064ccc76b45cb0f6c002452011e93c4bd26f6850344f0951cc1fe89/fonttools-4.63.0-cp314-cp314-win_amd64.whl", hash = "sha256:7d782fac32985914c351556f68ac0855391572bcd87de50e05970d3cd4c96fc5", size = 2347454, upload-time = "2026-05-14T12:04:06.752Z" }, + { url = "https://files.pythonhosted.org/packages/49/4e/652d1580c5f4e39f7d103b0c793e4773129ad633dce4addd0cf4dfebde02/fonttools-4.63.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:6db5140a60a5d731d21ec076745b40a310607731b0a565b50776393188649001", size = 2958152, upload-time = "2026-05-14T12:04:08.706Z" }, + { url = "https://files.pythonhosted.org/packages/0e/55/ad864c9a9b219f552eb46b32cd7906c466e5a578ba0c3abfcc0fe7413eb6/fonttools-4.63.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:7d76edbff9014094dbf03bd2d074709dfa6ec7aba13d838c937a2b33d2d6a86e", size = 2460809, upload-time = "2026-05-14T12:04:10.783Z" }, + { url = "https://files.pythonhosted.org/packages/ea/2b/0aa8db70f18cf52e49b4ed5ecec68547f981160bf5ded3b5aed6faa0a6f9/fonttools-4.63.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0eac00b9118c3c2f87d272e45341871c5b3066baa3c86897fa634a7c3fb59096", size = 5148649, upload-time = "2026-05-14T12:04:12.747Z" }, + { url = "https://files.pythonhosted.org/packages/7f/63/18e4369c25043096f1048e0c9915951adc4f842bd81c6b18155824d6fa99/fonttools-4.63.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:51394295f1a51de8b5f30bdb1e1b9a4231536c7064ef5c6e211eec19fa36036f", size = 4932147, upload-time = "2026-05-14T12:04:14.806Z" }, + { url = "https://files.pythonhosted.org/packages/a1/3f/67f3eac2ffd8a98446c5022f8ed3864eac878a5ff7af8df4c8286dba16cc/fonttools-4.63.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:9e12f105d2b6342c559c298afb674006bb2893afc7102dcf8a1b55b0486b4e40", size = 5027237, upload-time = "2026-05-14T12:04:17.675Z" }, + { url = "https://files.pythonhosted.org/packages/1a/ba/4e6214cb38a7b04779e97bb7636de9a5c7f20af7018d03dee0b64c08510a/fonttools-4.63.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:796f27556dbe094c4824f75ca85267e4df776c79036c8441469a4df37038c196", size = 5053933, upload-time = "2026-05-14T12:04:20.818Z" }, + { url = "https://files.pythonhosted.org/packages/34/3b/214dcc19ee31d3d38fb5ad2755c11ef0514e5dc300bbaf41c0b69f393799/fonttools-4.63.0-cp314-cp314t-win32.whl", hash = "sha256:948428a275741f0b64b113c955425a953314f4b9ab9997f73a72c83e68e569c8", size = 2359326, upload-time = "2026-05-14T12:04:24.22Z" }, + { url = "https://files.pythonhosted.org/packages/dd/1e/3ff1a9b523058c2eeb6a9d50f5574e2a738200d0d94107d5bc4105e8da3f/fonttools-4.63.0-cp314-cp314t-win_amd64.whl", hash = "sha256:6d4741eb179121cab9eea4cb2393d24492373a260d7945006358c08cfbf45419", size = 2425829, upload-time = "2026-05-14T12:04:26.829Z" }, + { url = "https://files.pythonhosted.org/packages/2c/47/c99d5268f354002ce80f8d029cd9d7d872969da1de8b93d32de4dc56d6f4/fonttools-4.63.0-py3-none-any.whl", hash = "sha256:445af2eab030a16b9171ea8bdda7ebf7d96bda2df88ee182a464252f6e05e20d", size = 1164562, upload-time = "2026-05-14T12:04:29.092Z" }, +] + +[[package]] +name = "fsspec" +version = "2026.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d5/8d/1c51c094345df128ca4a990d633fe1a0ff28726c9e6b3c41ba65087bba1d/fsspec-2026.4.0.tar.gz", hash = "sha256:301d8ac70ae90ef3ad05dcf94d6c3754a097f9b5fe4667d2787aa359ec7df7e4", size = 312760, upload-time = "2026-04-29T20:42:38.635Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d5/0c/043d5e551459da400957a1395e0febbf771446ff34291afcbe3d8be2a279/fsspec-2026.4.0-py3-none-any.whl", hash = "sha256:11ef7bb35dab8a394fde6e608221d5cf3e8499401c249bebaeaad760a1a8dec2", size = 203402, upload-time = "2026-04-29T20:42:36.842Z" }, +] + +[[package]] +name = "greenlet" +version = "3.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6d/6e/802acd792aebb2256fbbee8cacf2727faaeb6f240ac11008f09eae4414bc/greenlet-3.5.1.tar.gz", hash = "sha256:5a56aeb7d5d9cc4b3a735efb5095bd4b4f6f0e4f93e5ca876d0e2315137b7829", size = 197356, upload-time = "2026-05-20T15:05:03.917Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/21/117c8710abb7f146d804a124c07eb5964a60b90d02b72452885aecc18efa/greenlet-3.5.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:7eacb17a9d41538a2bc4912eba5ef13823c83cb69e4d141d0813debe7163187f", size = 283510, upload-time = "2026-05-20T13:12:26.475Z" }, + { url = "https://files.pythonhosted.org/packages/b9/f7/6762a56fa5f6c2295c449c6524e10ce481e381c994cc44d9d03aef0700fb/greenlet-3.5.1-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e5cc9606aa5f4e0bde0d3bd502b44f743864c3ffa5cfa1011b1e30f5aa02366f", size = 599696, upload-time = "2026-05-20T14:00:02.906Z" }, + { url = "https://files.pythonhosted.org/packages/0f/05/85a511e68ee109aff0aa00b4b497806091dd2d82ce209e49c6e801bd5d92/greenlet-3.5.1-cp310-cp310-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c3d35f87c7253b715d13d679e0783d845910144f282cb939fe1ba4ac8616269c", size = 612618, upload-time = "2026-05-20T14:05:39.202Z" }, + { url = "https://files.pythonhosted.org/packages/2e/19/60df45065b2981ff894fdd51e7c99a3a4b107412822b083d88d5d528f663/greenlet-3.5.1-cp310-cp310-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:00929c98ec525fd9bf075875d8c5f6a983a90906cdf78a66e6de2d8e466c2a19", size = 619237, upload-time = "2026-05-20T14:09:06.421Z" }, + { url = "https://files.pythonhosted.org/packages/89/b8/8b83d18ae07c46c019617f35afd7b47aab7f9b4fbb12fc637d681e10bdd8/greenlet-3.5.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:540dae7b956209af4d70a3be35927b4055f617763771e5e84a5255bea934d2f5", size = 612947, upload-time = "2026-05-20T13:14:23.469Z" }, + { url = "https://files.pythonhosted.org/packages/26/9a/4ba4c2bc9d9df5f41bb8943fb7bb11e440352e6b9c2e36716b6e85f8b82d/greenlet-3.5.1-cp310-cp310-manylinux_2_39_riscv64.whl", hash = "sha256:001775efe7b8e758861294c7a27c28af87f3f3f1c20468a2bc618c45b346c061", size = 415653, upload-time = "2026-05-20T14:01:36.999Z" }, + { url = "https://files.pythonhosted.org/packages/5d/14/ad1f9fc9b82384c010212464a3702bd911f95dab2f1180bc6fbcfb1f958c/greenlet-3.5.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ed8cdb691169715a9a492844a83246f090182247d1a5031dc78a403f68ba1e97", size = 1571425, upload-time = "2026-05-20T14:02:22.671Z" }, + { url = "https://files.pythonhosted.org/packages/46/1c/43b8203cf10f4292c9e3d270e9e5f5ade79115a0a0ca5ea6f1be5f8915a7/greenlet-3.5.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9d59e840387076a51016777a9328b3f2c427c6f9208a6e958bad251be50a648d", size = 1638688, upload-time = "2026-05-20T13:14:30.026Z" }, + { url = "https://files.pythonhosted.org/packages/ac/6e/0344b1e99f58f71715456e46492101fd2daa408957b8186ade0a4b515da7/greenlet-3.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:b9152fca4a6466e114aaec745ae61cba739903a109754a9d4e1262f01e9259b1", size = 237763, upload-time = "2026-05-20T13:11:35.659Z" }, + { url = "https://files.pythonhosted.org/packages/42/3c/ff890b466eaba2b0f5e6bdfff025f8c75f41b8ffdc3dbc3d24ad261e764a/greenlet-3.5.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:73f78f9b9f0a5c06e5c946ba1e8e36f5114923b6be109ee618c54f079c3ea14f", size = 284764, upload-time = "2026-05-20T13:09:10.204Z" }, + { url = "https://files.pythonhosted.org/packages/81/0e/5e5457be3d256918f6a4756f073548a3f0190836e2cc94aa6d0d617a940b/greenlet-3.5.1-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a0cbed8bb44e23c5b199f888f4e4ce096b45ad9f25ff74a7ad0213875e936bb2", size = 603479, upload-time = "2026-05-20T14:00:04.757Z" }, + { url = "https://files.pythonhosted.org/packages/6d/e1/f89a21d58d308298e6f275f13a1b472ed96c680b601a371b08be6a725989/greenlet-3.5.1-cp311-cp311-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a203a8bd0acb0701653d3bbb26e404854a68674139ed5cbb778830f42b09bb33", size = 615495, upload-time = "2026-05-20T14:05:40.87Z" }, + { url = "https://files.pythonhosted.org/packages/2c/f2/8fd452fd81adb9ec79c8275c1375702ab0fd6bee4952da12eaa09b9508d8/greenlet-3.5.1-cp311-cp311-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6ebeb75c81211f5c702576cf81f315e77e23cfdb2c7c6fcb9dd143e6de35c360", size = 623515, upload-time = "2026-05-20T14:09:07.853Z" }, + { url = "https://files.pythonhosted.org/packages/75/de/af6cef182862d2ccd6975440d21c9058a77c3f9b469abf94e322dfd2e0e3/greenlet-3.5.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8a271fcd66c74615cda6a964fda3f304267a12e50a084472218a39bb0376f563", size = 614754, upload-time = "2026-05-20T13:14:24.947Z" }, + { url = "https://files.pythonhosted.org/packages/ec/bc/c318aa9f3ffc77320fddcee3d892be957b42e2ff947198d9450b004f3a38/greenlet-3.5.1-cp311-cp311-manylinux_2_39_riscv64.whl", hash = "sha256:017a544f0385d441e88714160d089d6900ef46c9eff9d99b6715a5ef2d127747", size = 418439, upload-time = "2026-05-20T14:01:38.446Z" }, + { url = "https://files.pythonhosted.org/packages/1a/c6/50e520283a9f19388a7326b05f9e8637e566003475eacaadad04f558c68d/greenlet-3.5.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ded7b068c7c31c1a8657d4fd42d886b3e051ae29f88b80c5ff9d502257b0f071", size = 1574097, upload-time = "2026-05-20T14:02:24.003Z" }, + { url = "https://files.pythonhosted.org/packages/21/1c/13abd1f4860d987fa5e1170a01930d6e6cd40d328de487a3c9fdaff0ffd0/greenlet-3.5.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d0932b81d72f552ded9d810d00021b64d89f2195a91ce115b893f943b7a4ab3c", size = 1641058, upload-time = "2026-05-20T13:14:31.83Z" }, + { url = "https://files.pythonhosted.org/packages/f5/56/5f332b7705545eac2dc01b4e9254d24a793f2656d55d5cc6b94ee59d22ae/greenlet-3.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:88e300d136eac057b2397aa1cfd7328b4c87c7eb66a09c7bc6a1292234db474e", size = 238089, upload-time = "2026-05-20T13:14:03.229Z" }, + { url = "https://files.pythonhosted.org/packages/d9/a9/a3c2fa886c5b94863fb0e61b3bc14610b7aa94cf4f17f8741b11708305fc/greenlet-3.5.1-cp311-cp311-win_arm64.whl", hash = "sha256:cc6ab7e555c8a112ad3a76e368e86e12a2754bcae1652a5602e133ec7b635523", size = 234989, upload-time = "2026-05-20T13:08:27.715Z" }, + { url = "https://files.pythonhosted.org/packages/c4/37/4549f149c9797c21b32c2683c33522af22522099de128b2406672526d005/greenlet-3.5.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:fa4f98af3a528f0c3fd592a26df7f376f93329c8f4d987f6bb979057af8bf5e2", size = 286220, upload-time = "2026-05-20T13:07:28.463Z" }, + { url = "https://files.pythonhosted.org/packages/38/ff/a4f436709716965eaab9f36ea7b906c8a927fbe32fb1372a2071d964f6b1/greenlet-3.5.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ffea73584b216150eab159b6d12348fb253e68757974de1e2c40d8a318ac89ed", size = 601585, upload-time = "2026-05-20T14:00:06.141Z" }, + { url = "https://files.pythonhosted.org/packages/65/ad/54bc3fcee3ad368a61b19b67d88117f7a8c29727bf71fffdeda81fbd946e/greenlet-3.5.1-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1072b4f9edcc1e192d9283a66a3e68d6b84c561de33a83d7858beb9ba1effe10", size = 614215, upload-time = "2026-05-20T14:05:42.675Z" }, + { url = "https://files.pythonhosted.org/packages/7c/6c/de5b1b388cd2d9fbdfeab324863daba37d54e6e233ddbefd70b385a8c591/greenlet-3.5.1-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:89101bfd5011e069be974903cb3a4e4523845e4ece2d62dcd8d358933c0ef249", size = 620094, upload-time = "2026-05-20T14:09:09.18Z" }, + { url = "https://files.pythonhosted.org/packages/40/69/b91cda0647df839483201545913514c2827ebea5e5ccdf931842763bc127/greenlet-3.5.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:add5217d68b31130f0beca584d7fef4878327d2e31642b66618a14eef312b63b", size = 611358, upload-time = "2026-05-20T13:14:26.37Z" }, + { url = "https://files.pythonhosted.org/packages/4a/43/1204baffab8a6476464795a7ccf394a3248d4f22c9f87173a15b36b6d971/greenlet-3.5.1-cp312-cp312-manylinux_2_39_riscv64.whl", hash = "sha256:e6cd99ea59dd5d89f0c956606571d79bfe6f68c9eb7f4a4083a41a7f1587edee", size = 422782, upload-time = "2026-05-20T14:01:39.597Z" }, + { url = "https://files.pythonhosted.org/packages/59/90/3cf77e080350cd02fa307bb2abf05df48f4482c240275bbd2c203ba8bb1c/greenlet-3.5.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a5ea42a752d47a145eae922b605cd1634665ac3d5ec1e72402d5048e8d60d207", size = 1570475, upload-time = "2026-05-20T14:02:25.29Z" }, + { url = "https://files.pythonhosted.org/packages/65/2c/18cece62045e74598c3c393f70dce4a63f56222015ba29a5d4eeb04f764c/greenlet-3.5.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c5551170cf4f5ff5623e9af81323751979fee2c731e2287b61f73cd27257b823", size = 1635625, upload-time = "2026-05-20T13:14:34.027Z" }, + { url = "https://files.pythonhosted.org/packages/30/f5/310d104ddf41eb5a70f4c268d22508dfb0c3c8e86fec152be34d0d2ed819/greenlet-3.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:3c8bb982ad117d29478ef8f5533e97df21f1e2befd17a299257b0c96d1371c0b", size = 238791, upload-time = "2026-05-20T13:10:39.018Z" }, + { url = "https://files.pythonhosted.org/packages/62/90/ceca11f504cd23a8047a3dea31919adc48df9b626dd0c13f0d858734fdfd/greenlet-3.5.1-cp312-cp312-win_arm64.whl", hash = "sha256:80eb4b04dadc4e67df3fae179a32c4706a3f495bc7f22fc8a81115d5f5512188", size = 235580, upload-time = "2026-05-20T13:08:45.056Z" }, + { url = "https://files.pythonhosted.org/packages/27/69/7f7e5372d998b81001899b1c0823c957aa413ba0f2662e65821611cc31e4/greenlet-3.5.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:51518ff74664078fc51bffcc6fc529b0df5ae58da192691cee765d45ce944a2b", size = 285060, upload-time = "2026-05-20T13:08:51.899Z" }, + { url = "https://files.pythonhosted.org/packages/b1/bf/387f9b6b865fd2ae0d0be09e0004827295a01b71be76ed350dd1e28a91a4/greenlet-3.5.1-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ffdb3c0bb002c99cd8f298957e046c3dbf6006b5b7cdf11a4e19194624a0a0a", size = 604370, upload-time = "2026-05-20T14:00:07.492Z" }, + { url = "https://files.pythonhosted.org/packages/32/f5/169ce3d4e4c67291bd18f8cbe0299c9f3e45102c7f1fb3c14780c93e4532/greenlet-3.5.1-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7715a5a2c3378ba602c3a440558261e13a820bb53a82693aacd7b7f6d964e283", size = 616987, upload-time = "2026-05-20T14:05:44.237Z" }, + { url = "https://files.pythonhosted.org/packages/19/ba/c24110c55dffa55aa6e1d98b45310da33801aeba7686ff0190fe5d46fd32/greenlet-3.5.1-cp313-cp313-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d40a890035c0058cadbdc4af7569800fd28a0e527a0fdbb7b5f9418f176846ce", size = 622911, upload-time = "2026-05-20T14:09:10.598Z" }, + { url = "https://files.pythonhosted.org/packages/ee/e5/7f2e41d5273be07e77560d61ea4e56485b4d6c316d2a84518c62d1364061/greenlet-3.5.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dc71ff466927a201b08305acac451ebe1aedfcea002f62f1f2f2ac2ac1e6a135", size = 613911, upload-time = "2026-05-20T13:14:27.539Z" }, + { url = "https://files.pythonhosted.org/packages/ec/7b/d20db2e8a5ad6c038702f3179b136f93f0a3d1a21a0c0777f3e470cdf4b2/greenlet-3.5.1-cp313-cp313-manylinux_2_39_riscv64.whl", hash = "sha256:67821bb03e4e98664490edb787ff6af501194c29bbee0f5c1dfdcf1dc3d9d436", size = 425228, upload-time = "2026-05-20T14:01:40.837Z" }, + { url = "https://files.pythonhosted.org/packages/c5/a4/fbdc67579b73615a1f91615e814303cc71e06128f7baaba87be79b8fb90c/greenlet-3.5.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cd443683db272ebaaca03af98c0b063ab30db70ea8a31a1559f35e3f7b744ccd", size = 1570689, upload-time = "2026-05-20T14:02:27.225Z" }, + { url = "https://files.pythonhosted.org/packages/e6/b4/77abbe35078be39718a46cd49caf16bceb35662f97a34101dca28aa98e47/greenlet-3.5.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:089fff7a6ce8d9316d1f65ebc00273a56be258c1725b32b94de90a3a979557e1", size = 1635602, upload-time = "2026-05-20T13:14:36.344Z" }, + { url = "https://files.pythonhosted.org/packages/37/f7/129f27ca700845b8ee8ca88ce7f43435a1239c2eddb7677fc938822762cf/greenlet-3.5.1-cp313-cp313-win_amd64.whl", hash = "sha256:110a1ca7b49b014b097f6078272c3f4ed31af45b254de5228b79adba879f6af9", size = 238683, upload-time = "2026-05-20T13:11:50.57Z" }, + { url = "https://files.pythonhosted.org/packages/6d/5c/a485a36e87df8d8fd0632ee01511244f5156a20ed3746cc6599340326395/greenlet-3.5.1-cp313-cp313-win_arm64.whl", hash = "sha256:f16ba1efc0715b680a18b8123d90dad887c6112ae3555b4b5c32c149540c6b4e", size = 235499, upload-time = "2026-05-20T13:12:42.028Z" }, + { url = "https://files.pythonhosted.org/packages/8a/cb/c62454606daf5640369c94d8a9dd540599b1bfc090e2d2180cb77f4038d2/greenlet-3.5.1-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:d8ab31c9de8651a2facdd5c5bb0011f2380dd1a7af78ce2adf4b56095294fc07", size = 285579, upload-time = "2026-05-20T13:08:56.396Z" }, + { url = "https://files.pythonhosted.org/packages/ec/71/c4270398c2eba968a6071af1dfbdcaeee6ec1c24bc8b435b8cc452700da6/greenlet-3.5.1-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5e300185139abc337ade480c327183adf42a875ac7181bfe66d7d4efea31fbea", size = 651106, upload-time = "2026-05-20T14:00:09.448Z" }, + { url = "https://files.pythonhosted.org/packages/1a/ab/71e34b78a44ec271fb5f550c17bc46d301ddc5953890d935f270b0dcdb5a/greenlet-3.5.1-cp314-cp314-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7ffdb990dcaa0234cf9845aead5df2e3c3a8b6507d409274dd87e0d5ab05ffc2", size = 663478, upload-time = "2026-05-20T14:05:45.88Z" }, + { url = "https://files.pythonhosted.org/packages/c6/2d/2d80842910da44f78c286532d084b8a5c3717c844ae80ceb3858738ae89a/greenlet-3.5.1-cp314-cp314-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6c09df69dc1712d131332054a858a3e5cca400967fa3a672e2324fbb0971448c", size = 667767, upload-time = "2026-05-20T14:09:12.15Z" }, + { url = "https://files.pythonhosted.org/packages/77/96/4efd6fa5c62c85426a0c19077a586258ebc3a2a146ff2493e4312a697a22/greenlet-3.5.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2f82b3597e9d83b63408affed0b48fd0f54935edac4302237b9a837be0dae33c", size = 660800, upload-time = "2026-05-20T13:14:29.129Z" }, + { url = "https://files.pythonhosted.org/packages/e9/d3/dad2eecedfbb1ed7050a20dcfae40c1442b74bc7423608be2c7e03ee7133/greenlet-3.5.1-cp314-cp314-manylinux_2_39_riscv64.whl", hash = "sha256:a4764e0bfc6a4d114c865b32520805c16a990ef5f286a514413b05d5ecd6a23d", size = 470786, upload-time = "2026-05-20T14:01:42.064Z" }, + { url = "https://files.pythonhosted.org/packages/7a/e0/6c71401a25cac7000261304e866a2f2cc04dc74810d40e2f118aa4799495/greenlet-3.5.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c0141e37414c10164e702b8fb1473304221ad98f71600850c6ef7ff4880feba0", size = 1617518, upload-time = "2026-05-20T14:02:28.662Z" }, + { url = "https://files.pythonhosted.org/packages/41/26/c5c06643e8c0af9e7bf18e16cb51d0ab7625155f0392e1c9015d66d556cd/greenlet-3.5.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:50ae25a67bea74ea41fb14b960bc532df73eb713417b2d61892dced82fe8d3bc", size = 1681593, upload-time = "2026-05-20T13:14:39.417Z" }, + { url = "https://files.pythonhosted.org/packages/8a/bd/e11a108317485075e68af9d23039619b86b28130c3b50d227d42edece64b/greenlet-3.5.1-cp314-cp314-win_amd64.whl", hash = "sha256:8a17c42330e261299766b75ac1ea32caa437a9453c8f65d16a13140db378ecd3", size = 239800, upload-time = "2026-05-20T13:09:30.128Z" }, + { url = "https://files.pythonhosted.org/packages/47/f8/8e8e8417b7bf28639a5a56356ef934d0375e1d0c70a57e04d7701e870ffe/greenlet-3.5.1-cp314-cp314-win_arm64.whl", hash = "sha256:7b5f5fae05b8ac6d176a61b60c394a8cbdc2b5b91b81793066e68745cf165e54", size = 236862, upload-time = "2026-05-20T13:09:10.498Z" }, + { url = "https://files.pythonhosted.org/packages/90/12/41bf27fde4d3605d3773ae57751eda182b8be2f5398011c041173b1d9534/greenlet-3.5.1-cp314-cp314t-macosx_11_0_universal2.whl", hash = "sha256:ea8da1e900d758d078810d4255d8c6aa572181896a31ec79d779eb79c3adc9ad", size = 293637, upload-time = "2026-05-20T13:12:35.529Z" }, + { url = "https://files.pythonhosted.org/packages/44/44/ba14b23e9757707050c2f397d305bbcae62e5d7cad122f8b6baec5ae4a1f/greenlet-3.5.1-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a19570c52a21420dcbc94e661994bc325c0b5b11304540fed514586da5dc8f2e", size = 650840, upload-time = "2026-05-20T14:00:11.079Z" }, + { url = "https://files.pythonhosted.org/packages/a8/37/5ddc2b686a6844f91abecef43411842426da2e1573f60b49ecf2547f4ae1/greenlet-3.5.1-cp314-cp314t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:3d955c89b75eeca4723d7cc14135f393cd47c32e2a6cb4a8e4c6e760a26b0986", size = 656416, upload-time = "2026-05-20T14:05:47.118Z" }, + { url = "https://files.pythonhosted.org/packages/8c/46/5987dcd1a2570ba84f3b187536b2ca3ae97613387e57f5cfa99df068fe5e/greenlet-3.5.1-cp314-cp314t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ea37d5a157eb9493820d3792ac4ece28619a394391d2b9f2f78057d396ff0f0f", size = 656607, upload-time = "2026-05-20T14:09:13.949Z" }, + { url = "https://files.pythonhosted.org/packages/e1/f0/d17510297c35a2992712f0bf84de3779749999f7d3d63aa1f09db7c62dbe/greenlet-3.5.1-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de2daaaebd1a5aa88c49045b6baf9310b3263796bd88db713edf37cf53e7bb4e", size = 654397, upload-time = "2026-05-20T13:14:30.696Z" }, + { url = "https://files.pythonhosted.org/packages/2c/c1/6da0a9ddcc29d7e51ef14883fa3dc1e53b3f4ffba00582106c7bf55da1d8/greenlet-3.5.1-cp314-cp314t-manylinux_2_39_riscv64.whl", hash = "sha256:8d8a23250ea3ec7b36de8fa4b541e9e2db3ee82915cc060ab0631609ad8b28de", size = 488287, upload-time = "2026-05-20T14:01:43.143Z" }, + { url = "https://files.pythonhosted.org/packages/37/eb/147387705bb89092645b012586e7273cb5ed3c90ef7eaf3a69173eaf0209/greenlet-3.5.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:3bfbd69cc349e43bf3a8ae1c85548ff0718efc887615c2db16c3833d7b0b072d", size = 1614469, upload-time = "2026-05-20T14:02:30.192Z" }, + { url = "https://files.pythonhosted.org/packages/a6/4e/37ee0da7732b7aa9896f17e15579a9df34b9fcb9dd494f0adfa749af6623/greenlet-3.5.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:4378720dd888136c27215a0214d32a4d37c3852765d45bc37aad0623423cfd78", size = 1675115, upload-time = "2026-05-20T13:14:40.972Z" }, + { url = "https://files.pythonhosted.org/packages/57/f3/97dfcf4a6eb5077f8a672234216fb5923eb89f2cab7081cb10b2cf75b605/greenlet-3.5.1-cp314-cp314t-win_amd64.whl", hash = "sha256:45718441607f9325d948db98cbc691276059316d0358c188c246da4e1d4d23d2", size = 245246, upload-time = "2026-05-20T13:12:22.646Z" }, +] + +[[package]] +name = "groundwork-sphinx-theme" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "sphinx" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8a/9d/304bfacefd0ef853c48af60aee35c096dd392ef4b340d336a59a7b8c953b/groundwork-sphinx-theme-1.1.1.tar.gz", hash = "sha256:5f1217bf34daba5fcd93e8a2a04ef5a6c2b144ec43754aec7ce14de501e23fe4", size = 26423, upload-time = "2019-11-25T05:24:22.842Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/e3/7c1b4e2d62d89229c9df5b90f2195b36758dab8a7f00f0710a90d0f414cc/groundwork_sphinx_theme-1.1.1-py2.py3-none-any.whl", hash = "sha256:b4796989ce3cd6d5b5a3c7ebe52a8c9cf848110e9f12c2c88e2b3c0e4e8f0e24", size = 26875, upload-time = "2019-11-25T05:24:25.253Z" }, +] + +[[package]] +name = "id" +version = "1.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6d/04/c2156091427636080787aac190019dc64096e56a23b7364d3c1764ee3a06/id-1.6.1.tar.gz", hash = "sha256:d0732d624fb46fd4e7bc4e5152f00214450953b9e772c182c1c22964def1a069", size = 18088, upload-time = "2026-02-04T16:19:41.26Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/42/77/de194443bf38daed9452139e960c632b0ef9f9a5dd9ce605fdf18ca9f1b1/id-1.6.1-py3-none-any.whl", hash = "sha256:f5ec41ed2629a508f5d0988eda142e190c9c6da971100612c4de9ad9f9b237ca", size = 14689, upload-time = "2026-02-04T16:19:40.051Z" }, +] + +[[package]] +name = "identify" +version = "2.6.19" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/52/63/51723b5f116cc04b061cb6f5a561790abf249d25931d515cd375e063e0f4/identify-2.6.19.tar.gz", hash = "sha256:6be5020c38fcb07da56c53733538a3081ea5aa70d36a156f83044bfbf9173842", size = 99567, upload-time = "2026-04-17T18:39:50.265Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/84/d9273cd09688070a6523c4aee4663a8538721b2b755c4962aafae0011e72/identify-2.6.19-py2.py3-none-any.whl", hash = "sha256:20e6a87f786f768c092a721ad107fc9df0eb89347be9396cadf3f4abbd1fb78a", size = 99397, upload-time = "2026-04-17T18:39:49.221Z" }, +] + +[[package]] +name = "idna" +version = "3.18" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/63/9496c57188a2ee585e0f1db071d75089a11e98aa86eb99d9d7618fc1edce/idna-3.18.tar.gz", hash = "sha256:ffb385a7e039654cef1ab9ef32c6fafe283c0c0467bba1d9029738ce4a14a848", size = 196711, upload-time = "2026-06-02T14:34:07.794Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl", hash = "sha256:7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2", size = 65455, upload-time = "2026-06-02T14:34:06.319Z" }, +] + +[[package]] +name = "imagesize" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/e6/7bf14eeb8f8b7251141944835abd42eb20a658d89084b7e1f3e5fe394090/imagesize-2.0.0.tar.gz", hash = "sha256:8e8358c4a05c304f1fccf7ff96f036e7243a189e9e42e90851993c558cfe9ee3", size = 1773045, upload-time = "2026-03-03T14:18:29.941Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5f/53/fb7122b71361a0d121b669dcf3d31244ef75badbbb724af388948de543e2/imagesize-2.0.0-py2.py3-none-any.whl", hash = "sha256:5667c5bbb57ab3f1fa4bc366f4fbc971db3d5ed011fd2715fd8001f782718d96", size = 9441, upload-time = "2026-03-03T14:18:27.892Z" }, +] + +[[package]] +name = "importlib-metadata" +version = "9.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "zipp" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a9/01/15bb152d77b21318514a96f43af312635eb2500c96b55398d020c93d86ea/importlib_metadata-9.0.0.tar.gz", hash = "sha256:a4f57ab599e6a2e3016d7595cfd72eb4661a5106e787a95bcc90c7105b831efc", size = 56405, upload-time = "2026-03-20T06:42:56.999Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/3d/2d244233ac4f76e38533cfcb2991c9eb4c7bf688ae0a036d30725b8faafe/importlib_metadata-9.0.0-py3-none-any.whl", hash = "sha256:2d21d1cc5a017bd0559e36150c21c830ab1dc304dedd1b7ea85d20f45ef3edd7", size = 27789, upload-time = "2026-03-20T06:42:55.665Z" }, +] + +[[package]] +name = "iniconfig" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730", size = 20503, upload-time = "2025-10-18T21:55:43.219Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12", size = 7484, upload-time = "2025-10-18T21:55:41.639Z" }, +] + +[[package]] +name = "ipykernel" +version = "6.31.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "appnope", marker = "sys_platform == 'darwin' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "comm" }, + { name = "debugpy" }, + { name = "ipython", version = "8.39.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "ipython", version = "9.14.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "matplotlib-inline" }, + { name = "nest-asyncio" }, + { name = "packaging" }, + { name = "psutil" }, + { name = "pyzmq" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a5/1d/d5ba6edbfe6fae4c3105bca3a9c889563cc752c7f2de45e333164c7f4846/ipykernel-6.31.0.tar.gz", hash = "sha256:2372ce8bc1ff4f34e58cafed3a0feb2194b91fc7cad0fc72e79e47b45ee9e8f6", size = 167493, upload-time = "2025-10-20T11:42:39.948Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f6/d8/502954a4ec0efcf264f99b65b41c3c54e65a647d9f0d6f62cd02227d242c/ipykernel-6.31.0-py3-none-any.whl", hash = "sha256:abe5386f6ced727a70e0eb0cf1da801fa7c5fa6ff82147747d5a0406cd8c94af", size = 117003, upload-time = "2025-10-20T11:42:37.502Z" }, +] + +[[package]] +name = "ipython" +version = "8.39.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130'", + "python_full_version < '3.11' and extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version < '3.11' and sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version < '3.11' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", +] +dependencies = [ + { name = "colorama", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.11' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (python_full_version >= '3.11' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (python_full_version >= '3.11' and extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (sys_platform != 'win32' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (sys_platform != 'win32' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (sys_platform != 'win32' and extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "decorator", marker = "python_full_version < '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "exceptiongroup", marker = "python_full_version < '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "jedi", marker = "python_full_version < '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "matplotlib-inline", marker = "python_full_version < '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "pexpect", marker = "(python_full_version < '3.11' and sys_platform != 'emscripten' and sys_platform != 'win32') or (python_full_version >= '3.11' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (python_full_version >= '3.11' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (python_full_version >= '3.11' and extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (sys_platform == 'emscripten' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (sys_platform == 'emscripten' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (sys_platform == 'emscripten' and extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (sys_platform == 'win32' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (sys_platform == 'win32' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (sys_platform == 'win32' and extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "prompt-toolkit", marker = "python_full_version < '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "pygments", marker = "python_full_version < '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "stack-data", marker = "python_full_version < '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "traitlets", marker = "python_full_version < '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "typing-extensions", marker = "python_full_version < '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/40/18/f8598d287006885e7136451fdea0755af4ebcbfe342836f24deefaed1164/ipython-8.39.0.tar.gz", hash = "sha256:4110ae96012c379b8b6db898a07e186c40a2a1ef5d57a7fa83166047d9da7624", size = 5513971, upload-time = "2026-03-27T10:02:13.94Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/56/4cc7fc9e9e3f38fd324f24f8afe0ad8bb5fa41283f37f1aaf9de0612c968/ipython-8.39.0-py3-none-any.whl", hash = "sha256:bb3c51c4fa8148ab1dea07a79584d1c854e234ea44aa1283bcb37bc75054651f", size = 831849, upload-time = "2026-03-27T10:02:07.846Z" }, +] + +[[package]] +name = "ipython" +version = "9.14.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130'", + "python_full_version == '3.11.*' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130'", + "python_full_version >= '3.12' and extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version == '3.11.*' and extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version >= '3.12' and sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version == '3.11.*' and sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version >= '3.12' and sys_platform == 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version == '3.11.*' and sys_platform == 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version >= '3.12' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version == '3.11.*' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", +] +dependencies = [ + { name = "colorama", marker = "(python_full_version >= '3.11' and sys_platform == 'win32') or (python_full_version < '3.11' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (python_full_version < '3.11' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (python_full_version < '3.11' and extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (sys_platform != 'win32' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (sys_platform != 'win32' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (sys_platform != 'win32' and extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "decorator", marker = "python_full_version >= '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "ipython-pygments-lexers", marker = "python_full_version >= '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "jedi", marker = "python_full_version >= '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "matplotlib-inline", marker = "python_full_version >= '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "pexpect", marker = "(python_full_version >= '3.11' and sys_platform != 'emscripten' and sys_platform != 'win32') or (python_full_version < '3.11' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (python_full_version < '3.11' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (python_full_version < '3.11' and extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (sys_platform == 'emscripten' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (sys_platform == 'emscripten' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (sys_platform == 'emscripten' and extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (sys_platform == 'win32' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (sys_platform == 'win32' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (sys_platform == 'win32' and extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "prompt-toolkit", marker = "python_full_version >= '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "psutil", marker = "(python_full_version >= '3.11' and sys_platform != 'emscripten') or (python_full_version < '3.11' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (python_full_version < '3.11' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (python_full_version < '3.11' and extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (sys_platform == 'emscripten' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (sys_platform == 'emscripten' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (sys_platform == 'emscripten' and extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "pygments", marker = "python_full_version >= '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "stack-data", marker = "python_full_version >= '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "traitlets", marker = "python_full_version >= '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "typing-extensions", marker = "python_full_version == '3.11.*' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e2/23/3a27530575643c8bb7bfc757a28e2e7ef80092afbf59a2bc5716320b6602/ipython-9.14.1.tar.gz", hash = "sha256:f913bf74df06d458e46ced84ca506c23797590d594b236fe60b14df213291e7b", size = 4433457, upload-time = "2026-06-05T08:12:34.921Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9d/22/58818a63eaf8982b67632b1bc20585c811611b15a8da19d6012323dc76a5/ipython-9.14.1-py3-none-any.whl", hash = "sha256:5d4a9ecaa3b10e6e5f269dd0948bdb58ca9cb851899cd23e07c320d3eb11613c", size = 627770, upload-time = "2026-06-05T08:12:33.045Z" }, +] + +[[package]] +name = "ipython-pygments-lexers" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pygments", marker = "python_full_version >= '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393, upload-time = "2025-01-17T11:24:34.505Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074, upload-time = "2025-01-17T11:24:33.271Z" }, +] + +[[package]] +name = "jaraco-classes" +version = "3.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "more-itertools" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/c0/ed4a27bc5571b99e3cff68f8a9fa5b56ff7df1c2251cc715a652ddd26402/jaraco.classes-3.4.0.tar.gz", hash = "sha256:47a024b51d0239c0dd8c8540c6c7f484be3b8fcf0b2d85c13825780d3b3f3acd", size = 11780, upload-time = "2024-03-31T07:27:36.643Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7f/66/b15ce62552d84bbfcec9a4873ab79d993a1dd4edb922cbfccae192bd5b5f/jaraco.classes-3.4.0-py3-none-any.whl", hash = "sha256:f662826b6bed8cace05e7ff873ce0f9283b5c924470fe664fff1c2f00f581790", size = 6777, upload-time = "2024-03-31T07:27:34.792Z" }, +] + +[[package]] +name = "jaraco-context" +version = "6.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "backports-tarfile", marker = "python_full_version < '3.12' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/af/50/4763cd07e722bb6285316d390a164bc7e479db9d90daa769f22578f698b4/jaraco_context-6.1.2.tar.gz", hash = "sha256:f1a6c9d391e661cc5b8d39861ff077a7dc24dc23833ccee564b234b81c82dfe3", size = 16801, upload-time = "2026-03-20T22:13:33.922Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f2/58/bc8954bda5fcda97bd7c19be11b85f91973d67a706ed4a3aec33e7de22db/jaraco_context-6.1.2-py3-none-any.whl", hash = "sha256:bf8150b79a2d5d91ae48629d8b427a8f7ba0e1097dd6202a9059f29a36379535", size = 7871, upload-time = "2026-03-20T22:13:32.808Z" }, +] + +[[package]] +name = "jaraco-functools" +version = "4.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "more-itertools" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/36/cf/ea4ef2920830dea3f5ab2ea4da6fb67724e6dca80ee2553788c3607243d0/jaraco_functools-4.5.0.tar.gz", hash = "sha256:3bb5665ea4a020cf78a7040e89154c77edadb3ca74f366479669c5999aa70b03", size = 20272, upload-time = "2026-05-15T21:34:10.025Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/96/9a/982e48afcffcd727a9144506720ffd4224b6b7e355c98641866f38b7c043/jaraco_functools-4.5.0-py3-none-any.whl", hash = "sha256:79ce39246eddbde4b3a03b77ea5f0f7878dc669b166a66cf3fa8e266aa3fa2f4", size = 10594, upload-time = "2026-05-15T21:34:08.595Z" }, +] + +[[package]] +name = "jedi" +version = "0.20.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "parso" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/46/b7/a3635f6a2d7cf5b5dd98064fc1d5fbbafcb25477bcea204a3a92145d158b/jedi-0.20.0.tar.gz", hash = "sha256:c3f4ccbd276696f4b19c54618d4fb18f9fc24b0aef02acf704b23f487daa1011", size = 3119416, upload-time = "2026-05-01T23:38:47.814Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/93/242e2eab5fe682ffcb8b0084bde703a41d51e17ee0f3a31ff0d9d813620a/jedi-0.20.0-py2.py3-none-any.whl", hash = "sha256:7bdd9c2634f56713299976f4cbd59cb3fa92165cc5e05ea811fb253480728b67", size = 4884812, upload-time = "2026-05-01T23:38:43.919Z" }, +] + +[[package]] +name = "jeepney" +version = "0.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7b/6f/357efd7602486741aa73ffc0617fb310a29b588ed0fd69c2399acbb85b0c/jeepney-0.9.0.tar.gz", hash = "sha256:cf0e9e845622b81e4a28df94c40345400256ec608d0e55bb8a3feaa9163f5732", size = 106758, upload-time = "2025-02-27T18:51:01.684Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b2/a3/e137168c9c44d18eff0376253da9f1e9234d0239e0ee230d2fee6cea8e55/jeepney-0.9.0-py3-none-any.whl", hash = "sha256:97e5714520c16fc0a45695e5365a2e11b81ea79bba796e26f9f1d178cb182683", size = 49010, upload-time = "2025-02-27T18:51:00.104Z" }, +] + +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, +] + +[[package]] +name = "jsonschema" +version = "4.26.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "jsonschema-specifications" }, + { name = "referencing" }, + { name = "rpds-py", version = "0.30.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "rpds-py", version = "2026.5.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b3/fc/e067678238fa451312d4c62bf6e6cf5ec56375422aee02f9cb5f909b3047/jsonschema-4.26.0.tar.gz", hash = "sha256:0c26707e2efad8aa1bfc5b7ce170f3fccc2e4918ff85989ba9ffa9facb2be326", size = 366583, upload-time = "2026-01-07T13:41:07.246Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/90/f63fb5873511e014207a475e2bb4e8b2e570d655b00ac19a9a0ca0a385ee/jsonschema-4.26.0-py3-none-any.whl", hash = "sha256:d489f15263b8d200f8387e64b4c3a75f06629559fb73deb8fdfb525f2dab50ce", size = 90630, upload-time = "2026-01-07T13:41:05.306Z" }, +] + +[[package]] +name = "jsonschema-specifications" +version = "2025.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "referencing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/74/a633ee74eb36c44aa6d1095e7cc5569bebf04342ee146178e2d36600708b/jsonschema_specifications-2025.9.1.tar.gz", hash = "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d", size = 32855, upload-time = "2025-09-08T01:34:59.186Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", size = 18437, upload-time = "2025-09-08T01:34:57.871Z" }, +] + +[[package]] +name = "jupyter-cache" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "click" }, + { name = "importlib-metadata" }, + { name = "nbclient" }, + { name = "nbformat" }, + { name = "pyyaml" }, + { name = "sqlalchemy" }, + { name = "tabulate" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bb/f7/3627358075f183956e8c4974603232b03afd4ddc7baf72c2bc9fff522291/jupyter_cache-1.0.1.tar.gz", hash = "sha256:16e808eb19e3fb67a223db906e131ea6e01f03aa27f49a7214ce6a5fec186fb9", size = 32048, upload-time = "2024-11-15T16:03:55.322Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/64/6b/67b87da9d36bff9df7d0efbd1a325fa372a43be7158effaf43ed7b22341d/jupyter_cache-1.0.1-py3-none-any.whl", hash = "sha256:9c3cafd825ba7da8b5830485343091143dff903e4d8c69db9349b728b140abf6", size = 33907, upload-time = "2024-11-15T16:03:54.021Z" }, +] + +[[package]] +name = "jupyter-client" +version = "8.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-core" }, + { name = "python-dateutil" }, + { name = "pyzmq" }, + { name = "tornado" }, + { name = "traitlets" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7d/dc/5512503b088997c2250b8bf18258fba9d9ce5ead641183700960d3c9d342/jupyter_client-8.9.1.tar.gz", hash = "sha256:a58f730dd9e728ba16ba1d62ebccf7ffe1ebbdbce4e95cfae941b7321ae1f4fa", size = 359256, upload-time = "2026-06-09T13:15:01.033Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/6f/56d39bf385c5c27988aebaf0c18a2a17e960575740100973511018bd904e/jupyter_client-8.9.1-py3-none-any.whl", hash = "sha256:0b7a295bc46e8751e9adae84781f726c851c1d911bd793edc4a3bde942e3da81", size = 109828, upload-time = "2026-06-09T13:14:58.835Z" }, +] + +[[package]] +name = "jupyter-core" +version = "5.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "platformdirs" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/02/49/9d1284d0dc65e2c757b74c6687b6d319b02f822ad039e5c512df9194d9dd/jupyter_core-5.9.1.tar.gz", hash = "sha256:4d09aaff303b9566c3ce657f580bd089ff5c91f5f89cf7d8846c3cdf465b5508", size = 89814, upload-time = "2025-10-16T19:19:18.444Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/e7/80988e32bf6f73919a113473a604f5a8f09094de312b9d52b79c2df7612b/jupyter_core-5.9.1-py3-none-any.whl", hash = "sha256:ebf87fdc6073d142e114c72c9e29a9d7ca03fad818c5d300ce2adc1fb0743407", size = 29032, upload-time = "2025-10-16T19:19:16.783Z" }, +] + +[[package]] +name = "jupyterlab-pygments" +version = "0.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/90/51/9187be60d989df97f5f0aba133fa54e7300f17616e065d1ada7d7646b6d6/jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d", size = 512900, upload-time = "2023-11-23T09:26:37.44Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780", size = 15884, upload-time = "2023-11-23T09:26:34.325Z" }, +] + +[[package]] +name = "karma-sphinx-theme" +version = "0.0.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/53/38/25be66e776ee0d088d19a0b3d1abc58020cf8cb88d921e8b72d1c25ae641/karma_sphinx_theme-0.0.8.tar.gz", hash = "sha256:5a95f91818b458bd5bdf62690828361a369a222f0721cd0e1eb2ea29056e8c27", size = 96101, upload-time = "2018-06-20T00:03:29.073Z" } + +[[package]] +name = "keyring" +version = "25.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "importlib-metadata", marker = "python_full_version < '3.12' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "jaraco-classes" }, + { name = "jaraco-context" }, + { name = "jaraco-functools" }, + { name = "jeepney", marker = "sys_platform == 'linux' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "pywin32-ctypes", marker = "sys_platform == 'win32' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "secretstorage", marker = "sys_platform == 'linux' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/43/4b/674af6ef2f97d56f0ab5153bf0bfa28ccb6c3ed4d1babf4305449668807b/keyring-25.7.0.tar.gz", hash = "sha256:fe01bd85eb3f8fb3dd0405defdeac9a5b4f6f0439edbb3149577f244a2e8245b", size = 63516, upload-time = "2025-11-16T16:26:09.482Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/db/e655086b7f3a705df045bf0933bdd9c2f79bb3c97bfef1384598bb79a217/keyring-25.7.0-py3-none-any.whl", hash = "sha256:be4a0b195f149690c166e850609a477c532ddbfbaed96a404d4e43f8d5e2689f", size = 39160, upload-time = "2025-11-16T16:26:08.402Z" }, +] + +[[package]] +name = "kiwisolver" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d0/67/9c61eccb13f0bdca9307614e782fec49ffdde0f7a2314935d489fa93cd9c/kiwisolver-1.5.0.tar.gz", hash = "sha256:d4193f3d9dc3f6f79aaed0e5637f45d98850ebf01f7ca20e69457f3e8946b66a", size = 103482, upload-time = "2026-03-09T13:15:53.382Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ac/f8/06549565caa026e540b7e7bab5c5a90eb7ca986015f4c48dace243cd24d9/kiwisolver-1.5.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:32cc0a5365239a6ea0c6ed461e8838d053b57e397443c0ca894dcc8e388d4374", size = 122802, upload-time = "2026-03-09T13:12:37.515Z" }, + { url = "https://files.pythonhosted.org/packages/84/eb/8476a0818850c563ff343ea7c9c05dcdcbd689a38e01aa31657df01f91fa/kiwisolver-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cc0b66c1eec9021353a4b4483afb12dfd50e3669ffbb9152d6842eb34c7e29fd", size = 66216, upload-time = "2026-03-09T13:12:38.812Z" }, + { url = "https://files.pythonhosted.org/packages/f3/c4/f9c8a6b4c21aed4198566e45923512986d6cef530e7263b3a5f823546561/kiwisolver-1.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:86e0287879f75621ae85197b0877ed2f8b7aa57b511c7331dce2eb6f4de7d476", size = 63917, upload-time = "2026-03-09T13:12:40.053Z" }, + { url = "https://files.pythonhosted.org/packages/f1/0e/ba4ae25d03722f64de8b2c13e80d82ab537a06b30fc7065183c6439357e3/kiwisolver-1.5.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:62f59da443c4f4849f73a51a193b1d9d258dcad0c41bc4d1b8fb2bcc04bfeb22", size = 1628776, upload-time = "2026-03-09T13:12:41.976Z" }, + { url = "https://files.pythonhosted.org/packages/8a/e4/3f43a011bc8a0860d1c96f84d32fa87439d3feedf66e672fef03bf5e8bac/kiwisolver-1.5.0-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9190426b7aa26c5229501fa297b8d0653cfd3f5a36f7990c264e157cbf886b3b", size = 1228164, upload-time = "2026-03-09T13:12:44.002Z" }, + { url = "https://files.pythonhosted.org/packages/4b/34/3a901559a1e0c218404f9a61a93be82d45cb8f44453ba43088644980f033/kiwisolver-1.5.0-cp310-cp310-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c8277104ded0a51e699c8c3aff63ce2c56d4ed5519a5f73e0fd7057f959a2b9e", size = 1246656, upload-time = "2026-03-09T13:12:45.557Z" }, + { url = "https://files.pythonhosted.org/packages/87/9e/f78c466ea20527822b95ad38f141f2de1dcd7f23fb8716b002b0d91bbe59/kiwisolver-1.5.0-cp310-cp310-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8f9baf6f0a6e7571c45c8863010b45e837c3ee1c2c77fcd6ef423be91b21fedb", size = 1295562, upload-time = "2026-03-09T13:12:47.562Z" }, + { url = "https://files.pythonhosted.org/packages/0a/66/fd0e4a612e3a286c24e6d6f3a5428d11258ed1909bc530ba3b59807fd980/kiwisolver-1.5.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cff8e5383db4989311f99e814feeb90c4723eb4edca425b9d5d9c3fefcdd9537", size = 2178473, upload-time = "2026-03-09T13:12:50.254Z" }, + { url = "https://files.pythonhosted.org/packages/dc/8e/6cac929e0049539e5ee25c1ee937556f379ba5204840d03008363ced662d/kiwisolver-1.5.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:ebae99ed6764f2b5771c522477b311be313e8841d2e0376db2b10922daebbba4", size = 2274035, upload-time = "2026-03-09T13:12:51.785Z" }, + { url = "https://files.pythonhosted.org/packages/ca/d3/9d0c18f1b52ea8074b792452cf17f1f5a56bd0302a85191f405cfbf9da16/kiwisolver-1.5.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:d5cd5189fc2b6a538b75ae45433140c4823463918f7b1617c31e68b085c0022c", size = 2443217, upload-time = "2026-03-09T13:12:53.329Z" }, + { url = "https://files.pythonhosted.org/packages/45/2a/6e19368803a038b2a90857bf4ee9e3c7b667216d045866bf22d3439fd75e/kiwisolver-1.5.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f42c23db5d1521218a3276bb08666dcb662896a0be7347cba864eca45ff64ede", size = 2249196, upload-time = "2026-03-09T13:12:55.057Z" }, + { url = "https://files.pythonhosted.org/packages/75/2b/3f641dfcbe72e222175d626bacf2f72c3b34312afec949dd1c50afa400f5/kiwisolver-1.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:94eff26096eb5395136634622515b234ecb6c9979824c1f5004c6e3c3c85ccd2", size = 73389, upload-time = "2026-03-09T13:12:56.496Z" }, + { url = "https://files.pythonhosted.org/packages/da/88/299b137b9e0025d8982e03d2d52c123b0a2b159e84b0ef1501ef446339cf/kiwisolver-1.5.0-cp310-cp310-win_arm64.whl", hash = "sha256:dd952e03bfbb096cfe2dd35cd9e00f269969b67536cb4370994afc20ff2d0875", size = 64782, upload-time = "2026-03-09T13:12:57.609Z" }, + { url = "https://files.pythonhosted.org/packages/12/dd/a495a9c104be1c476f0386e714252caf2b7eca883915422a64c50b88c6f5/kiwisolver-1.5.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9eed0f7edbb274413b6ee781cca50541c8c0facd3d6fd289779e494340a2b85c", size = 122798, upload-time = "2026-03-09T13:12:58.963Z" }, + { url = "https://files.pythonhosted.org/packages/11/60/37b4047a2af0cf5ef6d8b4b26e91829ae6fc6a2d1f74524bcb0e7cd28a32/kiwisolver-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c4923e404d6bcd91b6779c009542e5647fef32e4a5d75e115e3bbac6f2335eb", size = 66216, upload-time = "2026-03-09T13:13:00.155Z" }, + { url = "https://files.pythonhosted.org/packages/0a/aa/510dc933d87767584abfe03efa445889996c70c2990f6f87c3ebaa0a18c5/kiwisolver-1.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0df54df7e686afa55e6f21fb86195224a6d9beb71d637e8d7920c95cf0f89aac", size = 63911, upload-time = "2026-03-09T13:13:01.671Z" }, + { url = "https://files.pythonhosted.org/packages/80/46/bddc13df6c2a40741e0cc7865bb1c9ed4796b6760bd04ce5fae3928ef917/kiwisolver-1.5.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2517e24d7315eb51c10664cdb865195df38ab74456c677df67bb47f12d088a27", size = 1438209, upload-time = "2026-03-09T13:13:03.385Z" }, + { url = "https://files.pythonhosted.org/packages/fd/d6/76621246f5165e5372f02f5e6f3f48ea336a8f9e96e43997d45b240ed8cd/kiwisolver-1.5.0-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ff710414307fefa903e0d9bdf300972f892c23477829f49504e59834f4195398", size = 1248888, upload-time = "2026-03-09T13:13:05.231Z" }, + { url = "https://files.pythonhosted.org/packages/b2/c1/31559ec6fb39a5b48035ce29bb63ade628f321785f38c384dee3e2c08bc1/kiwisolver-1.5.0-cp311-cp311-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6176c1811d9d5a04fa391c490cc44f451e240697a16977f11c6f722efb9041db", size = 1266304, upload-time = "2026-03-09T13:13:06.743Z" }, + { url = "https://files.pythonhosted.org/packages/5e/ef/1cb8276f2d29cc6a41e0a042f27946ca347d3a4a75acf85d0a16aa6dcc82/kiwisolver-1.5.0-cp311-cp311-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:50847dca5d197fcbd389c805aa1a1cf32f25d2e7273dc47ab181a517666b68cc", size = 1319650, upload-time = "2026-03-09T13:13:08.607Z" }, + { url = "https://files.pythonhosted.org/packages/4c/e4/5ba3cecd7ce6236ae4a80f67e5d5531287337d0e1f076ca87a5abe4cd5d0/kiwisolver-1.5.0-cp311-cp311-manylinux_2_39_riscv64.whl", hash = "sha256:01808c6d15f4c3e8559595d6d1fe6411c68e4a3822b4b9972b44473b24f4e679", size = 970949, upload-time = "2026-03-09T13:13:10.299Z" }, + { url = "https://files.pythonhosted.org/packages/5a/69/dc61f7ae9a2f071f26004ced87f078235b5507ab6e5acd78f40365655034/kiwisolver-1.5.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:f1f9f4121ec58628c96baa3de1a55a4e3a333c5102c8e94b64e23bf7b2083309", size = 2199125, upload-time = "2026-03-09T13:13:11.841Z" }, + { url = "https://files.pythonhosted.org/packages/e5/7b/abbe0f1b5afa85f8d084b73e90e5f801c0939eba16ac2e49af7c61a6c28d/kiwisolver-1.5.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:b7d335370ae48a780c6e6a6bbfa97342f563744c39c35562f3f367665f5c1de2", size = 2293783, upload-time = "2026-03-09T13:13:14.399Z" }, + { url = "https://files.pythonhosted.org/packages/8a/80/5908ae149d96d81580d604c7f8aefd0e98f4fd728cf172f477e9f2a81744/kiwisolver-1.5.0-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:800ee55980c18545af444d93fdd60c56b580db5cc54867d8cbf8a1dc0829938c", size = 1960726, upload-time = "2026-03-09T13:13:16.047Z" }, + { url = "https://files.pythonhosted.org/packages/84/08/a78cb776f8c085b7143142ce479859cfec086bd09ee638a317040b6ef420/kiwisolver-1.5.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:c438f6ca858697c9ab67eb28246c92508af972e114cac34e57a6d4ba17a3ac08", size = 2464738, upload-time = "2026-03-09T13:13:17.897Z" }, + { url = "https://files.pythonhosted.org/packages/b1/e1/65584da5356ed6cb12c63791a10b208860ac40a83de165cb6a6751a686e3/kiwisolver-1.5.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:8c63c91f95173f9c2a67c7c526b2cea976828a0e7fced9cdcead2802dc10f8a4", size = 2270718, upload-time = "2026-03-09T13:13:19.421Z" }, + { url = "https://files.pythonhosted.org/packages/be/6c/28f17390b62b8f2f520e2915095b3c94d88681ecf0041e75389d9667f202/kiwisolver-1.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:beb7f344487cdcb9e1efe4b7a29681b74d34c08f0043a327a74da852a6749e7b", size = 73480, upload-time = "2026-03-09T13:13:20.818Z" }, + { url = "https://files.pythonhosted.org/packages/d8/0e/2ee5debc4f77a625778fec5501ff3e8036fe361b7ee28ae402a485bb9694/kiwisolver-1.5.0-cp311-cp311-win_arm64.whl", hash = "sha256:ad4ae4ffd1ee9cd11357b4c66b612da9888f4f4daf2f36995eda64bd45370cac", size = 64930, upload-time = "2026-03-09T13:13:21.997Z" }, + { url = "https://files.pythonhosted.org/packages/4d/b2/818b74ebea34dabe6d0c51cb1c572e046730e64844da6ed646d5298c40ce/kiwisolver-1.5.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:4e9750bc21b886308024f8a54ccb9a2cc38ac9fa813bf4348434e3d54f337ff9", size = 123158, upload-time = "2026-03-09T13:13:23.127Z" }, + { url = "https://files.pythonhosted.org/packages/bf/d9/405320f8077e8e1c5c4bd6adc45e1e6edf6d727b6da7f2e2533cf58bff71/kiwisolver-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:72ec46b7eba5b395e0a7b63025490d3214c11013f4aacb4f5e8d6c3041829588", size = 66388, upload-time = "2026-03-09T13:13:24.765Z" }, + { url = "https://files.pythonhosted.org/packages/99/9f/795fedf35634f746151ca8839d05681ceb6287fbed6cc1c9bf235f7887c2/kiwisolver-1.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ed3a984b31da7481b103f68776f7128a89ef26ed40f4dc41a2223cda7fb24819", size = 64068, upload-time = "2026-03-09T13:13:25.878Z" }, + { url = "https://files.pythonhosted.org/packages/c4/13/680c54afe3e65767bed7ec1a15571e1a2f1257128733851ade24abcefbcc/kiwisolver-1.5.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bb5136fb5352d3f422df33f0c879a1b0c204004324150cc3b5e3c4f310c9049f", size = 1477934, upload-time = "2026-03-09T13:13:27.166Z" }, + { url = "https://files.pythonhosted.org/packages/c8/2f/cebfcdb60fd6a9b0f6b47a9337198bcbad6fbe15e68189b7011fd914911f/kiwisolver-1.5.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b2af221f268f5af85e776a73d62b0845fc8baf8ef0abfae79d29c77d0e776aaf", size = 1278537, upload-time = "2026-03-09T13:13:28.707Z" }, + { url = "https://files.pythonhosted.org/packages/f2/0d/9b782923aada3fafb1d6b84e13121954515c669b18af0c26e7d21f579855/kiwisolver-1.5.0-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b0f172dc8ffaccb8522d7c5d899de00133f2f1ca7b0a49b7da98e901de87bf2d", size = 1296685, upload-time = "2026-03-09T13:13:30.528Z" }, + { url = "https://files.pythonhosted.org/packages/27/70/83241b6634b04fe44e892688d5208332bde130f38e610c0418f9ede47ded/kiwisolver-1.5.0-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6ab8ba9152203feec73758dad83af9a0bbe05001eb4639e547207c40cfb52083", size = 1346024, upload-time = "2026-03-09T13:13:32.818Z" }, + { url = "https://files.pythonhosted.org/packages/e4/db/30ed226fb271ae1a6431fc0fe0edffb2efe23cadb01e798caeb9f2ceae8f/kiwisolver-1.5.0-cp312-cp312-manylinux_2_39_riscv64.whl", hash = "sha256:cdee07c4d7f6d72008d3f73b9bf027f4e11550224c7c50d8df1ae4a37c1402a6", size = 987241, upload-time = "2026-03-09T13:13:34.435Z" }, + { url = "https://files.pythonhosted.org/packages/ec/bd/c314595208e4c9587652d50959ead9e461995389664e490f4dce7ff0f782/kiwisolver-1.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7c60d3c9b06fb23bd9c6139281ccbdc384297579ae037f08ae90c69f6845c0b1", size = 2227742, upload-time = "2026-03-09T13:13:36.4Z" }, + { url = "https://files.pythonhosted.org/packages/c1/43/0499cec932d935229b5543d073c2b87c9c22846aab48881e9d8d6e742a2d/kiwisolver-1.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:e315e5ec90d88e140f57696ff85b484ff68bb311e36f2c414aa4286293e6dee0", size = 2323966, upload-time = "2026-03-09T13:13:38.204Z" }, + { url = "https://files.pythonhosted.org/packages/3d/6f/79b0d760907965acfd9d61826a3d41f8f093c538f55cd2633d3f0db269f6/kiwisolver-1.5.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:1465387ac63576c3e125e5337a6892b9e99e0627d52317f3ca79e6930d889d15", size = 1977417, upload-time = "2026-03-09T13:13:39.966Z" }, + { url = "https://files.pythonhosted.org/packages/ab/31/01d0537c41cb75a551a438c3c7a80d0c60d60b81f694dac83dd436aec0d0/kiwisolver-1.5.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:530a3fd64c87cffa844d4b6b9768774763d9caa299e9b75d8eca6a4423b31314", size = 2491238, upload-time = "2026-03-09T13:13:41.698Z" }, + { url = "https://files.pythonhosted.org/packages/e4/34/8aefdd0be9cfd00a44509251ba864f5caf2991e36772e61c408007e7f417/kiwisolver-1.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1d9daea4ea6b9be74fe2f01f7fbade8d6ffab263e781274cffca0dba9be9eec9", size = 2294947, upload-time = "2026-03-09T13:13:43.343Z" }, + { url = "https://files.pythonhosted.org/packages/ad/cf/0348374369ca588f8fe9c338fae49fa4e16eeb10ffb3d012f23a54578a9e/kiwisolver-1.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:f18c2d9782259a6dc132fdc7a63c168cbc74b35284b6d75c673958982a378384", size = 73569, upload-time = "2026-03-09T13:13:45.792Z" }, + { url = "https://files.pythonhosted.org/packages/28/26/192b26196e2316e2bd29deef67e37cdf9870d9af8e085e521afff0fed526/kiwisolver-1.5.0-cp312-cp312-win_arm64.whl", hash = "sha256:f7c7553b13f69c1b29a5bde08ddc6d9d0c8bfb84f9ed01c30db25944aeb852a7", size = 64997, upload-time = "2026-03-09T13:13:46.878Z" }, + { url = "https://files.pythonhosted.org/packages/9d/69/024d6711d5ba575aa65d5538042e99964104e97fa153a9f10bc369182bc2/kiwisolver-1.5.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:fd40bb9cd0891c4c3cb1ddf83f8bbfa15731a248fdc8162669405451e2724b09", size = 123166, upload-time = "2026-03-09T13:13:48.032Z" }, + { url = "https://files.pythonhosted.org/packages/ce/48/adbb40df306f587054a348831220812b9b1d787aff714cfbc8556e38fccd/kiwisolver-1.5.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c0e1403fd7c26d77c1f03e096dc58a5c726503fa0db0456678b8668f76f521e3", size = 66395, upload-time = "2026-03-09T13:13:49.365Z" }, + { url = "https://files.pythonhosted.org/packages/a8/3a/d0a972b34e1c63e2409413104216cd1caa02c5a37cb668d1687d466c1c45/kiwisolver-1.5.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:dda366d548e89a90d88a86c692377d18d8bd64b39c1fb2b92cb31370e2896bbd", size = 64065, upload-time = "2026-03-09T13:13:50.562Z" }, + { url = "https://files.pythonhosted.org/packages/2b/0a/7b98e1e119878a27ba8618ca1e18b14f992ff1eda40f47bccccf4de44121/kiwisolver-1.5.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:332b4f0145c30b5f5ad9374881133e5aa64320428a57c2c2b61e9d891a51c2f3", size = 1477903, upload-time = "2026-03-09T13:13:52.084Z" }, + { url = "https://files.pythonhosted.org/packages/18/d8/55638d89ffd27799d5cc3d8aa28e12f4ce7a64d67b285114dbedc8ea4136/kiwisolver-1.5.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0c50b89ffd3e1a911c69a1dd3de7173c0cd10b130f56222e57898683841e4f96", size = 1278751, upload-time = "2026-03-09T13:13:54.673Z" }, + { url = "https://files.pythonhosted.org/packages/b8/97/b4c8d0d18421ecceba20ad8701358453b88e32414e6f6950b5a4bad54e65/kiwisolver-1.5.0-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:4db576bb8c3ef9365f8b40fe0f671644de6736ae2c27a2c62d7d8a1b4329f099", size = 1296793, upload-time = "2026-03-09T13:13:56.287Z" }, + { url = "https://files.pythonhosted.org/packages/c4/10/f862f94b6389d8957448ec9df59450b81bec4abb318805375c401a1e6892/kiwisolver-1.5.0-cp313-cp313-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0b85aad90cea8ac6797a53b5d5f2e967334fa4d1149f031c4537569972596cb8", size = 1346041, upload-time = "2026-03-09T13:13:58.269Z" }, + { url = "https://files.pythonhosted.org/packages/a3/6a/f1650af35821eaf09de398ec0bc2aefc8f211f0cda50204c9f1673741ba9/kiwisolver-1.5.0-cp313-cp313-manylinux_2_39_riscv64.whl", hash = "sha256:d36ca54cb4c6c4686f7cbb7b817f66f5911c12ddb519450bbe86707155028f87", size = 987292, upload-time = "2026-03-09T13:13:59.871Z" }, + { url = "https://files.pythonhosted.org/packages/de/19/d7fb82984b9238115fe629c915007be608ebd23dc8629703d917dbfaffd4/kiwisolver-1.5.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:38f4a703656f493b0ad185211ccfca7f0386120f022066b018eb5296d8613e23", size = 2227865, upload-time = "2026-03-09T13:14:01.401Z" }, + { url = "https://files.pythonhosted.org/packages/7f/b9/46b7f386589fd222dac9e9de9c956ce5bcefe2ee73b4e79891381dda8654/kiwisolver-1.5.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3ac2360e93cb41be81121755c6462cff3beaa9967188c866e5fce5cf13170859", size = 2324369, upload-time = "2026-03-09T13:14:02.972Z" }, + { url = "https://files.pythonhosted.org/packages/92/8b/95e237cf3d9c642960153c769ddcbe278f182c8affb20cecc1cc983e7cc5/kiwisolver-1.5.0-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:c95cab08d1965db3d84a121f1c7ce7479bdd4072c9b3dafd8fecce48a2e6b902", size = 1977989, upload-time = "2026-03-09T13:14:04.503Z" }, + { url = "https://files.pythonhosted.org/packages/1b/95/980c9df53501892784997820136c01f62bc1865e31b82b9560f980c0e649/kiwisolver-1.5.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:fc20894c3d21194d8041a28b65622d5b86db786da6e3cfe73f0c762951a61167", size = 2491645, upload-time = "2026-03-09T13:14:06.106Z" }, + { url = "https://files.pythonhosted.org/packages/cb/32/900647fd0840abebe1561792c6b31e6a7c0e278fc3973d30572a965ca14c/kiwisolver-1.5.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7a32f72973f0f950c1920475d5c5ea3d971b81b6f0ec53b8d0a956cc965f22e0", size = 2295237, upload-time = "2026-03-09T13:14:08.891Z" }, + { url = "https://files.pythonhosted.org/packages/be/8a/be60e3bbcf513cc5a50f4a3e88e1dcecebb79c1ad607a7222877becaa101/kiwisolver-1.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:0bf3acf1419fa93064a4c2189ac0b58e3be7872bf6ee6177b0d4c63dc4cea276", size = 73573, upload-time = "2026-03-09T13:14:12.327Z" }, + { url = "https://files.pythonhosted.org/packages/4d/d2/64be2e429eb4fca7f7e1c52a91b12663aeaf25de3895e5cca0f47ef2a8d0/kiwisolver-1.5.0-cp313-cp313-win_arm64.whl", hash = "sha256:fa8eb9ecdb7efb0b226acec134e0d709e87a909fa4971a54c0c4f6e88635484c", size = 64998, upload-time = "2026-03-09T13:14:13.469Z" }, + { url = "https://files.pythonhosted.org/packages/b0/69/ce68dd0c85755ae2de490bf015b62f2cea5f6b14ff00a463f9d0774449ff/kiwisolver-1.5.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:db485b3847d182b908b483b2ed133c66d88d49cacf98fd278fadafe11b4478d1", size = 125700, upload-time = "2026-03-09T13:14:14.636Z" }, + { url = "https://files.pythonhosted.org/packages/74/aa/937aac021cf9d4349990d47eb319309a51355ed1dbdc9c077cdc9224cb11/kiwisolver-1.5.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:be12f931839a3bdfe28b584db0e640a65a8bcbc24560ae3fdb025a449b3d754e", size = 67537, upload-time = "2026-03-09T13:14:15.808Z" }, + { url = "https://files.pythonhosted.org/packages/ee/20/3a87fbece2c40ad0f6f0aefa93542559159c5f99831d596050e8afae7a9f/kiwisolver-1.5.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:16b85d37c2cbb3253226d26e64663f755d88a03439a9c47df6246b35defbdfb7", size = 65514, upload-time = "2026-03-09T13:14:18.035Z" }, + { url = "https://files.pythonhosted.org/packages/f0/7f/f943879cda9007c45e1f7dba216d705c3a18d6b35830e488b6c6a4e7cdf0/kiwisolver-1.5.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4432b835675f0ea7414aab3d37d119f7226d24869b7a829caeab49ebda407b0c", size = 1584848, upload-time = "2026-03-09T13:14:19.745Z" }, + { url = "https://files.pythonhosted.org/packages/37/f8/4d4f85cc1870c127c88d950913370dd76138482161cd07eabbc450deff01/kiwisolver-1.5.0-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b0feb50971481a2cc44d94e88bdb02cdd497618252ae226b8eb1201b957e368", size = 1391542, upload-time = "2026-03-09T13:14:21.54Z" }, + { url = "https://files.pythonhosted.org/packages/04/0b/65dd2916c84d252b244bd405303220f729e7c17c9d7d33dca6feeff9ffc4/kiwisolver-1.5.0-cp313-cp313t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:56fa888f10d0f367155e76ce849fa1166fc9730d13bd2d65a2aa13b6f5424489", size = 1404447, upload-time = "2026-03-09T13:14:23.205Z" }, + { url = "https://files.pythonhosted.org/packages/39/5c/2606a373247babce9b1d056c03a04b65f3cf5290a8eac5d7bdead0a17e21/kiwisolver-1.5.0-cp313-cp313t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:940dda65d5e764406b9fb92761cbf462e4e63f712ab60ed98f70552e496f3bf1", size = 1455918, upload-time = "2026-03-09T13:14:24.74Z" }, + { url = "https://files.pythonhosted.org/packages/d5/d1/c6078b5756670658e9192a2ef11e939c92918833d2745f85cd14a6004bdf/kiwisolver-1.5.0-cp313-cp313t-manylinux_2_39_riscv64.whl", hash = "sha256:89fc958c702ee9a745e4700378f5d23fddbc46ff89e8fdbf5395c24d5c1452a3", size = 1072856, upload-time = "2026-03-09T13:14:26.597Z" }, + { url = "https://files.pythonhosted.org/packages/cb/c8/7def6ddf16eb2b3741d8b172bdaa9af882b03c78e9b0772975408801fa63/kiwisolver-1.5.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9027d773c4ff81487181a925945743413f6069634d0b122d0b37684ccf4f1e18", size = 2333580, upload-time = "2026-03-09T13:14:28.237Z" }, + { url = "https://files.pythonhosted.org/packages/9e/87/2ac1fce0eb1e616fcd3c35caa23e665e9b1948bb984f4764790924594128/kiwisolver-1.5.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:5b233ea3e165e43e35dba1d2b8ecc21cf070b45b65ae17dd2747d2713d942021", size = 2423018, upload-time = "2026-03-09T13:14:30.018Z" }, + { url = "https://files.pythonhosted.org/packages/67/13/c6700ccc6cc218716bfcda4935e4b2997039869b4ad8a94f364c5a3b8e63/kiwisolver-1.5.0-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:ce9bf03dad3b46408c08649c6fbd6ca28a9fce0eb32fdfffa6775a13103b5310", size = 2062804, upload-time = "2026-03-09T13:14:32.888Z" }, + { url = "https://files.pythonhosted.org/packages/1b/bd/877056304626943ff0f1f44c08f584300c199b887cb3176cd7e34f1515f1/kiwisolver-1.5.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:fc4d3f1fb9ca0ae9f97b095963bc6326f1dbfd3779d6679a1e016b9baaa153d3", size = 2597482, upload-time = "2026-03-09T13:14:34.971Z" }, + { url = "https://files.pythonhosted.org/packages/75/19/c60626c47bf0f8ac5dcf72c6c98e266d714f2fbbfd50cf6dab5ede3aaa50/kiwisolver-1.5.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f443b4825c50a51ee68585522ab4a1d1257fac65896f282b4c6763337ac9f5d2", size = 2394328, upload-time = "2026-03-09T13:14:36.816Z" }, + { url = "https://files.pythonhosted.org/packages/47/84/6a6d5e5bb8273756c27b7d810d47f7ef2f1f9b9fd23c9ee9a3f8c75c9cef/kiwisolver-1.5.0-cp313-cp313t-win_arm64.whl", hash = "sha256:893ff3a711d1b515ba9da14ee090519bad4610ed1962fbe298a434e8c5f8db53", size = 68410, upload-time = "2026-03-09T13:14:38.695Z" }, + { url = "https://files.pythonhosted.org/packages/e4/d7/060f45052f2a01ad5762c8fdecd6d7a752b43400dc29ff75cd47225a40fd/kiwisolver-1.5.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:8df31fe574b8b3993cc61764f40941111b25c2d9fea13d3ce24a49907cd2d615", size = 123231, upload-time = "2026-03-09T13:14:41.323Z" }, + { url = "https://files.pythonhosted.org/packages/c2/a7/78da680eadd06ff35edef6ef68a1ad273bad3e2a0936c9a885103230aece/kiwisolver-1.5.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:1d49a49ac4cbfb7c1375301cd1ec90169dfeae55ff84710d782260ce77a75a02", size = 66489, upload-time = "2026-03-09T13:14:42.534Z" }, + { url = "https://files.pythonhosted.org/packages/49/b2/97980f3ad4fae37dd7fe31626e2bf75fbf8bdf5d303950ec1fab39a12da8/kiwisolver-1.5.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0cbe94b69b819209a62cb27bdfa5dc2a8977d8de2f89dfd97ba4f53ed3af754e", size = 64063, upload-time = "2026-03-09T13:14:44.759Z" }, + { url = "https://files.pythonhosted.org/packages/e7/f9/b06c934a6aa8bc91f566bd2a214fd04c30506c2d9e2b6b171953216a65b6/kiwisolver-1.5.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:80aa065ffd378ff784822a6d7c3212f2d5f5e9c3589614b5c228b311fd3063ac", size = 1475913, upload-time = "2026-03-09T13:14:46.247Z" }, + { url = "https://files.pythonhosted.org/packages/6b/f0/f768ae564a710135630672981231320bc403cf9152b5596ec5289de0f106/kiwisolver-1.5.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e7f886f47ab881692f278ae901039a234e4025a68e6dfab514263a0b1c4ae05", size = 1282782, upload-time = "2026-03-09T13:14:48.458Z" }, + { url = "https://files.pythonhosted.org/packages/e2/9f/1de7aad00697325f05238a5f2eafbd487fb637cc27a558b5367a5f37fb7f/kiwisolver-1.5.0-cp314-cp314-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5060731cc3ed12ca3a8b57acd4aeca5bbc2f49216dd0bec1650a1acd89486bcd", size = 1300815, upload-time = "2026-03-09T13:14:50.721Z" }, + { url = "https://files.pythonhosted.org/packages/5a/c2/297f25141d2e468e0ce7f7a7b92e0cf8918143a0cbd3422c1ad627e85a06/kiwisolver-1.5.0-cp314-cp314-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7a4aa69609f40fce3cbc3f87b2061f042eee32f94b8f11db707b66a26461591a", size = 1347925, upload-time = "2026-03-09T13:14:52.304Z" }, + { url = "https://files.pythonhosted.org/packages/b9/d3/f4c73a02eb41520c47610207b21afa8cdd18fdbf64ffd94674ae21c4812d/kiwisolver-1.5.0-cp314-cp314-manylinux_2_39_riscv64.whl", hash = "sha256:d168fda2dbff7b9b5f38e693182d792a938c31db4dac3a80a4888de603c99554", size = 991322, upload-time = "2026-03-09T13:14:54.637Z" }, + { url = "https://files.pythonhosted.org/packages/7b/46/d3f2efef7732fcda98d22bf4ad5d3d71d545167a852ca710a494f4c15343/kiwisolver-1.5.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:413b820229730d358efd838ecbab79902fe97094565fdc80ddb6b0a18c18a581", size = 2232857, upload-time = "2026-03-09T13:14:56.471Z" }, + { url = "https://files.pythonhosted.org/packages/3f/ec/2d9756bf2b6d26ae4349b8d3662fb3993f16d80c1f971c179ce862b9dbae/kiwisolver-1.5.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:5124d1ea754509b09e53738ec185584cc609aae4a3b510aaf4ed6aa047ef9303", size = 2329376, upload-time = "2026-03-09T13:14:58.072Z" }, + { url = "https://files.pythonhosted.org/packages/8f/9f/876a0a0f2260f1bde92e002b3019a5fabc35e0939c7d945e0fa66185eb20/kiwisolver-1.5.0-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:e4415a8db000bf49a6dd1c478bf70062eaacff0f462b92b0ba68791a905861f9", size = 1982549, upload-time = "2026-03-09T13:14:59.668Z" }, + { url = "https://files.pythonhosted.org/packages/6c/4f/ba3624dfac23a64d54ac4179832860cb537c1b0af06024936e82ca4154a0/kiwisolver-1.5.0-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:d618fd27420381a4f6044faa71f46d8bfd911bd077c555f7138ed88729bfbe79", size = 2494680, upload-time = "2026-03-09T13:15:01.364Z" }, + { url = "https://files.pythonhosted.org/packages/39/b7/97716b190ab98911b20d10bf92eca469121ec483b8ce0edd314f51bc85af/kiwisolver-1.5.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5092eb5b1172947f57d6ea7d89b2f29650414e4293c47707eb499ec07a0ac796", size = 2297905, upload-time = "2026-03-09T13:15:03.925Z" }, + { url = "https://files.pythonhosted.org/packages/a3/36/4e551e8aa55c9188bca9abb5096805edbf7431072b76e2298e34fd3a3008/kiwisolver-1.5.0-cp314-cp314-win_amd64.whl", hash = "sha256:d76e2d8c75051d58177e762164d2e9ab92886534e3a12e795f103524f221dd8e", size = 75086, upload-time = "2026-03-09T13:15:07.775Z" }, + { url = "https://files.pythonhosted.org/packages/70/15/9b90f7df0e31a003c71649cf66ef61c3c1b862f48c81007fa2383c8bd8d7/kiwisolver-1.5.0-cp314-cp314-win_arm64.whl", hash = "sha256:fa6248cd194edff41d7ea9425ced8ca3a6f838bfb295f6f1d6e6bb694a8518df", size = 66577, upload-time = "2026-03-09T13:15:09.139Z" }, + { url = "https://files.pythonhosted.org/packages/17/01/7dc8c5443ff42b38e72731643ed7cf1ed9bf01691ae5cdca98501999ed83/kiwisolver-1.5.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:d1ffeb80b5676463d7a7d56acbe8e37a20ce725570e09549fe738e02ca6b7e1e", size = 125794, upload-time = "2026-03-09T13:15:10.525Z" }, + { url = "https://files.pythonhosted.org/packages/46/8a/b4ebe46ebaac6a303417fab10c2e165c557ddaff558f9699d302b256bc53/kiwisolver-1.5.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:bc4d8e252f532ab46a1de9349e2d27b91fce46736a9eedaa37beaca66f574ed4", size = 67646, upload-time = "2026-03-09T13:15:12.016Z" }, + { url = "https://files.pythonhosted.org/packages/60/35/10a844afc5f19d6f567359bf4789e26661755a2f36200d5d1ed8ad0126e5/kiwisolver-1.5.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:6783e069732715ad0c3ce96dbf21dbc2235ab0593f2baf6338101f70371f4028", size = 65511, upload-time = "2026-03-09T13:15:13.311Z" }, + { url = "https://files.pythonhosted.org/packages/f8/8a/685b297052dd041dcebce8e8787b58923b6e78acc6115a0dc9189011c44b/kiwisolver-1.5.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e7c4c09a490dc4d4a7f8cbee56c606a320f9dc28cf92a7157a39d1ce7676a657", size = 1584858, upload-time = "2026-03-09T13:15:15.103Z" }, + { url = "https://files.pythonhosted.org/packages/9e/80/04865e3d4638ac5bddec28908916df4a3075b8c6cc101786a96803188b96/kiwisolver-1.5.0-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2a075bd7bd19c70cf67c8badfa36cf7c5d8de3c9ddb8420c51e10d9c50e94920", size = 1392539, upload-time = "2026-03-09T13:15:16.661Z" }, + { url = "https://files.pythonhosted.org/packages/ba/01/77a19cacc0893fa13fafa46d1bba06fb4dc2360b3292baf4b56d8e067b24/kiwisolver-1.5.0-cp314-cp314t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:bdd3e53429ff02aa319ba59dfe4ceeec345bf46cf180ec2cf6fd5b942e7975e9", size = 1405310, upload-time = "2026-03-09T13:15:18.229Z" }, + { url = "https://files.pythonhosted.org/packages/53/39/bcaf5d0cca50e604cfa9b4e3ae1d64b50ca1ae5b754122396084599ef903/kiwisolver-1.5.0-cp314-cp314t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3cdcb35dc9d807259c981a85531048ede628eabcffb3239adf3d17463518992d", size = 1456244, upload-time = "2026-03-09T13:15:20.444Z" }, + { url = "https://files.pythonhosted.org/packages/d0/7a/72c187abc6975f6978c3e39b7cf67aeb8b3c0a8f9790aa7fd412855e9e1f/kiwisolver-1.5.0-cp314-cp314t-manylinux_2_39_riscv64.whl", hash = "sha256:70d593af6a6ca332d1df73d519fddb5148edb15cd90d5f0155e3746a6d4fcc65", size = 1073154, upload-time = "2026-03-09T13:15:22.039Z" }, + { url = "https://files.pythonhosted.org/packages/c7/ca/cf5b25783ebbd59143b4371ed0c8428a278abe68d6d0104b01865b1bbd0f/kiwisolver-1.5.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:377815a8616074cabbf3f53354e1d040c35815a134e01d7614b7692e4bf8acfa", size = 2334377, upload-time = "2026-03-09T13:15:23.741Z" }, + { url = "https://files.pythonhosted.org/packages/4a/e5/b1f492adc516796e88751282276745340e2a72dcd0d36cf7173e0daf3210/kiwisolver-1.5.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:0255a027391d52944eae1dbb5d4cc5903f57092f3674e8e544cdd2622826b3f0", size = 2425288, upload-time = "2026-03-09T13:15:25.789Z" }, + { url = "https://files.pythonhosted.org/packages/e6/e5/9b21fbe91a61b8f409d74a26498706e97a48008bfcd1864373d32a6ba31c/kiwisolver-1.5.0-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:012b1eb16e28718fa782b5e61dc6f2da1f0792ca73bd05d54de6cb9561665fc9", size = 2063158, upload-time = "2026-03-09T13:15:27.63Z" }, + { url = "https://files.pythonhosted.org/packages/b1/02/83f47986138310f95ea95531f851b2a62227c11cbc3e690ae1374fe49f0f/kiwisolver-1.5.0-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:0e3aafb33aed7479377e5e9a82e9d4bf87063741fc99fc7ae48b0f16e32bdd6f", size = 2597260, upload-time = "2026-03-09T13:15:29.421Z" }, + { url = "https://files.pythonhosted.org/packages/07/18/43a5f24608d8c313dd189cf838c8e68d75b115567c6279de7796197cfb6a/kiwisolver-1.5.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:e7a116ae737f0000343218c4edf5bd45893bfeaff0993c0b215d7124c9f77646", size = 2394403, upload-time = "2026-03-09T13:15:31.517Z" }, + { url = "https://files.pythonhosted.org/packages/3b/b5/98222136d839b8afabcaa943b09bd05888c2d36355b7e448550211d1fca4/kiwisolver-1.5.0-cp314-cp314t-win_amd64.whl", hash = "sha256:1dd9b0b119a350976a6d781e7278ec7aca0b201e1a9e2d23d9804afecb6ca681", size = 79687, upload-time = "2026-03-09T13:15:33.204Z" }, + { url = "https://files.pythonhosted.org/packages/99/a2/ca7dc962848040befed12732dff6acae7fb3c4f6fc4272b3f6c9a30b8713/kiwisolver-1.5.0-cp314-cp314t-win_arm64.whl", hash = "sha256:58f812017cd2985c21fbffb4864d59174d4903dd66fa23815e74bbc7a0e2dd57", size = 70032, upload-time = "2026-03-09T13:15:34.411Z" }, + { url = "https://files.pythonhosted.org/packages/1c/fa/2910df836372d8761bb6eff7d8bdcb1613b5c2e03f260efe7abe34d388a7/kiwisolver-1.5.0-graalpy312-graalpy250_312_native-macosx_10_13_x86_64.whl", hash = "sha256:5ae8e62c147495b01a0f4765c878e9bfdf843412446a247e28df59936e99e797", size = 130262, upload-time = "2026-03-09T13:15:35.629Z" }, + { url = "https://files.pythonhosted.org/packages/0f/41/c5f71f9f00aabcc71fee8b7475e3f64747282580c2fe748961ba29b18385/kiwisolver-1.5.0-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:f6764a4ccab3078db14a632420930f6186058750df066b8ea2a7106df91d3203", size = 138036, upload-time = "2026-03-09T13:15:36.894Z" }, + { url = "https://files.pythonhosted.org/packages/fa/06/7399a607f434119c6e1fdc8ec89a8d51ccccadf3341dee4ead6bd14caaf5/kiwisolver-1.5.0-graalpy312-graalpy250_312_native-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c31c13da98624f957b0fb1b5bae5383b2333c2c3f6793d9825dd5ce79b525cb7", size = 194295, upload-time = "2026-03-09T13:15:38.22Z" }, + { url = "https://files.pythonhosted.org/packages/b5/91/53255615acd2a1eaca307ede3c90eb550bae9c94581f8c00081b6b1c8f44/kiwisolver-1.5.0-graalpy312-graalpy250_312_native-win_amd64.whl", hash = "sha256:1f1489f769582498610e015a8ef2d36f28f505ab3096d0e16b4858a9ec214f57", size = 75987, upload-time = "2026-03-09T13:15:39.65Z" }, + { url = "https://files.pythonhosted.org/packages/17/6f/6fd4f690a40c2582fa34b97d2678f718acf3706b91d270c65ecb455d0a06/kiwisolver-1.5.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:295d9ffe712caa9f8a3081de8d32fc60191b4b51c76f02f951fd8407253528f4", size = 59606, upload-time = "2026-03-09T13:15:40.81Z" }, + { url = "https://files.pythonhosted.org/packages/82/a0/2355d5e3b338f13ce63f361abb181e3b6ea5fffdb73f739b3e80efa76159/kiwisolver-1.5.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:51e8c4084897de9f05898c2c2a39af6318044ae969d46ff7a34ed3f96274adca", size = 57537, upload-time = "2026-03-09T13:15:42.071Z" }, + { url = "https://files.pythonhosted.org/packages/c8/b9/1d50e610ecadebe205b71d6728fd224ce0e0ca6aba7b9cbe1da049203ac5/kiwisolver-1.5.0-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b83af57bdddef03c01a9138034c6ff03181a3028d9a1003b301eb1a55e161a3f", size = 79888, upload-time = "2026-03-09T13:15:43.317Z" }, + { url = "https://files.pythonhosted.org/packages/cd/ee/b85ffcd75afed0357d74f0e6fc02a4507da441165de1ca4760b9f496390d/kiwisolver-1.5.0-pp310-pypy310_pp73-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bf4679a3d71012a7c2bf360e5cd878fbd5e4fcac0896b56393dec239d81529ed", size = 77584, upload-time = "2026-03-09T13:15:44.605Z" }, + { url = "https://files.pythonhosted.org/packages/6b/dd/644d0dde6010a8583b4cd66dd41c5f83f5325464d15c4f490b3340ab73b4/kiwisolver-1.5.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:41024ed50e44ab1a60d3fe0a9d15a4ccc9f5f2b1d814ff283c8d01134d5b81bc", size = 73390, upload-time = "2026-03-09T13:15:45.832Z" }, + { url = "https://files.pythonhosted.org/packages/e9/eb/5fcbbbf9a0e2c3a35effb88831a483345326bbc3a030a3b5b69aee647f84/kiwisolver-1.5.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:ec4c85dc4b687c7f7f15f553ff26a98bfe8c58f5f7f0ac8905f0ba4c7be60232", size = 59532, upload-time = "2026-03-09T13:15:47.047Z" }, + { url = "https://files.pythonhosted.org/packages/c3/9b/e17104555bb4db148fd52327feea1e96be4b88e8e008b029002c281a21ab/kiwisolver-1.5.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:12e91c215a96e39f57989c8912ae761286ac5a9584d04030ceb3368a357f017a", size = 57420, upload-time = "2026-03-09T13:15:48.199Z" }, + { url = "https://files.pythonhosted.org/packages/48/44/2b5b95b7aa39fb2d8d9d956e0f3d5d45aef2ae1d942d4c3ffac2f9cfed1a/kiwisolver-1.5.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:be4a51a55833dc29ab5d7503e7bcb3b3af3402d266018137127450005cdfe737", size = 79892, upload-time = "2026-03-09T13:15:49.694Z" }, + { url = "https://files.pythonhosted.org/packages/52/7d/7157f9bba6b455cfb4632ed411e199fc8b8977642c2b12082e1bd9e6d173/kiwisolver-1.5.0-pp311-pypy311_pp73-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:daae526907e262de627d8f70058a0f64acc9e2641c164c99c8f594b34a799a16", size = 77603, upload-time = "2026-03-09T13:15:50.945Z" }, + { url = "https://files.pythonhosted.org/packages/0a/dd/8050c947d435c8d4bc94e3252f4d8bb8a76cfb424f043a8680be637a57f1/kiwisolver-1.5.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:59cd8683f575d96df5bb48f6add94afc055012c29e28124fcae2b63661b9efb1", size = 73558, upload-time = "2026-03-09T13:15:52.112Z" }, +] + +[[package]] +name = "latexcodec" +version = "3.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/27/dd/4270b2c5e2ee49316c3859e62293bd2ea8e382339d63ab7bbe9f39c0ec3b/latexcodec-3.0.1.tar.gz", hash = "sha256:e78a6911cd72f9dec35031c6ec23584de6842bfbc4610a9678868d14cdfb0357", size = 31222, upload-time = "2025-06-17T18:47:34.051Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b5/40/23569737873cc9637fd488606347e9dd92b9fa37ba4fcda1f98ee5219a97/latexcodec-3.0.1-py3-none-any.whl", hash = "sha256:a9eb8200bff693f0437a69581f7579eb6bca25c4193515c09900ce76451e452e", size = 18532, upload-time = "2025-06-17T18:47:30.726Z" }, +] + +[[package]] +name = "librt" +version = "0.11.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/40/08/9e7f6b5d2b5bed6ad055cdd5925f192bb403a51280f86b56554d9d0699a2/librt-0.11.0.tar.gz", hash = "sha256:075dc3ef4458a278e0195cbf6ac9d38808d9b906c5a6c7f7f79c3888276a3fb1", size = 200139, upload-time = "2026-05-10T18:17:25.138Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/83/10/37fd9e9ba96cb0bd742dfb20fc3d082e54bdbec759d7300df927f360ef07/librt-0.11.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6e94ebfcfa2d5e9926d6c3b9aa4617ffc42a845b4321fb84021b872358c82a0f", size = 141706, upload-time = "2026-05-10T18:15:16.129Z" }, + { url = "https://files.pythonhosted.org/packages/cf/72/1b1466f358e4a0b728051f69bc27e67b432c6eaa2e05b88db49d3785ae0d/librt-0.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ae627397a2f351560440d872d6f7c8dbb4072e57868e7b2fc5b8b430fe489d45", size = 142605, upload-time = "2026-05-10T18:15:18.148Z" }, + { url = "https://files.pythonhosted.org/packages/ca/85/ed26dd2f6bc9a0baf48306433e579e8d354d70b2bcb78134ed950a5d0e1e/librt-0.11.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:dc329359321b67d24efdf4bc69012b0597001649544db662c001db5a0184794c", size = 476555, upload-time = "2026-05-10T18:15:19.569Z" }, + { url = "https://files.pythonhosted.org/packages/66/fe/11891191c0e0a3fd617724e891f6e67a71a7658974a892b9a9a97fdb2977/librt-0.11.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl", hash = "sha256:7e82e642ab0f7608ce2fe53d76ca2280a9ee33a1b06556142c7c6fe80a86fc33", size = 468434, upload-time = "2026-05-10T18:15:20.87Z" }, + { url = "https://files.pythonhosted.org/packages/6f/50/5ec949d7f9ce1a07af903aa3e13abb98b717923bdead6e719b2f824ccc07/librt-0.11.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:88145c15c67731d54283d135b03244028c750cc9edc334a96a4f5950ebdb2884", size = 496918, upload-time = "2026-05-10T18:15:22.616Z" }, + { url = "https://files.pythonhosted.org/packages/ea/c4/177336c7524e34875a38bf668e88b193a6723a4eb4045d07f74df6e1506c/librt-0.11.0-cp310-cp310-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:9d36a51b3d93320b686588e27123f4995804dbf1bce81df78c02fc3c6eea9280", size = 490334, upload-time = "2026-05-10T18:15:24.2Z" }, + { url = "https://files.pythonhosted.org/packages/13/1f/da3112f7569eda3b49f9a2629bae1fe059812b6085df16c885f6454dff49/librt-0.11.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d00f3ac06a2a8b246327f11e186a53a100a4d5c7ed52346367e5ec751d51586c", size = 511287, upload-time = "2026-05-10T18:15:26.226Z" }, + { url = "https://files.pythonhosted.org/packages/fa/94/03fec301522e172d105581431223be56b27594ff46440ebfbb658a3735d5/librt-0.11.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:461bbceede621f1ffb8839755f8663e886087ee7af16294cab7fb4d782c62eeb", size = 517202, upload-time = "2026-05-10T18:15:27.965Z" }, + { url = "https://files.pythonhosted.org/packages/b7/6e/339f6e5a7b413ce014f1917a756dae630fe59cc99f34153205b1cb540901/librt-0.11.0-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:0cad8a4d6a8ff03c9b76f9414caccd78e7cfbc8a2e12fa334d8e1d9932753783", size = 497517, upload-time = "2026-05-10T18:15:29.614Z" }, + { url = "https://files.pythonhosted.org/packages/cd/43/acdd5ce317cb46e8253ca9bfbdb8b12e68a24d745949336a7f3d5fb79ba0/librt-0.11.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f37aa505b3cf60701562eddb32df74b12a9e380c207fd8b06dd157a943ac7ea0", size = 538878, upload-time = "2026-05-10T18:15:30.928Z" }, + { url = "https://files.pythonhosted.org/packages/29/b5/7a25bb12e3172839f647f196b3e988318b7bb1ca7501732a225c4dce2ec0/librt-0.11.0-cp310-cp310-win32.whl", hash = "sha256:94663a21534637f0e787ec2a2a756022df6e5b7b2335a5cdd7d8e33d68a2af89", size = 100070, upload-time = "2026-05-10T18:15:32.551Z" }, + { url = "https://files.pythonhosted.org/packages/c6/0d/ebbcf4d77999c02c937b05d2b90ff4cd4dcc7e9a365ba132329ac1fe7a0f/librt-0.11.0-cp310-cp310-win_amd64.whl", hash = "sha256:dec7db73758c2b54953fd8b7fe348c45188fe26b39ee18446196edd08453a5d4", size = 117918, upload-time = "2026-05-10T18:15:33.678Z" }, + { url = "https://files.pythonhosted.org/packages/fe/87/2bf31fe17587b29e3f93ec31421e2b1e1c3e349b8bf6c7c313dbad1d5340/librt-0.11.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:93d95bd45b7d58343d8b90d904450a545144eec19a002511163426f8ab1fae29", size = 141092, upload-time = "2026-05-10T18:15:34.795Z" }, + { url = "https://files.pythonhosted.org/packages/cf/08/5c5bf772920b7ebac6e32bc91a643e0ab3870199c0b542356d3baa83970a/librt-0.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4ee278c769a713638cdacd4c0436d72156e75df3ebc0166ab2b9dc43acc386c9", size = 142035, upload-time = "2026-05-10T18:15:36.242Z" }, + { url = "https://files.pythonhosted.org/packages/06/20/662a03d254e5b000d838e8b345d83303ddb768c080fd488e40634c0fa66b/librt-0.11.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f230cb1cbc9faaa616f9a678f530ebcf186e414b6bcbd88b960e4ba1b92428d5", size = 475022, upload-time = "2026-05-10T18:15:37.56Z" }, + { url = "https://files.pythonhosted.org/packages/de/f3/aa81523e45184c6ec23dc7f63263362ec55f80a09d424c012359ecbe7e35/librt-0.11.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl", hash = "sha256:5d63c855d86938d9de93e265c9bd8c705b51ec494de5738340ee93767a686e4b", size = 467273, upload-time = "2026-05-10T18:15:39.182Z" }, + { url = "https://files.pythonhosted.org/packages/6b/6f/59c74b560ca8853834d5501d589c8a2519f4184f273a085ffd0f37a1cc47/librt-0.11.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:993f028be9e96a08d31df3479ac80d99be374d17f3b78e4796b3fd3c913d4e89", size = 497083, upload-time = "2026-05-10T18:15:40.634Z" }, + { url = "https://files.pythonhosted.org/packages/fe/7b/5aa4d2c9600a719401160bf7055417df0b2a47439b9d88286ce45e56b65f/librt-0.11.0-cp311-cp311-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:258d73a0aa66a055e65b2e4d1b8cdb23b9d132c5bb915d9547d804fcaed116cc", size = 489139, upload-time = "2026-05-10T18:15:41.934Z" }, + { url = "https://files.pythonhosted.org/packages/d6/31/9143803d7da6856a69153785768c4936864430eec0fd9461c3ea527d9922/librt-0.11.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0827efe7854718f04aaddf6496e96960a956e676fe1d0f04eb41511fd8ad06d5", size = 508442, upload-time = "2026-05-10T18:15:43.206Z" }, + { url = "https://files.pythonhosted.org/packages/2f/5a/bce08184488426bda4ccc2c4964ac048c8f68ae89bd7120082eef4233cfd/librt-0.11.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7753e57d6e12d019c0d8786f1c09c709f4c3fcc57c3887b24e36e6c06ec938b7", size = 514230, upload-time = "2026-05-10T18:15:44.761Z" }, + { url = "https://files.pythonhosted.org/packages/89/8c/bb5e213d254b7505a0e658da199d8ab719086632ce09eef311ab27976523/librt-0.11.0-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:11bd19822431cc21af9f27374e7ae2e58103c7d98bda823536a6c47f6bb2bb3d", size = 494231, upload-time = "2026-05-10T18:15:46.308Z" }, + { url = "https://files.pythonhosted.org/packages/9d/fb/541cdad5b1ab1300398c74c4c9a497b88e5074c21b1244c8f49731d3a284/librt-0.11.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:22bdf239b219d3993761a148ffa134b19e52e9989c84f845d5d7b71d70a17412", size = 537585, upload-time = "2026-05-10T18:15:47.629Z" }, + { url = "https://files.pythonhosted.org/packages/8f/f2/464bb69295c320cb06bddb4f14a4ec67934ee14b2bffb12b19fb7ab287ba/librt-0.11.0-cp311-cp311-win32.whl", hash = "sha256:46c60b61e308eb535fbd6fa622b1ee1bb2815691c1ad9c98bf7b84952ec3bc8d", size = 100509, upload-time = "2026-05-10T18:15:49.157Z" }, + { url = "https://files.pythonhosted.org/packages/6d/e7/a17ee1788f9e4fbf548c19f4afa07c92089b9e24fef6cb2410863781ef4c/librt-0.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:902e546ff044f579ff1c953ff5fce97b636fe9e3943996b2177710c6ef076f73", size = 118628, upload-time = "2026-05-10T18:15:50.345Z" }, + { url = "https://files.pythonhosted.org/packages/cc/c7/6c766214f9f9903bcfcfbef97d807af8d8f5aa3502d247858ab17582d212/librt-0.11.0-cp311-cp311-win_arm64.whl", hash = "sha256:65ac3bc20f78aa0ee5ae84baa68917f89fef4af63e941084dd019a0d0e749f0c", size = 103122, upload-time = "2026-05-10T18:15:52.068Z" }, + { url = "https://files.pythonhosted.org/packages/8b/d0/07c77e067f0838949b43bd89232c29d72efebb9d2801a9750184eb706b71/librt-0.11.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b87504f1690a23b9a2cca841191a04f83895d4fc2dd04df91d82b1a04ca2ad46", size = 144147, upload-time = "2026-05-10T18:15:53.227Z" }, + { url = "https://files.pythonhosted.org/packages/7a/24/8493538fa4f62f982686398a5b8f68008138a75086abdea19ade64bf4255/librt-0.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40071fc5fe0ce8daa6de616702314a01e1250711682b0523d6ab8d4525910cb3", size = 143614, upload-time = "2026-05-10T18:15:54.657Z" }, + { url = "https://files.pythonhosted.org/packages/ff/1e/f8bad050810d9171f34a1648ed910e56814c2ba61639f2bd53c6377ae24b/librt-0.11.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:137e79445c896a0ea7b265f52d23954e05b64222ee1af69e2cb34219067cbb67", size = 485538, upload-time = "2026-05-10T18:15:56.117Z" }, + { url = "https://files.pythonhosted.org/packages/c0/fe/3594ebfbaf03084ba4b120c9ba5c3183fd938a48725e9bbe6ff0a5159ad8/librt-0.11.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl", hash = "sha256:cca6644054e78746d8d4ef238681f9c34ff8b584fe6b988ecebb8db3b15e622a", size = 479623, upload-time = "2026-05-10T18:15:57.544Z" }, + { url = "https://files.pythonhosted.org/packages/b0/da/5d1876984b3746c85dbd219dbfcb73c85f54ee263fd32e5b2a632ec14571/librt-0.11.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d5b0eea49f5562861ee8d757a32ef7d559c1d35be2aaaa1ec28941d74c9ffc8a", size = 513082, upload-time = "2026-05-10T18:15:58.805Z" }, + { url = "https://files.pythonhosted.org/packages/19/6e/55bdf5d5ca00c3e18430690bf2c953d8d3ffd3c337418173d33dec985dc9/librt-0.11.0-cp312-cp312-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:0d1029d7e1ae1a7e647ed6fb5df8c4ce2dffefb7a9f5fd1376a4554d96dac09f", size = 508105, upload-time = "2026-05-10T18:16:00.2Z" }, + { url = "https://files.pythonhosted.org/packages/07/10/f1f23a7c595ee90ece4d35c851e5d104b1311a887ed1b4ac4c35bbd13da8/librt-0.11.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:bc3ce6b33c5828d9e80592011a5c584cb2ce86edbc4088405f70da47dc1d1b3b", size = 522268, upload-time = "2026-05-10T18:16:01.708Z" }, + { url = "https://files.pythonhosted.org/packages/b6/02/5720f5697a7f54b78b3aefbe20df3a48cedcff1276618c4aa481177942ed/librt-0.11.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:936c5995f3514a42111f20099397d8177c79b4d7e70961e396c6f5a0a3566766", size = 527348, upload-time = "2026-05-10T18:16:03.496Z" }, + { url = "https://files.pythonhosted.org/packages/50/db/b4a47c6f91db4ff76348a0b3dd0cc65e090a078b765a810a62ff9434c3d3/librt-0.11.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:9bc0ca6ad9381cbe8e4aa6e5726e4c80c78115a6e9723c599ed1d73e092bc49d", size = 516294, upload-time = "2026-05-10T18:16:05.173Z" }, + { url = "https://files.pythonhosted.org/packages/9e/58/9384b2f4eb1ed1d273d40948a7c5c4b2360213b402ef3be4641c06299f9c/librt-0.11.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:070aa8c26c0a74774317a72df8851facc7f0f012a5b406557ac56992d92e1ec8", size = 553608, upload-time = "2026-05-10T18:16:06.839Z" }, + { url = "https://files.pythonhosted.org/packages/21/7b/5aa8848a7c6a9278c79375146da1812e695754ceec5f005e6043461a7315/librt-0.11.0-cp312-cp312-win32.whl", hash = "sha256:6bf14feb84b05ae945277395451998c89c54d0def4070eb5c08de544930b245a", size = 101879, upload-time = "2026-05-10T18:16:08.103Z" }, + { url = "https://files.pythonhosted.org/packages/37/33/8a745436944947575b584231750a41417de1a38cf6a2e9251d1065651c09/librt-0.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:75672f0bc524ede266287d532d7923dbce94c7514ad07627bac3d0c6d92cc4d9", size = 119831, upload-time = "2026-05-10T18:16:09.174Z" }, + { url = "https://files.pythonhosted.org/packages/59/67/a6739ac96e28b7855808bdb0370e250606104a859750d209e5a0716fe7ab/librt-0.11.0-cp312-cp312-win_arm64.whl", hash = "sha256:2f10cf143e4a9bb0f4f5af568a00df94a2d69ef41c2579584454bb0fe5cc642c", size = 103470, upload-time = "2026-05-10T18:16:10.369Z" }, + { url = "https://files.pythonhosted.org/packages/82/61/e59168d4d0bf2bf90f4f0caf7a001bfc60254c3af4586013b04dc3ef517b/librt-0.11.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:78dc31f7fdfe9c9d0eb0e8f42d139db230e826415bbcabd9f0e9faaaee909894", size = 144119, upload-time = "2026-05-10T18:16:11.771Z" }, + { url = "https://files.pythonhosted.org/packages/61/fd/caa1d60b12f7dd79ccea23054e06eeaebe266a5f52c40a6b651069200ce5/librt-0.11.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:fa475675db22290c3158e1d42326d0f5a65f04f44a0e68c3630a25b53560fb9c", size = 143565, upload-time = "2026-05-10T18:16:13.334Z" }, + { url = "https://files.pythonhosted.org/packages/b8/a9/dc744f5c2b4978d48db970be29f22716d3413d28b14ad99740817315cf2c/librt-0.11.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:621db29691044bdeda22e789e482e1b0f3a985d90e3426c9c6d17606416205ea", size = 485395, upload-time = "2026-05-10T18:16:14.729Z" }, + { url = "https://files.pythonhosted.org/packages/8f/21/7f8e97a1e4dae952a5a95948f6f8507a173bc1e669f54340bba6ca1ca31b/librt-0.11.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl", hash = "sha256:a9010e2ed5b3a9e158c5fd966b3ab7e834bb3d3aacc8f66c91dd4b57a3799230", size = 479383, upload-time = "2026-05-10T18:16:16.321Z" }, + { url = "https://files.pythonhosted.org/packages/a6/6d/d8ee9c114bebf2c50e29ec2aa940826fccb62a645c3e4c18760987d0e16d/librt-0.11.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7c39513d8b7477a2e1ed8c43fc21c524e8d5a0f8d4e8b7b074dbdbe7820a08e2", size = 513010, upload-time = "2026-05-10T18:16:17.647Z" }, + { url = "https://files.pythonhosted.org/packages/f0/43/0b5708af2bd30a46400e72ba6bdaa8f066f15fb9a688527e34220e8d6c06/librt-0.11.0-cp313-cp313-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:7aef3cf1d5af86e770ab04bfd993dfc4ae8b8c17f66fb77dd4a7d50de7bbb1a3", size = 508433, upload-time = "2026-05-10T18:16:19.309Z" }, + { url = "https://files.pythonhosted.org/packages/4a/50/356187247d09013490481033183b3532b58acf8028bcb34b2b56a375c9b2/librt-0.11.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:557183ddc36babe46b27dd60facbd5adb4492181a5be887587d57cda6e092f21", size = 522595, upload-time = "2026-05-10T18:16:20.642Z" }, + { url = "https://files.pythonhosted.org/packages/40/e7/c6ac4240899c7f3248079d5a9900debe0dadb3fdeaf856684c987105ba47/librt-0.11.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:83d3e1f72bd42f6c5c0b7daec530c3f829bd02db42c70b8ddf0c2d90a2459930", size = 527255, upload-time = "2026-05-10T18:16:22.352Z" }, + { url = "https://files.pythonhosted.org/packages/eb/b5/a81322dbeedeeaf9c1ee6f001734d28a09d8383ac9e6779bc24bbd0743c6/librt-0.11.0-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:4ce1f21fbe589bc1afd7872dece84fb0e1144f794a288e58a10d2c54a55c43be", size = 516847, upload-time = "2026-05-10T18:16:23.627Z" }, + { url = "https://files.pythonhosted.org/packages/ae/66/6e6323787d592b55204a42595ff1102da5115601b53a7e9ddebc889a6da5/librt-0.11.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:970b09f7044ea2b64c9da42fd3d335666518cfd1c6e8a182c95da73d0214b41e", size = 553920, upload-time = "2026-05-10T18:16:25.025Z" }, + { url = "https://files.pythonhosted.org/packages/9c/21/623f8ca230857102066d9ca8c6c1734995908c4d0d1bee7bb2ef0021cb33/librt-0.11.0-cp313-cp313-win32.whl", hash = "sha256:78fddc31cd4d3caa897ad5d31f856b1faadc9474021ad6cb182b9018793e254e", size = 101898, upload-time = "2026-05-10T18:16:26.649Z" }, + { url = "https://files.pythonhosted.org/packages/b3/1d/b4ebd44dd723f768469007515cb92251e0ae286c94c140f374801140fa74/librt-0.11.0-cp313-cp313-win_amd64.whl", hash = "sha256:8ca8aa88751a775870b764e93bad5135385f563cb8dcee399abf034ea4d3cb47", size = 119812, upload-time = "2026-05-10T18:16:27.859Z" }, + { url = "https://files.pythonhosted.org/packages/3b/e4/b2f4ca7965ca373b491cdb4bc25cdb30c1649ca81a8782056a83850292a9/librt-0.11.0-cp313-cp313-win_arm64.whl", hash = "sha256:96f044bb325fd9cf1a723015638c219e9143f0dfbc0ca54c565df2b7fc748b44", size = 103448, upload-time = "2026-05-10T18:16:29.066Z" }, + { url = "https://files.pythonhosted.org/packages/29/eb/dbce197da4e227779e56b5735f2decc3eb36e55a1cdbf1bd65d6639d76c1/librt-0.11.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:4a017a95e5837dc15a8c5661d60e05daa96b90908b1aa6b7acdf443cd25c8ebd", size = 143345, upload-time = "2026-05-10T18:16:30.674Z" }, + { url = "https://files.pythonhosted.org/packages/76/a3/254bebd0c11c8ba684018efb8006ff22e466abce445215cca6c778e7d9de/librt-0.11.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:b1ecbd9819deccc39b7542bf4d2a740d8a620694d39989e58661d3763458f8d4", size = 143131, upload-time = "2026-05-10T18:16:32.037Z" }, + { url = "https://files.pythonhosted.org/packages/f1/3f/f77d6122d21ac7bf6ae8a7dfced1bd2a7ac545d3273ebdcaf8042f6d619f/librt-0.11.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7da327dacd7be8f8ec36547373550744a3cc0e536d54665cd83f8bcd961200e8", size = 477024, upload-time = "2026-05-10T18:16:33.493Z" }, + { url = "https://files.pythonhosted.org/packages/ac/0a/2c996dadebaa7d9bbbd43ef2d4f3e66b6da545f838a41694ef6172cebec8/librt-0.11.0-cp314-cp314-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl", hash = "sha256:0dc56b1f8d06e60db362cc3fdae206681817f86ce4725d34511473487f12a34b", size = 474221, upload-time = "2026-05-10T18:16:34.864Z" }, + { url = "https://files.pythonhosted.org/packages/0a/7e/f5d92af8486b8272c23b3e686b46ff72d89c8169585eb61eef01a2ac7147/librt-0.11.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:05fb8fb2ab90e21c8d12ea240d744ad514da9baf381ebfa70d91d20d21713175", size = 505174, upload-time = "2026-05-10T18:16:36.705Z" }, + { url = "https://files.pythonhosted.org/packages/af/1a/cb0734fe86398eb33193ab753b7326255c74cac5eb09e76b9b16536e7adb/librt-0.11.0-cp314-cp314-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:cae74872be221df4374d10fec61f93ed1513b9546ea84f2c0bf73ab3e9bd0b03", size = 497216, upload-time = "2026-05-10T18:16:38.418Z" }, + { url = "https://files.pythonhosted.org/packages/18/06/094820f91558b66e29943c0ec41c9914f460f48dd51fc503c3101e10842d/librt-0.11.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:32bcc918c0148eb7e3d57385125bac7e5f9e4359d05f07448b09f6f778c2f31c", size = 513921, upload-time = "2026-05-10T18:16:39.848Z" }, + { url = "https://files.pythonhosted.org/packages/0b/c2/00de9018871a282f530cacb457d5ec0428f6ac7e6fedde9aff7468d9fb04/librt-0.11.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:f9743fc99135d5f78d2454435615f6dec0473ca507c26ce9d92b10b562a280d3", size = 520850, upload-time = "2026-05-10T18:16:41.471Z" }, + { url = "https://files.pythonhosted.org/packages/51/9d/64631832348fd1834fb3a61b996434edddaaf25a31d03b0a76273159d2cf/librt-0.11.0-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:5ba067f4aadae8fda802d91d2124c90c42195ff32d9161d3549e6d05cfe26f96", size = 504237, upload-time = "2026-05-10T18:16:43.15Z" }, + { url = "https://files.pythonhosted.org/packages/a5/ec/ae5525eb16edc827a044e7bb8777a455ff95d4bca9379e7e6bddd7383647/librt-0.11.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:de3bf945454d032f9e390b85c4072e0a0570bf825421c8be0e71209fa65e1abe", size = 546261, upload-time = "2026-05-10T18:16:44.408Z" }, + { url = "https://files.pythonhosted.org/packages/5a/09/adce371f27ca039411da9659f7430fcc2ba6cd0c7b3e4467a0f091be7fa9/librt-0.11.0-cp314-cp314-win32.whl", hash = "sha256:d2277a05f6dcb9fd13db9566aac4fabd68c3ea1ea46ee5567d4eef8efa495a2f", size = 96965, upload-time = "2026-05-10T18:16:46.039Z" }, + { url = "https://files.pythonhosted.org/packages/d6/ee/8ac720d98548f173c7ce2e632a7ca94673f74cacd5c8162a84af5b35958a/librt-0.11.0-cp314-cp314-win_amd64.whl", hash = "sha256:ab73e8db5e3f564d812c1f5c3a175930a5f9bc96ccb5e3b22a34d7858b401cf7", size = 115151, upload-time = "2026-05-10T18:16:47.133Z" }, + { url = "https://files.pythonhosted.org/packages/94/20/c900cf14efeb09b6bef2b2dff20779f73464b97fd58d1c6bccc379588ae3/librt-0.11.0-cp314-cp314-win_arm64.whl", hash = "sha256:aea3caa317752e3a466fa8af45d91ee0ea8c7fdd96e42b0a8dd9b76a7931eba1", size = 98850, upload-time = "2026-05-10T18:16:48.597Z" }, + { url = "https://files.pythonhosted.org/packages/0c/71/944bfe4b64e12abffcd3c15e1cce07f72f3d55655083786285f4dedeb532/librt-0.11.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:d1b36540d7aaf9b9101b3a6f376c8d8e9f7a9aec93ed05918f2c69d493ffef72", size = 151138, upload-time = "2026-05-10T18:16:49.839Z" }, + { url = "https://files.pythonhosted.org/packages/b6/10/99e64a5c86989357fda078c8143c533389585f6473b7439172dd8f3b3b2d/librt-0.11.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:efbb343ab2ce3540f4ecbe6315d677ed70f37cd9a72b1e58066c918ca83acbaa", size = 151976, upload-time = "2026-05-10T18:16:51.062Z" }, + { url = "https://files.pythonhosted.org/packages/21/31/5072ad880946d83e5ea4147d6d018c78eefce85b77819b19bdd0ee229435/librt-0.11.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:aa0dd688aab3f7914d3e6e5e3554978e0383312fb8e771d84be008a35b9ee548", size = 557927, upload-time = "2026-05-10T18:16:52.632Z" }, + { url = "https://files.pythonhosted.org/packages/5e/8d/70b5fb7cfbab60edbe7381614ab985da58e144fbf465c86d44c95f43cdca/librt-0.11.0-cp314-cp314t-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl", hash = "sha256:f5fb36b8c6c63fdcbb1d526d94c0d1331610d43f4118cc1beb4efef4f3faacb2", size = 539698, upload-time = "2026-05-10T18:16:53.934Z" }, + { url = "https://files.pythonhosted.org/packages/fa/a3/ba3495a0b3edbd24a4cae0d1d3c64f39a9fc45d06e812101289b50c1a619/librt-0.11.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4a9a237d13addb93715b6fee74023d5ee3469b53fce527626c0e088aa585805f", size = 577162, upload-time = "2026-05-10T18:16:55.589Z" }, + { url = "https://files.pythonhosted.org/packages/f7/db/36e25fb81f99937ff1b96612a1dc9fd66f039cb9cc3aee12c01fac31aab9/librt-0.11.0-cp314-cp314t-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:5ddd17bd87b2c56ddd60e546a7984a2e64c4e8eab92fb4cf3830a48ad5469d51", size = 566494, upload-time = "2026-05-10T18:16:56.975Z" }, + { url = "https://files.pythonhosted.org/packages/33/0d/3f622b47f0b013eeb9cf4cc07ae9bfe378d832a4eec998b2b209fe84244d/librt-0.11.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:bd43992b4473d42f12ff9e68326079f0696d9d4e6000e8f39a0238d482ba6ee2", size = 596858, upload-time = "2026-05-10T18:16:58.374Z" }, + { url = "https://files.pythonhosted.org/packages/a9/02/71b90bc93039c46a2000651f6ad60122b114c8f54c4ad306e0e96f5b75ad/librt-0.11.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:f8e3e8056dd674e279741485e2e512d6e9a751c7455809d0114e6ebf8d781085", size = 590318, upload-time = "2026-05-10T18:16:59.676Z" }, + { url = "https://files.pythonhosted.org/packages/04/04/418cb3f75621e2b761fb1ab0f017f4d70a1a72a6e7c74ee4f7e8d198c2f3/librt-0.11.0-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:c1f708d8ae9c56cf38a903c44297243d2ec83fd82b396b977e0144a3e76217e3", size = 575115, upload-time = "2026-05-10T18:17:01.007Z" }, + { url = "https://files.pythonhosted.org/packages/cc/2c/5a2183ac58dd911f26b5d7e7d7d8f1d87fcecdddd99d6c12169a258ff62c/librt-0.11.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:0add982e0e7b9fc14cf4b33789d5f13f66581889b88c2f58099f6ce8f92617bd", size = 617918, upload-time = "2026-05-10T18:17:02.682Z" }, + { url = "https://files.pythonhosted.org/packages/15/1f/dc6771a52592a4451be6effa200cbfc9cec61e4393d3033d81a9d307961d/librt-0.11.0-cp314-cp314t-win32.whl", hash = "sha256:2b481d846ac894c4e8403c5fd0e87c5d11d6499e404b474602508a224ff531c8", size = 103562, upload-time = "2026-05-10T18:17:03.99Z" }, + { url = "https://files.pythonhosted.org/packages/62/4a/7d1415567027286a75ba1093ec4aca11f073e0f559c530cf3e0a757ad55c/librt-0.11.0-cp314-cp314t-win_amd64.whl", hash = "sha256:28edb433edde181112a908c78907af28f964eabc15f4dd16c9d66c834302677c", size = 124327, upload-time = "2026-05-10T18:17:05.465Z" }, + { url = "https://files.pythonhosted.org/packages/ce/62/b40b382fa0c66fee1478073eb8db352a4a6beda4a1adccf1df911d8c289c/librt-0.11.0-cp314-cp314t-win_arm64.whl", hash = "sha256:dee008f20b542e3cd162ba338a7f9ec0f6d23d395f66fe8aeeec3c9d067ea253", size = 102572, upload-time = "2026-05-10T18:17:06.809Z" }, +] + +[[package]] +name = "markdown-it-py" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mdurl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596, upload-time = "2023-06-03T06:41:14.443Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528, upload-time = "2023-06-03T06:41:11.019Z" }, +] + +[[package]] +name = "markupsafe" +version = "3.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", size = 80313, upload-time = "2025-09-27T18:37:40.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/4b/3541d44f3937ba468b75da9eebcae497dcf67adb65caa16760b0a6807ebb/markupsafe-3.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2f981d352f04553a7171b8e44369f2af4055f888dfb147d55e42d29e29e74559", size = 11631, upload-time = "2025-09-27T18:36:05.558Z" }, + { url = "https://files.pythonhosted.org/packages/98/1b/fbd8eed11021cabd9226c37342fa6ca4e8a98d8188a8d9b66740494960e4/markupsafe-3.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e1c1493fb6e50ab01d20a22826e57520f1284df32f2d8601fdd90b6304601419", size = 12057, upload-time = "2025-09-27T18:36:07.165Z" }, + { url = "https://files.pythonhosted.org/packages/40/01/e560d658dc0bb8ab762670ece35281dec7b6c1b33f5fbc09ebb57a185519/markupsafe-3.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ba88449deb3de88bd40044603fafffb7bc2b055d626a330323a9ed736661695", size = 22050, upload-time = "2025-09-27T18:36:08.005Z" }, + { url = "https://files.pythonhosted.org/packages/af/cd/ce6e848bbf2c32314c9b237839119c5a564a59725b53157c856e90937b7a/markupsafe-3.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f42d0984e947b8adf7dd6dde396e720934d12c506ce84eea8476409563607591", size = 20681, upload-time = "2025-09-27T18:36:08.881Z" }, + { url = "https://files.pythonhosted.org/packages/c9/2a/b5c12c809f1c3045c4d580b035a743d12fcde53cf685dbc44660826308da/markupsafe-3.0.3-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c0c0b3ade1c0b13b936d7970b1d37a57acde9199dc2aecc4c336773e1d86049c", size = 20705, upload-time = "2025-09-27T18:36:10.131Z" }, + { url = "https://files.pythonhosted.org/packages/cf/e3/9427a68c82728d0a88c50f890d0fc072a1484de2f3ac1ad0bfc1a7214fd5/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0303439a41979d9e74d18ff5e2dd8c43ed6c6001fd40e5bf2e43f7bd9bbc523f", size = 21524, upload-time = "2025-09-27T18:36:11.324Z" }, + { url = "https://files.pythonhosted.org/packages/bc/36/23578f29e9e582a4d0278e009b38081dbe363c5e7165113fad546918a232/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:d2ee202e79d8ed691ceebae8e0486bd9a2cd4794cec4824e1c99b6f5009502f6", size = 20282, upload-time = "2025-09-27T18:36:12.573Z" }, + { url = "https://files.pythonhosted.org/packages/56/21/dca11354e756ebd03e036bd8ad58d6d7168c80ce1fe5e75218e4945cbab7/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:177b5253b2834fe3678cb4a5f0059808258584c559193998be2601324fdeafb1", size = 20745, upload-time = "2025-09-27T18:36:13.504Z" }, + { url = "https://files.pythonhosted.org/packages/87/99/faba9369a7ad6e4d10b6a5fbf71fa2a188fe4a593b15f0963b73859a1bbd/markupsafe-3.0.3-cp310-cp310-win32.whl", hash = "sha256:2a15a08b17dd94c53a1da0438822d70ebcd13f8c3a95abe3a9ef9f11a94830aa", size = 14571, upload-time = "2025-09-27T18:36:14.779Z" }, + { url = "https://files.pythonhosted.org/packages/d6/25/55dc3ab959917602c96985cb1253efaa4ff42f71194bddeb61eb7278b8be/markupsafe-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:c4ffb7ebf07cfe8931028e3e4c85f0357459a3f9f9490886198848f4fa002ec8", size = 15056, upload-time = "2025-09-27T18:36:16.125Z" }, + { url = "https://files.pythonhosted.org/packages/d0/9e/0a02226640c255d1da0b8d12e24ac2aa6734da68bff14c05dd53b94a0fc3/markupsafe-3.0.3-cp310-cp310-win_arm64.whl", hash = "sha256:e2103a929dfa2fcaf9bb4e7c091983a49c9ac3b19c9061b6d5427dd7d14d81a1", size = 13932, upload-time = "2025-09-27T18:36:17.311Z" }, + { url = "https://files.pythonhosted.org/packages/08/db/fefacb2136439fc8dd20e797950e749aa1f4997ed584c62cfb8ef7c2be0e/markupsafe-3.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1cc7ea17a6824959616c525620e387f6dd30fec8cb44f649e31712db02123dad", size = 11631, upload-time = "2025-09-27T18:36:18.185Z" }, + { url = "https://files.pythonhosted.org/packages/e1/2e/5898933336b61975ce9dc04decbc0a7f2fee78c30353c5efba7f2d6ff27a/markupsafe-3.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4bd4cd07944443f5a265608cc6aab442e4f74dff8088b0dfc8238647b8f6ae9a", size = 12058, upload-time = "2025-09-27T18:36:19.444Z" }, + { url = "https://files.pythonhosted.org/packages/1d/09/adf2df3699d87d1d8184038df46a9c80d78c0148492323f4693df54e17bb/markupsafe-3.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b5420a1d9450023228968e7e6a9ce57f65d148ab56d2313fcd589eee96a7a50", size = 24287, upload-time = "2025-09-27T18:36:20.768Z" }, + { url = "https://files.pythonhosted.org/packages/30/ac/0273f6fcb5f42e314c6d8cd99effae6a5354604d461b8d392b5ec9530a54/markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0bf2a864d67e76e5c9a34dc26ec616a66b9888e25e7b9460e1c76d3293bd9dbf", size = 22940, upload-time = "2025-09-27T18:36:22.249Z" }, + { url = "https://files.pythonhosted.org/packages/19/ae/31c1be199ef767124c042c6c3e904da327a2f7f0cd63a0337e1eca2967a8/markupsafe-3.0.3-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc51efed119bc9cfdf792cdeaa4d67e8f6fcccab66ed4bfdd6bde3e59bfcbb2f", size = 21887, upload-time = "2025-09-27T18:36:23.535Z" }, + { url = "https://files.pythonhosted.org/packages/b2/76/7edcab99d5349a4532a459e1fe64f0b0467a3365056ae550d3bcf3f79e1e/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:068f375c472b3e7acbe2d5318dea141359e6900156b5b2ba06a30b169086b91a", size = 23692, upload-time = "2025-09-27T18:36:24.823Z" }, + { url = "https://files.pythonhosted.org/packages/a4/28/6e74cdd26d7514849143d69f0bf2399f929c37dc2b31e6829fd2045b2765/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:7be7b61bb172e1ed687f1754f8e7484f1c8019780f6f6b0786e76bb01c2ae115", size = 21471, upload-time = "2025-09-27T18:36:25.95Z" }, + { url = "https://files.pythonhosted.org/packages/62/7e/a145f36a5c2945673e590850a6f8014318d5577ed7e5920a4b3448e0865d/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f9e130248f4462aaa8e2552d547f36ddadbeaa573879158d721bbd33dfe4743a", size = 22923, upload-time = "2025-09-27T18:36:27.109Z" }, + { url = "https://files.pythonhosted.org/packages/0f/62/d9c46a7f5c9adbeeeda52f5b8d802e1094e9717705a645efc71b0913a0a8/markupsafe-3.0.3-cp311-cp311-win32.whl", hash = "sha256:0db14f5dafddbb6d9208827849fad01f1a2609380add406671a26386cdf15a19", size = 14572, upload-time = "2025-09-27T18:36:28.045Z" }, + { url = "https://files.pythonhosted.org/packages/83/8a/4414c03d3f891739326e1783338e48fb49781cc915b2e0ee052aa490d586/markupsafe-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:de8a88e63464af587c950061a5e6a67d3632e36df62b986892331d4620a35c01", size = 15077, upload-time = "2025-09-27T18:36:29.025Z" }, + { url = "https://files.pythonhosted.org/packages/35/73/893072b42e6862f319b5207adc9ae06070f095b358655f077f69a35601f0/markupsafe-3.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:3b562dd9e9ea93f13d53989d23a7e775fdfd1066c33494ff43f5418bc8c58a5c", size = 13876, upload-time = "2025-09-27T18:36:29.954Z" }, + { url = "https://files.pythonhosted.org/packages/5a/72/147da192e38635ada20e0a2e1a51cf8823d2119ce8883f7053879c2199b5/markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e", size = 11615, upload-time = "2025-09-27T18:36:30.854Z" }, + { url = "https://files.pythonhosted.org/packages/9a/81/7e4e08678a1f98521201c3079f77db69fb552acd56067661f8c2f534a718/markupsafe-3.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce", size = 12020, upload-time = "2025-09-27T18:36:31.971Z" }, + { url = "https://files.pythonhosted.org/packages/1e/2c/799f4742efc39633a1b54a92eec4082e4f815314869865d876824c257c1e/markupsafe-3.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d", size = 24332, upload-time = "2025-09-27T18:36:32.813Z" }, + { url = "https://files.pythonhosted.org/packages/3c/2e/8d0c2ab90a8c1d9a24f0399058ab8519a3279d1bd4289511d74e909f060e/markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d", size = 22947, upload-time = "2025-09-27T18:36:33.86Z" }, + { url = "https://files.pythonhosted.org/packages/2c/54/887f3092a85238093a0b2154bd629c89444f395618842e8b0c41783898ea/markupsafe-3.0.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a", size = 21962, upload-time = "2025-09-27T18:36:35.099Z" }, + { url = "https://files.pythonhosted.org/packages/c9/2f/336b8c7b6f4a4d95e91119dc8521402461b74a485558d8f238a68312f11c/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b", size = 23760, upload-time = "2025-09-27T18:36:36.001Z" }, + { url = "https://files.pythonhosted.org/packages/32/43/67935f2b7e4982ffb50a4d169b724d74b62a3964bc1a9a527f5ac4f1ee2b/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f", size = 21529, upload-time = "2025-09-27T18:36:36.906Z" }, + { url = "https://files.pythonhosted.org/packages/89/e0/4486f11e51bbba8b0c041098859e869e304d1c261e59244baa3d295d47b7/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b", size = 23015, upload-time = "2025-09-27T18:36:37.868Z" }, + { url = "https://files.pythonhosted.org/packages/2f/e1/78ee7a023dac597a5825441ebd17170785a9dab23de95d2c7508ade94e0e/markupsafe-3.0.3-cp312-cp312-win32.whl", hash = "sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d", size = 14540, upload-time = "2025-09-27T18:36:38.761Z" }, + { url = "https://files.pythonhosted.org/packages/aa/5b/bec5aa9bbbb2c946ca2733ef9c4ca91c91b6a24580193e891b5f7dbe8e1e/markupsafe-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c", size = 15105, upload-time = "2025-09-27T18:36:39.701Z" }, + { url = "https://files.pythonhosted.org/packages/e5/f1/216fc1bbfd74011693a4fd837e7026152e89c4bcf3e77b6692fba9923123/markupsafe-3.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f", size = 13906, upload-time = "2025-09-27T18:36:40.689Z" }, + { url = "https://files.pythonhosted.org/packages/38/2f/907b9c7bbba283e68f20259574b13d005c121a0fa4c175f9bed27c4597ff/markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795", size = 11622, upload-time = "2025-09-27T18:36:41.777Z" }, + { url = "https://files.pythonhosted.org/packages/9c/d9/5f7756922cdd676869eca1c4e3c0cd0df60ed30199ffd775e319089cb3ed/markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219", size = 12029, upload-time = "2025-09-27T18:36:43.257Z" }, + { url = "https://files.pythonhosted.org/packages/00/07/575a68c754943058c78f30db02ee03a64b3c638586fba6a6dd56830b30a3/markupsafe-3.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6", size = 24374, upload-time = "2025-09-27T18:36:44.508Z" }, + { url = "https://files.pythonhosted.org/packages/a9/21/9b05698b46f218fc0e118e1f8168395c65c8a2c750ae2bab54fc4bd4e0e8/markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676", size = 22980, upload-time = "2025-09-27T18:36:45.385Z" }, + { url = "https://files.pythonhosted.org/packages/7f/71/544260864f893f18b6827315b988c146b559391e6e7e8f7252839b1b846a/markupsafe-3.0.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9", size = 21990, upload-time = "2025-09-27T18:36:46.916Z" }, + { url = "https://files.pythonhosted.org/packages/c2/28/b50fc2f74d1ad761af2f5dcce7492648b983d00a65b8c0e0cb457c82ebbe/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1", size = 23784, upload-time = "2025-09-27T18:36:47.884Z" }, + { url = "https://files.pythonhosted.org/packages/ed/76/104b2aa106a208da8b17a2fb72e033a5a9d7073c68f7e508b94916ed47a9/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc", size = 21588, upload-time = "2025-09-27T18:36:48.82Z" }, + { url = "https://files.pythonhosted.org/packages/b5/99/16a5eb2d140087ebd97180d95249b00a03aa87e29cc224056274f2e45fd6/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12", size = 23041, upload-time = "2025-09-27T18:36:49.797Z" }, + { url = "https://files.pythonhosted.org/packages/19/bc/e7140ed90c5d61d77cea142eed9f9c303f4c4806f60a1044c13e3f1471d0/markupsafe-3.0.3-cp313-cp313-win32.whl", hash = "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed", size = 14543, upload-time = "2025-09-27T18:36:51.584Z" }, + { url = "https://files.pythonhosted.org/packages/05/73/c4abe620b841b6b791f2edc248f556900667a5a1cf023a6646967ae98335/markupsafe-3.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5", size = 15113, upload-time = "2025-09-27T18:36:52.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/3a/fa34a0f7cfef23cf9500d68cb7c32dd64ffd58a12b09225fb03dd37d5b80/markupsafe-3.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485", size = 13911, upload-time = "2025-09-27T18:36:53.513Z" }, + { url = "https://files.pythonhosted.org/packages/e4/d7/e05cd7efe43a88a17a37b3ae96e79a19e846f3f456fe79c57ca61356ef01/markupsafe-3.0.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73", size = 11658, upload-time = "2025-09-27T18:36:54.819Z" }, + { url = "https://files.pythonhosted.org/packages/99/9e/e412117548182ce2148bdeacdda3bb494260c0b0184360fe0d56389b523b/markupsafe-3.0.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37", size = 12066, upload-time = "2025-09-27T18:36:55.714Z" }, + { url = "https://files.pythonhosted.org/packages/bc/e6/fa0ffcda717ef64a5108eaa7b4f5ed28d56122c9a6d70ab8b72f9f715c80/markupsafe-3.0.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19", size = 25639, upload-time = "2025-09-27T18:36:56.908Z" }, + { url = "https://files.pythonhosted.org/packages/96/ec/2102e881fe9d25fc16cb4b25d5f5cde50970967ffa5dddafdb771237062d/markupsafe-3.0.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025", size = 23569, upload-time = "2025-09-27T18:36:57.913Z" }, + { url = "https://files.pythonhosted.org/packages/4b/30/6f2fce1f1f205fc9323255b216ca8a235b15860c34b6798f810f05828e32/markupsafe-3.0.3-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6", size = 23284, upload-time = "2025-09-27T18:36:58.833Z" }, + { url = "https://files.pythonhosted.org/packages/58/47/4a0ccea4ab9f5dcb6f79c0236d954acb382202721e704223a8aafa38b5c8/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f", size = 24801, upload-time = "2025-09-27T18:36:59.739Z" }, + { url = "https://files.pythonhosted.org/packages/6a/70/3780e9b72180b6fecb83a4814d84c3bf4b4ae4bf0b19c27196104149734c/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb", size = 22769, upload-time = "2025-09-27T18:37:00.719Z" }, + { url = "https://files.pythonhosted.org/packages/98/c5/c03c7f4125180fc215220c035beac6b9cb684bc7a067c84fc69414d315f5/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009", size = 23642, upload-time = "2025-09-27T18:37:01.673Z" }, + { url = "https://files.pythonhosted.org/packages/80/d6/2d1b89f6ca4bff1036499b1e29a1d02d282259f3681540e16563f27ebc23/markupsafe-3.0.3-cp313-cp313t-win32.whl", hash = "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354", size = 14612, upload-time = "2025-09-27T18:37:02.639Z" }, + { url = "https://files.pythonhosted.org/packages/2b/98/e48a4bfba0a0ffcf9925fe2d69240bfaa19c6f7507b8cd09c70684a53c1e/markupsafe-3.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218", size = 15200, upload-time = "2025-09-27T18:37:03.582Z" }, + { url = "https://files.pythonhosted.org/packages/0e/72/e3cc540f351f316e9ed0f092757459afbc595824ca724cbc5a5d4263713f/markupsafe-3.0.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287", size = 13973, upload-time = "2025-09-27T18:37:04.929Z" }, + { url = "https://files.pythonhosted.org/packages/33/8a/8e42d4838cd89b7dde187011e97fe6c3af66d8c044997d2183fbd6d31352/markupsafe-3.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe", size = 11619, upload-time = "2025-09-27T18:37:06.342Z" }, + { url = "https://files.pythonhosted.org/packages/b5/64/7660f8a4a8e53c924d0fa05dc3a55c9cee10bbd82b11c5afb27d44b096ce/markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026", size = 12029, upload-time = "2025-09-27T18:37:07.213Z" }, + { url = "https://files.pythonhosted.org/packages/da/ef/e648bfd021127bef5fa12e1720ffed0c6cbb8310c8d9bea7266337ff06de/markupsafe-3.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737", size = 24408, upload-time = "2025-09-27T18:37:09.572Z" }, + { url = "https://files.pythonhosted.org/packages/41/3c/a36c2450754618e62008bf7435ccb0f88053e07592e6028a34776213d877/markupsafe-3.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97", size = 23005, upload-time = "2025-09-27T18:37:10.58Z" }, + { url = "https://files.pythonhosted.org/packages/bc/20/b7fdf89a8456b099837cd1dc21974632a02a999ec9bf7ca3e490aacd98e7/markupsafe-3.0.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d", size = 22048, upload-time = "2025-09-27T18:37:11.547Z" }, + { url = "https://files.pythonhosted.org/packages/9a/a7/591f592afdc734f47db08a75793a55d7fbcc6902a723ae4cfbab61010cc5/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda", size = 23821, upload-time = "2025-09-27T18:37:12.48Z" }, + { url = "https://files.pythonhosted.org/packages/7d/33/45b24e4f44195b26521bc6f1a82197118f74df348556594bd2262bda1038/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf", size = 21606, upload-time = "2025-09-27T18:37:13.485Z" }, + { url = "https://files.pythonhosted.org/packages/ff/0e/53dfaca23a69fbfbbf17a4b64072090e70717344c52eaaaa9c5ddff1e5f0/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe", size = 23043, upload-time = "2025-09-27T18:37:14.408Z" }, + { url = "https://files.pythonhosted.org/packages/46/11/f333a06fc16236d5238bfe74daccbca41459dcd8d1fa952e8fbd5dccfb70/markupsafe-3.0.3-cp314-cp314-win32.whl", hash = "sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9", size = 14747, upload-time = "2025-09-27T18:37:15.36Z" }, + { url = "https://files.pythonhosted.org/packages/28/52/182836104b33b444e400b14f797212f720cbc9ed6ba34c800639d154e821/markupsafe-3.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581", size = 15341, upload-time = "2025-09-27T18:37:16.496Z" }, + { url = "https://files.pythonhosted.org/packages/6f/18/acf23e91bd94fd7b3031558b1f013adfa21a8e407a3fdb32745538730382/markupsafe-3.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4", size = 14073, upload-time = "2025-09-27T18:37:17.476Z" }, + { url = "https://files.pythonhosted.org/packages/3c/f0/57689aa4076e1b43b15fdfa646b04653969d50cf30c32a102762be2485da/markupsafe-3.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab", size = 11661, upload-time = "2025-09-27T18:37:18.453Z" }, + { url = "https://files.pythonhosted.org/packages/89/c3/2e67a7ca217c6912985ec766c6393b636fb0c2344443ff9d91404dc4c79f/markupsafe-3.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175", size = 12069, upload-time = "2025-09-27T18:37:19.332Z" }, + { url = "https://files.pythonhosted.org/packages/f0/00/be561dce4e6ca66b15276e184ce4b8aec61fe83662cce2f7d72bd3249d28/markupsafe-3.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634", size = 25670, upload-time = "2025-09-27T18:37:20.245Z" }, + { url = "https://files.pythonhosted.org/packages/50/09/c419f6f5a92e5fadde27efd190eca90f05e1261b10dbd8cbcb39cd8ea1dc/markupsafe-3.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50", size = 23598, upload-time = "2025-09-27T18:37:21.177Z" }, + { url = "https://files.pythonhosted.org/packages/22/44/a0681611106e0b2921b3033fc19bc53323e0b50bc70cffdd19f7d679bb66/markupsafe-3.0.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e", size = 23261, upload-time = "2025-09-27T18:37:22.167Z" }, + { url = "https://files.pythonhosted.org/packages/5f/57/1b0b3f100259dc9fffe780cfb60d4be71375510e435efec3d116b6436d43/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5", size = 24835, upload-time = "2025-09-27T18:37:23.296Z" }, + { url = "https://files.pythonhosted.org/packages/26/6a/4bf6d0c97c4920f1597cc14dd720705eca0bf7c787aebc6bb4d1bead5388/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523", size = 22733, upload-time = "2025-09-27T18:37:24.237Z" }, + { url = "https://files.pythonhosted.org/packages/14/c7/ca723101509b518797fedc2fdf79ba57f886b4aca8a7d31857ba3ee8281f/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc", size = 23672, upload-time = "2025-09-27T18:37:25.271Z" }, + { url = "https://files.pythonhosted.org/packages/fb/df/5bd7a48c256faecd1d36edc13133e51397e41b73bb77e1a69deab746ebac/markupsafe-3.0.3-cp314-cp314t-win32.whl", hash = "sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d", size = 14819, upload-time = "2025-09-27T18:37:26.285Z" }, + { url = "https://files.pythonhosted.org/packages/1a/8a/0402ba61a2f16038b48b39bccca271134be00c5c9f0f623208399333c448/markupsafe-3.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9", size = 15426, upload-time = "2025-09-27T18:37:27.316Z" }, + { url = "https://files.pythonhosted.org/packages/70/bc/6f1c2f612465f5fa89b95bead1f44dcb607670fd42891d8fdcd5d039f4f4/markupsafe-3.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa", size = 14146, upload-time = "2025-09-27T18:37:28.327Z" }, +] + +[[package]] +name = "matplotlib" +version = "3.10.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "contourpy", version = "1.3.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "contourpy", version = "1.3.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "cycler" }, + { name = "fonttools" }, + { name = "kiwisolver" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "packaging" }, + { name = "pillow" }, + { name = "pyparsing" }, + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/63/1b/4be5be87d43d327a0cf4de1a56e86f7f84c89312452406cf122efe2839e6/matplotlib-3.10.9.tar.gz", hash = "sha256:fd66508e8c6877d98e586654b608a0456db8d7e8a546eb1e2600efd957302358", size = 34811233, upload-time = "2026-04-24T00:14:13.539Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/6f/340b04986e67aac6f66c5145ce68bf72c64bed30f92c8913499a6e6b8f99/matplotlib-3.10.9-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:77210dce9cb8153dffc967efaae990543392563d5a376d4dd8539bebcb0ed217", size = 8296625, upload-time = "2026-04-24T00:11:43.376Z" }, + { url = "https://files.pythonhosted.org/packages/bb/2f/127081eb83162053ebb9678ceac64220b93a663e0167432566e9c7c82aab/matplotlib-3.10.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1e7698ac9868428e84d2c967424803b2472ff7167d9d6590d4204ed775343c3b", size = 8188790, upload-time = "2026-04-24T00:11:46.556Z" }, + { url = "https://files.pythonhosted.org/packages/fc/b7/d8bcec2626c35f96972bff656299fef4578113ea6193c8fdad324710410c/matplotlib-3.10.9-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1aa972116abb4c9d201bf245620b433726cb6856f3bef6a78f776a00f5c92d37", size = 8769389, upload-time = "2026-04-24T00:11:48.959Z" }, + { url = "https://files.pythonhosted.org/packages/12/49/b78e214a527ea732033b7f4d37f7afb504d74ba9d134bd47938230dfb8b1/matplotlib-3.10.9-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ae2f11957b27ce53497dd4d7b235c4d4f1faf383dfb39d0c5beb833bff883294", size = 9589657, upload-time = "2026-04-24T00:11:51.915Z" }, + { url = "https://files.pythonhosted.org/packages/5f/15/5246f7b43beae19c74dfee651d58d6cc8112e06f77adb4e88cc04f2e3a23/matplotlib-3.10.9-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b049278ddce116aaa1c1377ebf58adea909132dfce0281cf7e3a1ea9fc2e2c65", size = 9651983, upload-time = "2026-04-24T00:11:54.766Z" }, + { url = "https://files.pythonhosted.org/packages/75/77/5acecfe672ba0fa1b8c0454f69ce155d1e6fc5852fa7206bf9afaf767121/matplotlib-3.10.9-cp310-cp310-win_amd64.whl", hash = "sha256:82834c3c292d24d3a8aae77cd2d20019de69d692a34a970e4fdb8d33e2ea3dda", size = 8199701, upload-time = "2026-04-24T00:11:58.389Z" }, + { url = "https://files.pythonhosted.org/packages/4c/8c/290f021104741fea63769c31494f5324c0cd249bf536a65a4350767b1f22/matplotlib-3.10.9-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:68cfdcede415f7c8f5577b03303dd94526cdb6d11036cecdc205e08733b2d2bb", size = 8306860, upload-time = "2026-04-24T00:12:01.207Z" }, + { url = "https://files.pythonhosted.org/packages/51/18/325cd32ece1120d1da51cc4e4294c6580190699490183fc2fe8cb6d61ec5/matplotlib-3.10.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfca0129678bd56379db26c52b5d77ed7de314c047492fbdc763aa7501710cfb", size = 8199254, upload-time = "2026-04-24T00:12:04.239Z" }, + { url = "https://files.pythonhosted.org/packages/79/db/e28c1b83e3680740aa78925f5fb2ae4d16207207419ad75ea9fe604f8676/matplotlib-3.10.9-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8e436d155fa8a3399dc62683f8f5d0e2e50d25d0144a73edd73f82eec8f4abfb", size = 8777092, upload-time = "2026-04-24T00:12:06.793Z" }, + { url = "https://files.pythonhosted.org/packages/55/fa/3ce7adfe9ba101748f465211660d9c6374c876b671bdb8c2bb6d347e8b94/matplotlib-3.10.9-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:56fc0bd271b00025c6edfdc7c2dcd247372c8e1544971d62e1dc7c17367e8bf9", size = 9595691, upload-time = "2026-04-24T00:12:09.706Z" }, + { url = "https://files.pythonhosted.org/packages/36/c4/6960a76686ed668f2c60f84e9799ba4c0d56abdb36b1577b60c1d061d1ec/matplotlib-3.10.9-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a5a6104ed666402ba5106d7f36e0e0cdca4e8d7fa4d39708ca88019e2835a2eb", size = 9659771, upload-time = "2026-04-24T00:12:12.766Z" }, + { url = "https://files.pythonhosted.org/packages/7e/0d/271aace3342157c64700c9ff4c59c7b392f3dbab393692e8db6fbe7ab96c/matplotlib-3.10.9-cp311-cp311-win_amd64.whl", hash = "sha256:d730e984eddf56974c3e72b6129c7ca462ac38dc624338f4b0b23eb23ecba00f", size = 8205112, upload-time = "2026-04-24T00:12:15.773Z" }, + { url = "https://files.pythonhosted.org/packages/e2/ee/cb57ad4754f3e7b9174ce6ce66d9205fb827067e48a9f58ac09d7e7d6b77/matplotlib-3.10.9-cp311-cp311-win_arm64.whl", hash = "sha256:51bf0ddbdc598e060d46c16b5590708f81a1624cefbaaf62f6a81bf9285b8c80", size = 8132310, upload-time = "2026-04-24T00:12:18.645Z" }, + { url = "https://files.pythonhosted.org/packages/35/c6/5581e26c72233ebb2a2a6fed2d24fb7c66b4700120b813f51b0555acf0b6/matplotlib-3.10.9-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f0c3c28d9fbcc1fe7a03be236d73430cf6409c41fb2383a7ac52fe932b072cb1", size = 8319908, upload-time = "2026-04-24T00:12:21.323Z" }, + { url = "https://files.pythonhosted.org/packages/b7/18/4880dd762e40cd360c1bf06e890c5a97b997e91cb324602b1a19950ad5ce/matplotlib-3.10.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:41cb28c2bd769aa3e98322c6ab09854cbcc52ab69d2759d681bba3e327b2b320", size = 8216016, upload-time = "2026-04-24T00:12:23.4Z" }, + { url = "https://files.pythonhosted.org/packages/32/91/d024616abdba99e83120e07a20658976f6a343646710760c4a51df126029/matplotlib-3.10.9-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ae20801130378b82d647ff5047c07316295b68dc054ca6b3c13519d0ea624285", size = 8789336, upload-time = "2026-04-24T00:12:26.096Z" }, + { url = "https://files.pythonhosted.org/packages/5c/04/030a2f61ef2158f5e4c259487a92ac877732499fb33d871585d89e03c42d/matplotlib-3.10.9-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6c63ebcd8b4b169eb2f5c200552ae6b8be8999a005b6b507ed76fb8d7d674fe2", size = 9604602, upload-time = "2026-04-24T00:12:29.052Z" }, + { url = "https://files.pythonhosted.org/packages/fc/c2/541e4d09d87bb6b5830fc28b4c887a9a8cf4e1c6cee698a8c05552ae2003/matplotlib-3.10.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d75d11c949914165976c621b2324f9ef162af7ebf4b057ddf95dd1dba7e5edcf", size = 9670966, upload-time = "2026-04-24T00:12:32.131Z" }, + { url = "https://files.pythonhosted.org/packages/04/a1/4571fc46e7702de8d0c2dc54ad1b2f8e29328dea3ee90831181f7353d93c/matplotlib-3.10.9-cp312-cp312-win_amd64.whl", hash = "sha256:d091f9d758b34aaaaa6331d13574bf01891d903b3dec59bfff458ef7551de5d6", size = 8217462, upload-time = "2026-04-24T00:12:35.226Z" }, + { url = "https://files.pythonhosted.org/packages/4b/d0/2269edb12aa30c13c8bcc9382892e39943ce1d28aab4ec296e0381798e81/matplotlib-3.10.9-cp312-cp312-win_arm64.whl", hash = "sha256:10cc5ce06d10231c36f40e875f3c7e8050362a4ee8f0ee5d29a6b3277d57bb42", size = 8136688, upload-time = "2026-04-24T00:12:37.442Z" }, + { url = "https://files.pythonhosted.org/packages/aa/d3/8d4f6afbecb49fc04e060a57c0fce39ea51cc163a6bd87303ccd698e4fa6/matplotlib-3.10.9-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b580440f1ff81a0e34122051a3dfabb7e4b7f9e380629929bde0eff9af72165f", size = 8320331, upload-time = "2026-04-24T00:12:39.688Z" }, + { url = "https://files.pythonhosted.org/packages/63/d9/9e14bc7564bf92d5ffa801ae5fac819ce74b925dfb55e3ebde61a3bbad3e/matplotlib-3.10.9-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b1b745c489cd1a77a0dc1120a05dc87af9798faebc913601feb8c73d89bf2d1e", size = 8216461, upload-time = "2026-04-24T00:12:42.494Z" }, + { url = "https://files.pythonhosted.org/packages/8a/17/4402d0d14ccf1dfc70932600b68097fbbf9c898a4871d2cbbe79c7801a32/matplotlib-3.10.9-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8f3bcac1ca5ed000a6f4337d47ba67dfddf37ed6a46c15fd7f014997f7bf865f", size = 8790091, upload-time = "2026-04-24T00:12:44.789Z" }, + { url = "https://files.pythonhosted.org/packages/3e/0b/322aeec06dd9b91411f92028b37d447342770a24392aa4813e317064dad5/matplotlib-3.10.9-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7a8d66a55def891c33147ba3ba9bfcabf0b526a43764c818acbb4525e5ed0838", size = 9605027, upload-time = "2026-04-24T00:12:47.583Z" }, + { url = "https://files.pythonhosted.org/packages/74/88/5f13482f55e7b00bcfc09838b093c2456e1379978d2a146844aae05350ad/matplotlib-3.10.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d843374407c4017a6403b59c6c81606773d136f3259d5b6da3131bc814542cc2", size = 9671269, upload-time = "2026-04-24T00:12:50.878Z" }, + { url = "https://files.pythonhosted.org/packages/c5/e0/0840fd2f93da988ec660b8ad1984abe9f25d2aed22a5e394ff1c68c88307/matplotlib-3.10.9-cp313-cp313-win_amd64.whl", hash = "sha256:f4399f64b3e94cd500195490972ae1ee81170df1636fa15364d157d5bdd7b921", size = 8217588, upload-time = "2026-04-24T00:12:53.784Z" }, + { url = "https://files.pythonhosted.org/packages/47/b9/d706d06dd605c49b9f83a2aed8c13e3e5db70697d7a80b7e3d7915de6b17/matplotlib-3.10.9-cp313-cp313-win_arm64.whl", hash = "sha256:ba7b3b8ef09eab7df0e86e9ae086faa433efbfbdb46afcb3aa16aabf779469a8", size = 8136913, upload-time = "2026-04-24T00:12:56.501Z" }, + { url = "https://files.pythonhosted.org/packages/9b/45/6e32d96978264c8ca8c4b1010adb955a1a49cfaf314e212bbc8908f04a61/matplotlib-3.10.9-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:09218df8a93712bd6ea133e83a153c755448cf7868316c531cffcc43f69d1cc9", size = 8368019, upload-time = "2026-04-24T00:12:58.896Z" }, + { url = "https://files.pythonhosted.org/packages/86/0a/c8e3d3bba245f0f7fc424937f8ff7ef77291a36af3edb97ccd78aa93d84f/matplotlib-3.10.9-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:82368699727bfb7b0182e1aa13082e3c08e092fa1a25d3e1fd92405bff96f6d4", size = 8264645, upload-time = "2026-04-24T00:13:01.406Z" }, + { url = "https://files.pythonhosted.org/packages/3d/aa/5bf5a14fe4fed73a4209a155606f8096ff797aad89c6c35179026571133e/matplotlib-3.10.9-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3225f4e1edcb8c86c884ddf79ebe20ecd0a67d30188f279897554ccd8fded4dc", size = 8802194, upload-time = "2026-04-24T00:13:03.702Z" }, + { url = "https://files.pythonhosted.org/packages/dd/5e/b4be852d6bba6fd15893fadf91ff26ae49cb91aac789e95dde9d342e664f/matplotlib-3.10.9-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:de2445a0c6690d21b7eb6ce071cebad6d40a2e9bdf10d039074a96ba19797b99", size = 9622684, upload-time = "2026-04-24T00:13:06.647Z" }, + { url = "https://files.pythonhosted.org/packages/4c/3d/ed428c971139112ef730f62770654d609467346d09d4b62617e1afd68a5a/matplotlib-3.10.9-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:b2b9516251cb89ff618d757daec0e2ed1bf21248013844a853d87ef85ab3081d", size = 9680790, upload-time = "2026-04-24T00:13:10.009Z" }, + { url = "https://files.pythonhosted.org/packages/e7/09/052e884aaf2b985c63cb79f715f1d5b6a3eaa7de78f6a52b9dbc077d5b53/matplotlib-3.10.9-cp313-cp313t-win_amd64.whl", hash = "sha256:e9fae004b941b23ff2edcf1567a857ed77bafc8086ffa258190462328434faf8", size = 8287571, upload-time = "2026-04-24T00:13:13.087Z" }, + { url = "https://files.pythonhosted.org/packages/f4/38/ae27288e788c35a4250491422f3db7750366fc8c97d6f36fbdecfc1f5518/matplotlib-3.10.9-cp313-cp313t-win_arm64.whl", hash = "sha256:6b63d9c7c769b88ab81e10dc86e4e0607cf56817b9f9e6cf24b2a5f1693b8e38", size = 8188292, upload-time = "2026-04-24T00:13:15.546Z" }, + { url = "https://files.pythonhosted.org/packages/d6/e6/3bd8afd04949f02eabc1c17115ea5255e19cacd4d06fc5abdde4eeb0052c/matplotlib-3.10.9-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:172db52c9e683f5d12eaf57f0f54834190e12581fe1cc2a19595a8f5acb4e77d", size = 8321276, upload-time = "2026-04-24T00:13:18.318Z" }, + { url = "https://files.pythonhosted.org/packages/41/86/86231232fff41c9f8e4a1a7d7a597d349a02527109c3af7d618366122139/matplotlib-3.10.9-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:97e35e8d39ccc85859095e01a53847432ba9a53ddf7986f7a54a11b73d0e143f", size = 8218218, upload-time = "2026-04-24T00:13:20.974Z" }, + { url = "https://files.pythonhosted.org/packages/85/8f/becc9722cafc64f5d2eb0b7c1bf5f585271c618a45dbd8fabeb021f898b6/matplotlib-3.10.9-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:aba1615dabe83188e19d4f75a253c6a08423e04c1425e64039f800050a69de6b", size = 9608145, upload-time = "2026-04-24T00:13:23.228Z" }, + { url = "https://files.pythonhosted.org/packages/32/5d/f7e914f7d9325abff4057cee62c0fa70263683189f774473cbfb534cd13b/matplotlib-3.10.9-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:34cf8167e023ad956c15f36302911d5406bd99a9862c1a8499ea6f7c0e015dc2", size = 9885085, upload-time = "2026-04-24T00:13:25.849Z" }, + { url = "https://files.pythonhosted.org/packages/a5/fd/fa69f2221534e80cc5772ac2b7d222011a2acafc2ec7216d5dd174c864ae/matplotlib-3.10.9-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:59476c6d29d612b8e9bb6ce8c5b631be6ba8f9e3a2421f22a02b192c7dd28716", size = 9672358, upload-time = "2026-04-24T00:13:28.906Z" }, + { url = "https://files.pythonhosted.org/packages/ab/1a/5a4f747a8b271cbb024946d2dd3c913ab5032ba430626f8c3528ada96b4b/matplotlib-3.10.9-cp314-cp314-win_amd64.whl", hash = "sha256:336b9acc64d309063126edcdaca00db9373af3c476bb94388fe9c5a53ad13e6f", size = 8349970, upload-time = "2026-04-24T00:13:31.904Z" }, + { url = "https://files.pythonhosted.org/packages/64/dc/95d60ecaefe30680a154b52ea96ab4b0dab547f1fd6aa12f5fb655e89cae/matplotlib-3.10.9-cp314-cp314-win_arm64.whl", hash = "sha256:2dc9477819ffd78ad12a20df1d9d6a6bd4fec6aaa9072681465fddca052f1456", size = 8272785, upload-time = "2026-04-24T00:13:34.511Z" }, + { url = "https://files.pythonhosted.org/packages/70/a0/005d68bc8b8418300ce6591f18586910a8526806e2ab663933d9f20a41e9/matplotlib-3.10.9-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:da4e09638420548f31c354032a6250e473c68e5a4e96899b4844cf39ddea23fe", size = 8367999, upload-time = "2026-04-24T00:13:36.962Z" }, + { url = "https://files.pythonhosted.org/packages/22/05/1236cc9290be70b2498af20ca348add76e3fffe7f67b477db5133a84f3ea/matplotlib-3.10.9-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:345f6f68ecc8da0ca56fad2ea08fde1a115eda530079eca185d50a7bc3e146c6", size = 8264543, upload-time = "2026-04-24T00:13:39.851Z" }, + { url = "https://files.pythonhosted.org/packages/cd/c2/071f5a5ff6c5bd63aaaf2f45c811d9bf2ced94bde188d9e1a519e21d0cba/matplotlib-3.10.9-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4edcfbd8565339aa62f1cd4012f7180926fdbe71850f7b0d3c379c175cd6b66c", size = 9622800, upload-time = "2026-04-24T00:13:42.296Z" }, + { url = "https://files.pythonhosted.org/packages/95/57/da7d1f10a85624b9e7db68e069dd94e58dc41dbf9463c5921632ecbe3661/matplotlib-3.10.9-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6be157fe17fc37cb95ac1d7374cf717ce9259616edec911a78d9d26dae8522d4", size = 9888561, upload-time = "2026-04-24T00:13:45.026Z" }, + { url = "https://files.pythonhosted.org/packages/67/b2/ef8d6bb59b0edb6c16c968b70f548aa13b54348972def5aa6ac85df67145/matplotlib-3.10.9-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:4e42042d54db34fda4e95a7bd3e5789c2a995d2dad3eb8850232ee534092fbbf", size = 9680884, upload-time = "2026-04-24T00:13:48.066Z" }, + { url = "https://files.pythonhosted.org/packages/61/1c/d21bfeb9931881ebe96bcfcff27c7ae4b160ae0ec291a714c42641a56d75/matplotlib-3.10.9-cp314-cp314t-win_amd64.whl", hash = "sha256:c27df8b3848f32a83d1767566595e43cfaa4460380974da06f4279a7ec143c39", size = 8432333, upload-time = "2026-04-24T00:13:51.008Z" }, + { url = "https://files.pythonhosted.org/packages/78/23/92493c3e6e1b635ccfff146f7b99e674808787915420373ac399283764c2/matplotlib-3.10.9-cp314-cp314t-win_arm64.whl", hash = "sha256:a49f1eadc84ca85fd72fa4e89e70e61bf86452df6f971af04b12c60761a0772c", size = 8324785, upload-time = "2026-04-24T00:13:53.633Z" }, + { url = "https://files.pythonhosted.org/packages/2c/2b/0e92ad0ac446633f928a1563db4aa8add407e1924faf0ded5b95b35afb27/matplotlib-3.10.9-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1872fb212a05b729e649754a72d5da61d03e0554d76e80303b6f83d1d2c0552b", size = 8293058, upload-time = "2026-04-24T00:13:56.339Z" }, + { url = "https://files.pythonhosted.org/packages/4b/23/74682fd369f5299ceda438fea2a0662e6383b85c9383fb9cdfcf04713e07/matplotlib-3.10.9-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:985f2238880e2e69093f588f5fe2e46771747febf0649f3cf7f7b7480875317f", size = 8186627, upload-time = "2026-04-24T00:13:58.623Z" }, + { url = "https://files.pythonhosted.org/packages/ca/e8/368aab88f3c4cd8992800f31abfe0670c3e47540ba20a97e9fdbcde594b3/matplotlib-3.10.9-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6640f75af2c6148293caa0a2b39dd806a492dd66c8a8b04035813e33d0fd2585", size = 8764117, upload-time = "2026-04-24T00:14:01.684Z" }, + { url = "https://files.pythonhosted.org/packages/63/e2/9f66ca6a651a52abfe0d4964ce01439ed34f3f1e119de10ff3a07f403043/matplotlib-3.10.9-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:42fb814efabe95c06c1994d8ab5a8385f43a249e23badd3ba931d4308e5bca20", size = 8304420, upload-time = "2026-04-24T00:14:04.57Z" }, + { url = "https://files.pythonhosted.org/packages/e8/e8/467c03568218792906aa87b5e7bb379b605e056ed0c74fe00c051786d925/matplotlib-3.10.9-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:f76e640a5268850bfda54b5131b1b1941cc685e42c5fa98ed9f2d64038308cba", size = 8197981, upload-time = "2026-04-24T00:14:07.233Z" }, + { url = "https://files.pythonhosted.org/packages/6f/87/afead29192170917537934c6aff4b008c805fff7b1ccea0c79120d96beda/matplotlib-3.10.9-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3fc0364dfbe1d07f6d15c5ebd0c5bf89e126916e5a8667dd4a7a6e84c36653d4", size = 8774002, upload-time = "2026-04-24T00:14:09.816Z" }, +] + +[[package]] +name = "matplotlib-inline" +version = "0.2.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bd/c0/9f7c9a46090390368a4d7bcb76bb87a4a36c421e4c0792cdb53486ffac7a/matplotlib_inline-0.2.2.tar.gz", hash = "sha256:72f3fe8fce36b70d4a5b612f899090cd0401deddc4ea90e1572b9f4bfb058c79", size = 8150, upload-time = "2026-05-08T17:33:33.49Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl", hash = "sha256:3c821cf1c209f59fb2d2d64abbf5b23b67bcb2210d663f9918dd851c6da1fcf6", size = 9534, upload-time = "2026-05-08T17:33:32.055Z" }, +] + +[[package]] +name = "mdit-py-plugins" +version = "0.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/59/fc/f8d0863f8862f25602c0404d75568e89fb6b4109804645e5cdfb1be5cf56/mdit_py_plugins-0.6.1.tar.gz", hash = "sha256:a2bca0f039f39dbd35fb74ae1b5f998608c437463371f0ff7f49a19a17a114d0", size = 56114, upload-time = "2026-05-13T09:03:38.91Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a5/69/6da5581c6a7fede7dc261bf4e67d6adca4196f176b43288b55b3db395b6e/mdit_py_plugins-0.6.1-py3-none-any.whl", hash = "sha256:214c82fb2ac524472ab6a5bcab1de80f73b50443e187f401bfd77efbc7c6481d", size = 66663, upload-time = "2026-05-13T09:03:37.76Z" }, +] + +[[package]] +name = "mdurl" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload-time = "2022-08-14T12:40:10.846Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, +] + +[[package]] +name = "mistune" +version = "3.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ca/84/620cc3f7e3adf6f5067e10f4dbae71295d8f9e16d5d3f9ef97c40f2f592c/mistune-3.2.1.tar.gz", hash = "sha256:7c8e5501d38bac1582e067e46c8343f17d57ea1aaa735823f3aba1fd59c88a28", size = 98003, upload-time = "2026-05-03T14:33:22.312Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/7f/a946aa4f8752b37102b41e64dca18a1976ac705c3a0d1dfe74d820a02552/mistune-3.2.1-py3-none-any.whl", hash = "sha256:78cdb0ba5e938053ccf63651b352508d2efa9411dc8810bfb05f2dc5140c0048", size = 53749, upload-time = "2026-05-03T14:33:20.551Z" }, +] + +[[package]] +name = "more-itertools" +version = "11.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/de/1d/f4da6f02cdffe04d6362210b807146a26044c88d839208aec273bb0d9184/more_itertools-11.1.0.tar.gz", hash = "sha256:48e8f4d9e7e5878571ecf6f2b4e57634f93cd474cc8cfbd2376f2d11b396e30d", size = 145772, upload-time = "2026-05-22T14:14:29.909Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/3d/1087453384dbde46a8c7f9356eead2c58be8a7bf156bca40243377c85715/more_itertools-11.1.0-py3-none-any.whl", hash = "sha256:4b65538ae22f6fed0ce4874efd317463a7489796a0939fa66824dd542125a192", size = 72226, upload-time = "2026-05-22T14:14:28.824Z" }, +] + +[[package]] +name = "mpmath" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/47/dd32fa426cc72114383ac549964eecb20ecfd886d1e5ccf5340b55b02f57/mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f", size = 508106, upload-time = "2023-03-07T16:47:11.061Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c", size = 536198, upload-time = "2023-03-07T16:47:09.197Z" }, +] + +[[package]] +name = "mypy" +version = "1.20.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "librt", marker = "platform_python_implementation != 'PyPy' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "mypy-extensions" }, + { name = "pathspec" }, + { name = "tomli", marker = "python_full_version < '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/04/af/e3d4b3e9ec91a0ff9aabfdb38692952acf49bbb899c2e4c29acb3a6da3ae/mypy-1.20.2.tar.gz", hash = "sha256:e8222c26daaafd9e8626dec58ae36029f82585890589576f769a650dd20fd665", size = 3817349, upload-time = "2026-04-21T17:12:28.473Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/97/ce2502df2cecf2ef997b6c6527c4a223b92feb9e7b790cdc8dcd683f3a8a/mypy-1.20.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cf5a4db6dca263010e2c7bff081c89383c72d187ba2cf4c44759aac970e2f0c4", size = 14457059, upload-time = "2026-04-21T17:06:14.935Z" }, + { url = "https://files.pythonhosted.org/packages/c9/34/417ee60b822cc80c0f3dc9f495ad7fd8dbb8d8b2cf4baf22d4046d25d01d/mypy-1.20.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7b0e817b518bff7facd7f85ea05b643ad8bdcce684cf29784987b0a7c8e1f997", size = 13346816, upload-time = "2026-04-21T17:10:41.433Z" }, + { url = "https://files.pythonhosted.org/packages/4a/85/e20951978702df58379d0bcc2e8f7ccdca4e78cd7dc66dd3ddbf9b29d517/mypy-1.20.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97d7b9a485b40f8ca425460e89bf1da2814625b2da627c0dcc6aa46c92631d14", size = 13772593, upload-time = "2026-04-21T17:08:11.24Z" }, + { url = "https://files.pythonhosted.org/packages/63/a5/5441a13259ec516c56fd5de0fd96a69a9590ae6c5e5d3e5174aa84b97973/mypy-1.20.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1e1c12f6d2db3d78b909b5f77513c11eb7f2dd2782b96a3ab6dffc7d44575c99", size = 14656635, upload-time = "2026-04-21T17:09:54.042Z" }, + { url = "https://files.pythonhosted.org/packages/3b/51/b89c69157c5e1f19fd125a65d991166a26906e7902f026f00feebbcfa2b9/mypy-1.20.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:89dce27e142d25ffbc154c1819383b69f2e9234dc4ed4766f42e0e8cb264ab5c", size = 14943278, upload-time = "2026-04-21T17:09:15.599Z" }, + { url = "https://files.pythonhosted.org/packages/e9/44/6b0eeecfe96d7cce1d71c66b8e03cb304aa70ec11f1955dc1d6b46aca3c3/mypy-1.20.2-cp310-cp310-win_amd64.whl", hash = "sha256:f376e37f9bf2a946872fc5fd1199c99310748e3c26c7a26683f13f8bdb756cbd", size = 10851915, upload-time = "2026-04-21T17:06:03.5Z" }, + { url = "https://files.pythonhosted.org/packages/3c/36/6593dc88545d75fb96416184be5392da5e2a8e8c2802a8597913e16ae25c/mypy-1.20.2-cp310-cp310-win_arm64.whl", hash = "sha256:6e2b469efd811707bc530fd1effef0f5d6eebcb7fe376affae69025da4b979a2", size = 9786676, upload-time = "2026-04-21T17:07:02.035Z" }, + { url = "https://files.pythonhosted.org/packages/1f/4d/9ebeae211caccbdaddde7ed5e31dfcf57faac66be9b11deb1dc6526c8078/mypy-1.20.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4077797a273e56e8843d001e9dfe4ba10e33323d6ade647ff260e5cd97d9758c", size = 14371307, upload-time = "2026-04-21T17:08:56.442Z" }, + { url = "https://files.pythonhosted.org/packages/95/d7/93473d34b61f04fac1aecc01368485c89c5c4af7a4b9a0cab5d77d04b63f/mypy-1.20.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:cdecf62abcc4292500d7858aeae87a1f8f1150f4c4dd08fb0b336ee79b2a6df3", size = 13258917, upload-time = "2026-04-21T17:05:50.978Z" }, + { url = "https://files.pythonhosted.org/packages/e2/30/3dd903e8bafb7b5f7bf87fcd58f8382086dea2aa19f0a7b357f21f63071b/mypy-1.20.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c566c3a88b6ece59b3d70f65bedef17304f48eb52ff040a6a18214e1917b3254", size = 13700516, upload-time = "2026-04-21T17:11:33.161Z" }, + { url = "https://files.pythonhosted.org/packages/07/05/c61a140aba4c729ac7bc99ae26fc627c78a6e08f5b9dd319244ea71a3d7e/mypy-1.20.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0deb80d062b2479f2c87ae568f89845afc71d11bc41b04179e58165fd9f31e98", size = 14562889, upload-time = "2026-04-21T17:05:27.674Z" }, + { url = "https://files.pythonhosted.org/packages/fd/87/da78243742ffa8a36d98c3010f0d829f93d5da4e6786f1a1a6f2ad616502/mypy-1.20.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bba9ad231e92a3e424b3e56b65aa17704993425bba97e302c832f9466bb85bac", size = 14803844, upload-time = "2026-04-21T17:10:06.2Z" }, + { url = "https://files.pythonhosted.org/packages/37/52/10a1ddf91b40f843943a3c6db51e2df59c9e237f29d355e95eaab427461f/mypy-1.20.2-cp311-cp311-win_amd64.whl", hash = "sha256:baf593f2765fa3a6b1ef95807dbaa3d25b594f6a52adcc506a6b9cb115e1be67", size = 10846300, upload-time = "2026-04-21T17:12:23.886Z" }, + { url = "https://files.pythonhosted.org/packages/20/02/f9a4415b664c53bd34d6709be59da303abcae986dc4ac847b402edb6fa1e/mypy-1.20.2-cp311-cp311-win_arm64.whl", hash = "sha256:20175a1c0f49863946ec20b7f63255768058ac4f07d2b9ded6a6b46cfb5a9100", size = 9779498, upload-time = "2026-04-21T17:09:23.695Z" }, + { url = "https://files.pythonhosted.org/packages/71/4e/7560e4528db9e9b147e4c0f22660466bf30a0a1fe3d63d1b9d3b0fd354ee/mypy-1.20.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4dbfcf869f6b0517f70cf0030ba6ea1d6645e132337a7d5204a18d8d5636c02b", size = 14539393, upload-time = "2026-04-21T17:07:12.52Z" }, + { url = "https://files.pythonhosted.org/packages/32/d9/34a5efed8124f5a9234f55ac6a4ced4201e2c5b81e1109c49ad23190ec8c/mypy-1.20.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4b6481b228d072315b053210b01ac320e1be243dc17f9e5887ef167f23f5fae4", size = 13361642, upload-time = "2026-04-21T17:06:53.742Z" }, + { url = "https://files.pythonhosted.org/packages/d1/14/eb377acf78c03c92d566a1510cda8137348215b5335085ef662ab82ecd3a/mypy-1.20.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:34397cdced6b90b836e38182076049fdb41424322e0b0728c946b0939ebdf9f6", size = 13740347, upload-time = "2026-04-21T17:12:04.73Z" }, + { url = "https://files.pythonhosted.org/packages/b9/94/7e4634a32b641aa1c112422eed1bbece61ee16205f674190e8b536f884de/mypy-1.20.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a5da6976f20cae27059ea8d0c86e7cef3de720e04c4bb9ee18e3690fdb792066", size = 14734042, upload-time = "2026-04-21T17:07:43.16Z" }, + { url = "https://files.pythonhosted.org/packages/7a/f3/f7e62395cb7f434541b4491a01149a4439e28ace4c0c632bbf5431e92d1f/mypy-1.20.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:56908d7e08318d39f85b1f0c6cfd47b0cac1a130da677630dac0de3e0623e102", size = 14964958, upload-time = "2026-04-21T17:11:00.665Z" }, + { url = "https://files.pythonhosted.org/packages/3e/0d/47e3c3a0ec2a876e35aeac365df3cac7776c36bbd4ed18cc521e1b9d255b/mypy-1.20.2-cp312-cp312-win_amd64.whl", hash = "sha256:d52ad8d78522da1d308789df651ee5379088e77c76cb1994858d40a426b343b9", size = 10911340, upload-time = "2026-04-21T17:10:49.179Z" }, + { url = "https://files.pythonhosted.org/packages/d6/b2/6c852d72e0ea8b01f49da817fb52539993cde327e7d010e0103dc12d0dac/mypy-1.20.2-cp312-cp312-win_arm64.whl", hash = "sha256:785b08db19c9f214dc37d65f7c165d19a30fcecb48abfa30f31b01b5acaabb58", size = 9833947, upload-time = "2026-04-21T17:09:05.267Z" }, + { url = "https://files.pythonhosted.org/packages/5b/c4/b93812d3a192c9bcf5df405bd2f30277cd0e48106a14d1023c7f6ed6e39b/mypy-1.20.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:edfbfca868cdd6bd8d974a60f8a3682f5565d3f5c99b327640cedd24c4264026", size = 14524670, upload-time = "2026-04-21T17:10:30.737Z" }, + { url = "https://files.pythonhosted.org/packages/f3/47/42c122501bff18eaf1e8f457f5c017933452d8acdc52918a9f59f6812955/mypy-1.20.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e2877a02380adfcdbc69071a0f74d6e9dbbf593c0dc9d174e1f223ffd5281943", size = 13336218, upload-time = "2026-04-21T17:08:44.069Z" }, + { url = "https://files.pythonhosted.org/packages/92/8f/75bbc92f41725fbd585fb17b440b1119b576105df1013622983e18640a93/mypy-1.20.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7488448de6007cd5177c6cea0517ac33b4c0f5ee9b5e9f2be51ce75511a85517", size = 13724906, upload-time = "2026-04-21T17:08:01.02Z" }, + { url = "https://files.pythonhosted.org/packages/a1/32/4c49da27a606167391ff0c39aa955707a00edc500572e562f7c36c08a71f/mypy-1.20.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bb9c2fa06887e21d6a3a868762acb82aec34e2c6fd0174064f27c93ede68ad15", size = 14726046, upload-time = "2026-04-21T17:11:22.354Z" }, + { url = "https://files.pythonhosted.org/packages/7f/fc/4e354a1bd70216359deb0c9c54847ee6b32ef78dfb09f5131ff99b494078/mypy-1.20.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9d56a78b646f2e3daa865bc70cd5ec5a46c50045801ca8ff17a0c43abc97e3ee", size = 14955587, upload-time = "2026-04-21T17:12:16.033Z" }, + { url = "https://files.pythonhosted.org/packages/62/b2/c0f2056e9eb8f08c62cafd9715e4584b89132bdc832fcf85d27d07b5f3e5/mypy-1.20.2-cp313-cp313-win_amd64.whl", hash = "sha256:2a4102b03bb7481d9a91a6da8d174740c9c8c4401024684b9ca3b7cc5e49852f", size = 10922681, upload-time = "2026-04-21T17:06:35.842Z" }, + { url = "https://files.pythonhosted.org/packages/e5/14/065e333721f05de8ef683d0aa804c23026bcc287446b61cac657b902ccac/mypy-1.20.2-cp313-cp313-win_arm64.whl", hash = "sha256:a95a9248b0c6fd933a442c03c3b113c3b61320086b88e2c444676d3fd1ca3330", size = 9830560, upload-time = "2026-04-21T17:07:51.023Z" }, + { url = "https://files.pythonhosted.org/packages/ae/d1/b4ec96b0ecc620a4443570c6e95c867903428cfcde4206518eafdd5880c3/mypy-1.20.2-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:419413398fe250aae057fd2fe50166b61077083c9b82754c341cf4fd73038f30", size = 14524561, upload-time = "2026-04-21T17:06:27.325Z" }, + { url = "https://files.pythonhosted.org/packages/3a/63/d2c2ff4fa66bc49477d32dfa26e8a167ba803ea6a69c5efb416036909d30/mypy-1.20.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:e73c07f23009962885c197ccb9b41356a30cc0e5a1d0c2ea8fd8fb1362d7f924", size = 13363883, upload-time = "2026-04-21T17:11:11.239Z" }, + { url = "https://files.pythonhosted.org/packages/2a/56/983916806bf4eddeaaa2c9230903c3669c6718552a921154e1c5182c701f/mypy-1.20.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0c64e5973df366b747646fc98da921f9d6eba9716d57d1db94a83c026a08e0fb", size = 13742945, upload-time = "2026-04-21T17:08:34.181Z" }, + { url = "https://files.pythonhosted.org/packages/19/65/0cd9285ab010ee8214c83d67c6b49417c40d86ce46f1aa109457b5a9b8d7/mypy-1.20.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a65aa591af023864fd08a97da9974e919452cfe19cb146c8a5dc692626445dc", size = 14706163, upload-time = "2026-04-21T17:05:15.51Z" }, + { url = "https://files.pythonhosted.org/packages/94/97/48ff3b297cafcc94d185243a9190836fb1b01c1b0918fff64e941e973cc9/mypy-1.20.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4fef51b01e638974a6e69885687e9bd40c8d1e09a6cd291cca0619625cf1f558", size = 14938677, upload-time = "2026-04-21T17:05:39.562Z" }, + { url = "https://files.pythonhosted.org/packages/fd/a1/1b4233d255bdd0b38a1f284feeb1c143ca508c19184964e22f8d837ec851/mypy-1.20.2-cp314-cp314-win_amd64.whl", hash = "sha256:913485a03f1bcf5d279409a9d2b9ed565c151f61c09f29991e5faa14033da4c8", size = 11089322, upload-time = "2026-04-21T17:06:44.29Z" }, + { url = "https://files.pythonhosted.org/packages/78/c2/ce7ee2ba36aeb954ba50f18fa25d9c1188578654b97d02a66a15b6f09531/mypy-1.20.2-cp314-cp314-win_arm64.whl", hash = "sha256:c3bae4f855d965b5453784300c12ffc63a548304ac7f99e55d4dc7c898673aa3", size = 10017775, upload-time = "2026-04-21T17:07:20.732Z" }, + { url = "https://files.pythonhosted.org/packages/4e/a1/9d93a7d0b5859af0ead82b4888b46df6c8797e1bc5e1e262a08518c6d48e/mypy-1.20.2-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:2de3dcea53babc1c3237a19002bc3d228ce1833278f093b8d619e06e7cc79609", size = 15549002, upload-time = "2026-04-21T17:08:23.107Z" }, + { url = "https://files.pythonhosted.org/packages/00/d2/09a6a10ee1bf0008f6c144d9676f2ca6a12512151b4e0ad0ff6c4fac5337/mypy-1.20.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:52b176444e2e5054dfcbcb8c75b0b719865c96247b37407184bbfca5c353f2c2", size = 14401942, upload-time = "2026-04-21T17:07:31.837Z" }, + { url = "https://files.pythonhosted.org/packages/57/da/9594b75c3c019e805250bed3583bdf4443ff9e6ef08f97e39ae308cb06f2/mypy-1.20.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:688c3312e5dadb573a2c69c82af3a298d43ecf9e6d264e0f95df960b5f6ac19c", size = 15041649, upload-time = "2026-04-21T17:09:34.653Z" }, + { url = "https://files.pythonhosted.org/packages/97/77/f75a65c278e6e8eba2071f7f5a90481891053ecc39878cc444634d892abe/mypy-1.20.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:29752dbbf8cc53f89f6ac096d363314333045c257c9c75cbd189ca2de0455744", size = 15864588, upload-time = "2026-04-21T17:11:44.936Z" }, + { url = "https://files.pythonhosted.org/packages/d7/46/1a4e1c66e96c1a3246ddf5403d122ac9b0a8d2b7e65730b9d6533ba7a6d3/mypy-1.20.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:803203d2b6ea644982c644895c2f78b28d0e208bba7b27d9b921e0ec5eb207c6", size = 16093956, upload-time = "2026-04-21T17:10:17.683Z" }, + { url = "https://files.pythonhosted.org/packages/5a/2c/78a8851264dec38cd736ca5b8bc9380674df0dd0be7792f538916157716c/mypy-1.20.2-cp314-cp314t-win_amd64.whl", hash = "sha256:9bcb8aa397ff0093c824182fd76a935a9ba7ad097fcbef80ae89bf6c1731d8ec", size = 12568661, upload-time = "2026-04-21T17:11:54.473Z" }, + { url = "https://files.pythonhosted.org/packages/83/01/cd7318aa03493322ce275a0e14f4f52b8896335e4e79d4fb8153a7ad2b77/mypy-1.20.2-cp314-cp314t-win_arm64.whl", hash = "sha256:e061b58443f1736f8a37c48978d7ab581636d6ab03e3d4f99e3fa90463bb9382", size = 10389240, upload-time = "2026-04-21T17:09:42.719Z" }, + { url = "https://files.pythonhosted.org/packages/28/9a/f23c163e25b11074188251b0b5a0342625fc1cdb6af604757174fa9acc9b/mypy-1.20.2-py3-none-any.whl", hash = "sha256:a94c5a76ab46c5e6257c7972b6c8cff0574201ca7dc05647e33e795d78680563", size = 2637314, upload-time = "2026-04-21T17:05:54.5Z" }, +] + +[[package]] +name = "mypy-extensions" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload-time = "2025-04-22T14:54:24.164Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload-time = "2025-04-22T14:54:22.983Z" }, +] + +[[package]] +name = "myst-nb" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "importlib-metadata" }, + { name = "ipykernel" }, + { name = "ipython", version = "8.39.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "ipython", version = "9.14.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "jupyter-cache" }, + { name = "myst-parser" }, + { name = "nbclient" }, + { name = "nbformat" }, + { name = "pyyaml" }, + { name = "sphinx" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bd/b4/ff1abeea67e8cfe0a8c033389f6d1d8b0bfecfd611befb5cbdeab884fce6/myst_nb-1.4.0.tar.gz", hash = "sha256:c145598de62446a6fd009773dd071a40d3b76106ace780de1abdfc6961f614c2", size = 82285, upload-time = "2026-03-02T21:14:56.95Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/93/0a378b48488879a1d925b42a804edfc6e0cd0ef854220f2dce738a46e7e9/myst_nb-1.4.0-py3-none-any.whl", hash = "sha256:0e2c86e7d3b82c3aa51383f82d6268f7714f3b772c23a796ab09538a8e68b4e4", size = 82555, upload-time = "2026-03-02T21:14:55.652Z" }, +] + +[[package]] +name = "myst-parser" +version = "3.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "docutils" }, + { name = "jinja2" }, + { name = "markdown-it-py" }, + { name = "mdit-py-plugins" }, + { name = "pyyaml" }, + { name = "sphinx" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/49/64/e2f13dac02f599980798c01156393b781aec983b52a6e4057ee58f07c43a/myst_parser-3.0.1.tar.gz", hash = "sha256:88f0cb406cb363b077d176b51c476f62d60604d68a8dcdf4832e080441301a87", size = 92392, upload-time = "2024-04-28T20:22:42.116Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e2/de/21aa8394f16add8f7427f0a1326ccd2b3a2a8a3245c9252bc5ac034c6155/myst_parser-3.0.1-py3-none-any.whl", hash = "sha256:6457aaa33a5d474aca678b8ead9b3dc298e89c68e67012e73146ea6fd54babf1", size = 83163, upload-time = "2024-04-28T20:22:39.985Z" }, +] + +[[package]] +name = "nbclient" +version = "0.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "nbformat" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/a5/b3bae4b590c0cbcada2c63a34f7580024e834a8ba213e949a2f906705787/nbclient-0.11.0.tar.gz", hash = "sha256:04a134a5b087f2c5887f228aca155db50169b8cd9334dee6942c8e927e56081a", size = 62535, upload-time = "2026-06-05T07:52:41.746Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/36/c9/94d73e5a01c5b926c3fa2496e97d7a8dc28ed5a77c0b2ed712f1a62e6694/nbclient-0.11.0-py3-none-any.whl", hash = "sha256:ef7fa0d59d6e1d41103933d8a445a18d5de860ca6b613b87b8574accdb3c2895", size = 25288, upload-time = "2026-06-05T07:52:40.115Z" }, +] + +[[package]] +name = "nbconvert" +version = "7.17.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "beautifulsoup4" }, + { name = "bleach", extra = ["css"] }, + { name = "defusedxml" }, + { name = "jinja2" }, + { name = "jupyter-core" }, + { name = "jupyterlab-pygments" }, + { name = "markupsafe" }, + { name = "mistune" }, + { name = "nbclient" }, + { name = "nbformat" }, + { name = "packaging" }, + { name = "pandocfilters" }, + { name = "pygments" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/01/b1/708e53fe2e429c103c6e6e159106bcf0357ac41aa4c28772bd8402339051/nbconvert-7.17.1.tar.gz", hash = "sha256:34d0d0a7e73ce3cbab6c5aae8f4f468797280b01fd8bd2ca746da8569eddd7d2", size = 865311, upload-time = "2026-04-08T00:44:14.914Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/67/f8/bb0a9d5f46819c821dc1f004aa2cc29b1d91453297dbf5ff20470f00f193/nbconvert-7.17.1-py3-none-any.whl", hash = "sha256:aa85c087b435e7bf1ffd03319f658e285f2b89eccab33bc1ba7025495ab3e7c8", size = 261927, upload-time = "2026-04-08T00:44:12.845Z" }, +] + +[[package]] +name = "nbformat" +version = "5.10.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fastjsonschema" }, + { name = "jsonschema" }, + { name = "jupyter-core" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6d/fd/91545e604bc3dad7dca9ed03284086039b294c6b3d75c0d2fa45f9e9caf3/nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a", size = 142749, upload-time = "2024-04-04T11:20:37.371Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b", size = 78454, upload-time = "2024-04-04T11:20:34.895Z" }, +] + +[[package]] +name = "nbmake" +version = "1.5.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ipykernel" }, + { name = "nbclient" }, + { name = "nbformat" }, + { name = "pygments" }, + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/43/9a/aae201cee5639e1d562b3843af8fd9f8d018bb323e776a2b973bdd5fc64b/nbmake-1.5.5.tar.gz", hash = "sha256:239dc868ea13a7c049746e2aba2c229bd0f6cdbc6bfa1d22f4c88638aa4c5f5c", size = 85929, upload-time = "2024-12-23T18:33:46.774Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/eb/be/b257e12f9710819fde40adc972578bee6b72c5992da1bc8369bef2597756/nbmake-1.5.5-py3-none-any.whl", hash = "sha256:c6fbe6e48b60cacac14af40b38bf338a3b88f47f085c54ac5b8639ff0babaf4b", size = 12818, upload-time = "2024-12-23T18:33:44.566Z" }, +] + +[[package]] +name = "nest-asyncio" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418, upload-time = "2024-01-21T14:25:19.227Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195, upload-time = "2024-01-21T14:25:17.223Z" }, +] + +[[package]] +name = "networkx" +version = "3.4.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130'", + "python_full_version < '3.11' and extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version < '3.11' and sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version < '3.11' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", +] +sdist = { url = "https://files.pythonhosted.org/packages/fd/1d/06475e1cd5264c0b870ea2cc6fdb3e37177c1e565c43f56ff17a10e3937f/networkx-3.4.2.tar.gz", hash = "sha256:307c3669428c5362aab27c8a1260aa8f47c4e91d3891f48be0141738d8d053e1", size = 2151368, upload-time = "2024-10-21T12:39:38.695Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl", hash = "sha256:df5d4365b724cf81b8c6a7312509d0c22386097011ad1abe274afd5e9d3bbc5f", size = 1723263, upload-time = "2024-10-21T12:39:36.247Z" }, +] + +[[package]] +name = "networkx" +version = "3.6.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130'", + "python_full_version == '3.11.*' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130'", + "python_full_version >= '3.12' and extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version == '3.11.*' and extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version >= '3.12' and sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version == '3.11.*' and sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version >= '3.12' and sys_platform == 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version == '3.11.*' and sys_platform == 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version >= '3.12' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version == '3.11.*' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", +] +sdist = { url = "https://files.pythonhosted.org/packages/6a/51/63fe664f3908c97be9d2e4f1158eb633317598cfa6e1fc14af5383f17512/networkx-3.6.1.tar.gz", hash = "sha256:26b7c357accc0c8cde558ad486283728b65b6a95d85ee1cd66bafab4c8168509", size = 2517025, upload-time = "2025-12-08T17:02:39.908Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl", hash = "sha256:d47fbf302e7d9cbbb9e2555a0d267983d2aa476bac30e90dfbe5669bd57f3762", size = 2068504, upload-time = "2025-12-08T17:02:38.159Z" }, +] + +[[package]] +name = "nh3" +version = "0.3.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9c/5f/1d19bdc7d27238e37f3672cdc02cb77c56a4a86d140cd4f4f23c90df6e16/nh3-0.3.5.tar.gz", hash = "sha256:45855e14ff056064fec77133bfcf7cd691838168e5e17bbef075394954dc9dc8", size = 20743, upload-time = "2026-04-25T10:44:16.066Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/63/b0/8587ac42a9627ab88e7e221601f1dfccbf4db80b2a29222ea63266dc9abc/nh3-0.3.5-cp314-cp314t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:23a312224875f72cd16bde417f49071451877e29ef646a60e50fcb69407cc18a", size = 1420126, upload-time = "2026-04-25T10:43:39.834Z" }, + { url = "https://files.pythonhosted.org/packages/c0/1b/1dbc4d0c43f12e8c1784ede17eaee6f061d4fbe5505757c65c49b2ceab95/nh3-0.3.5-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:387abd011e81959d5a35151a11350a0795c6edeb53ebfa02d2e882dc01299263", size = 793943, upload-time = "2026-04-25T10:43:41.363Z" }, + { url = "https://files.pythonhosted.org/packages/47/9f/d6758d7a14ee964bf439cc35ae4fa24a763a93399c8ef6f22bd11d532d29/nh3-0.3.5-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:48f45e3e914be93a596431aa143dedf1582557bf41a58153c296048d6e3798c9", size = 841150, upload-time = "2026-04-25T10:43:43.007Z" }, + { url = "https://files.pythonhosted.org/packages/b6/36/d5d1ae8374612c98f390e1ea7c610fa6c9716259a03bbf4d15b269f40073/nh3-0.3.5-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:0a09f51806fd51b4fedbf9ea2b61fef388f19aef0d62fe51199d41648be14588", size = 1008415, upload-time = "2026-04-25T10:43:44.324Z" }, + { url = "https://files.pythonhosted.org/packages/ba/8f/d13a9c3fd2d9c131a2a281737380e9379eb0f8c33fea24c2b923aaafbb15/nh3-0.3.5-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:c357f1d042c67f135a5e6babb2b0e3b9d9224ff4a3543240f597767b01384ffd", size = 1092706, upload-time = "2026-04-25T10:43:45.653Z" }, + { url = "https://files.pythonhosted.org/packages/bb/57/2f3add7f8680fcc896afa6a675cb2bab09982853ee8af40bad621f6b61c4/nh3-0.3.5-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:38748140bf76383ab7ce2dce0ad4cb663855d8fbc9098f7f3483673d09616a17", size = 1048346, upload-time = "2026-04-25T10:43:46.974Z" }, + { url = "https://files.pythonhosted.org/packages/c1/c3/2f9e4ffa82863074d1361bfe949bc46393d91b3411579dfbbd090b24cac5/nh3-0.3.5-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:84bdeb082544fbcb77a12c034dd77d7da0556fdc0727b787eb6214b958c15e29", size = 1029038, upload-time = "2026-04-25T10:43:48.569Z" }, + { url = "https://files.pythonhosted.org/packages/e8/10/2804deb3f3315184c9cae41702e293c87524b5a21f766b07d7fe3ffbcfbb/nh3-0.3.5-cp314-cp314t-win32.whl", hash = "sha256:c3aae321f67ae66cff2a627115f106a377d4475d10b0e13d97959a13486b9a88", size = 603263, upload-time = "2026-04-25T10:43:49.851Z" }, + { url = "https://files.pythonhosted.org/packages/eb/a2/f6685248b49f7548fc9a8c335ab3a52f68610b72e8a61576447151e4e2e6/nh3-0.3.5-cp314-cp314t-win_amd64.whl", hash = "sha256:c88605d8d468f7fc1b31e06129bc91d6c96f6c621776c9b504a0da9beac9df5f", size = 616866, upload-time = "2026-04-25T10:43:51.005Z" }, + { url = "https://files.pythonhosted.org/packages/ca/b6/d8c9018635d4acfefde6b68470daa510eed715a350cbaa2f928ba0609f81/nh3-0.3.5-cp314-cp314t-win_arm64.whl", hash = "sha256:72c5bdedec27fa33de6a5326346ea8aa3fe54f6ac294d54c4b204fb66a9f1e79", size = 602566, upload-time = "2026-04-25T10:43:52.283Z" }, + { url = "https://files.pythonhosted.org/packages/85/30/d162e99746a2fb1d98bb0ef23af3e201b156cf09f7de867c7390c8fe1c06/nh3-0.3.5-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:3bb854485c9b33e5bb143ff3e49e577073bc6bc320f0ff8fc316dd89c0d3c101", size = 1442393, upload-time = "2026-04-25T10:43:53.556Z" }, + { url = "https://files.pythonhosted.org/packages/25/8c/072120d506978ab053e1732d0efa7c86cb478fee0ee098fda0ac0d31cb34/nh3-0.3.5-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50d401ab2d8e86d59e2126e3ab2a2f45840c405842b626d9a51624b3a33b6878", size = 837722, upload-time = "2026-04-25T10:43:55.073Z" }, + { url = "https://files.pythonhosted.org/packages/52/86/d4e06e28c5ad1c4b065f89737d02631bd49f1660b6ebcf17a87ffcd201da/nh3-0.3.5-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:acfd354e61accbe4c74f8017c6e397a776916dfe47c48643cf7fd84ade826f93", size = 822872, upload-time = "2026-04-25T10:43:56.581Z" }, + { url = "https://files.pythonhosted.org/packages/0a/62/50659255213f241ec5797ae7427464c969397373e83b3659372b341ae869/nh3-0.3.5-cp38-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:52d877980d7ca01dc3baf3936bf844828bc6f332962227a684ed79c18cce14c3", size = 1100031, upload-time = "2026-04-25T10:43:58.098Z" }, + { url = "https://files.pythonhosted.org/packages/00/7a/a12ae77593b2fcf3be25df7bc1c01967d0de448bdb4b6c7ec80fe4f5a74f/nh3-0.3.5-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:207c01801d3e9bb8ec08f08689346bdd30ce15b8bf60013a925d08b5388962a4", size = 1057669, upload-time = "2026-04-25T10:43:59.328Z" }, + { url = "https://files.pythonhosted.org/packages/2d/71/5647dc04c0233192a3956fc91708822b21403a06508cacf78083c68e7bf0/nh3-0.3.5-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea232933394d1d58bf7c4bb348dc4660eae6604e1ae81cd2ba6d9ed80d390f3b", size = 914795, upload-time = "2026-04-25T10:44:00.52Z" }, + { url = "https://files.pythonhosted.org/packages/1b/0e/bf298920729f216adcb002acf7ea01b90842603d2e4e2ce9b900d9ee8fab/nh3-0.3.5-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe3a787dc76b50de6bee54ef242f26c41dfe47654428e3e94f0fae5bb6dd2cc1", size = 806976, upload-time = "2026-04-25T10:44:01.743Z" }, + { url = "https://files.pythonhosted.org/packages/85/01/26761e1dc2b848e65a62c19e5d39ad446283287cd4afddc89f364ab86bc9/nh3-0.3.5-cp38-abi3-manylinux_2_31_riscv64.whl", hash = "sha256:488928988caad25ba14b1eb5bc74e25e21f3b5e40341d956f3ce4a8bc19460dc", size = 834904, upload-time = "2026-04-25T10:44:03.454Z" }, + { url = "https://files.pythonhosted.org/packages/33/53/0766113e679540ac1edc1b82b1295aecd321eeb75d6fead70109a838b6ee/nh3-0.3.5-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2c069570b06aa848457713ad7af4a9905691291548c4466a9ad78ee95808382b", size = 857159, upload-time = "2026-04-25T10:44:05.003Z" }, + { url = "https://files.pythonhosted.org/packages/58/36/734d353dfaf292fed574b8b3092f0ef79dc6404f3879f7faaa61a4701fad/nh3-0.3.5-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:eeedc90ed8c42c327e8e10e621ccfa314fc6cce35d5929f4297ff1cdb89667c4", size = 1018600, upload-time = "2026-04-25T10:44:06.18Z" }, + { url = "https://files.pythonhosted.org/packages/6b/aa/d9c59c1b49669fcb7bababa55df82385f029ad5c2651f583c3a1141cfdd1/nh3-0.3.5-cp38-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:de8e8621853b6470fe928c684ee0d3f39ea8086cebafe4c416486488dea7b68d", size = 1103530, upload-time = "2026-04-25T10:44:07.68Z" }, + { url = "https://files.pythonhosted.org/packages/90/b0/cdd210bfb8d9d43fb02fc3c868336b9955934d8e15e66eb1d15a147b8af0/nh3-0.3.5-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:6ea58cc44d274c643b83547ca9654a0b1a817609b160601356f76a2b744c49ad", size = 1061754, upload-time = "2026-04-25T10:44:09.362Z" }, + { url = "https://files.pythonhosted.org/packages/ce/cb/7a39e72e668c8445bdd95e494b3e21cfdddc68329be8ea3522c8befb46c4/nh3-0.3.5-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e49c9b564e6bcb03ecd2f057213df9a0de15a95812ac9db9600b590db23d3ae9", size = 1040938, upload-time = "2026-04-25T10:44:10.775Z" }, + { url = "https://files.pythonhosted.org/packages/af/4c/fc2f9ed208a3801a319f59b5fea03cdc20cf3bd8af14be930d3a8de01224/nh3-0.3.5-cp38-abi3-win32.whl", hash = "sha256:559e4c73b689e9a7aa97ac9760b1bc488038d7c1a575aa4ab5a0e19ee9630c0f", size = 611445, upload-time = "2026-04-25T10:44:12.317Z" }, + { url = "https://files.pythonhosted.org/packages/db/1a/e4c9b5e2ae13e6092c9ec16d8ca30646cb01fcdea245f36c5b08fd21fbd5/nh3-0.3.5-cp38-abi3-win_amd64.whl", hash = "sha256:45e6a65dc88a300a2e3502cb9c8e6d1d6b831d6fba7470643333609c6aab1f30", size = 626502, upload-time = "2026-04-25T10:44:13.682Z" }, + { url = "https://files.pythonhosted.org/packages/80/7c/19cd0671d1ba2762fb388fc149697d20d0568ccfeef833b11280a619e526/nh3-0.3.5-cp38-abi3-win_arm64.whl", hash = "sha256:8f85285700a18e9f3fc5bff41fe573fa84f81542ef13b48a89f9fecca0474d3b", size = 611069, upload-time = "2026-04-25T10:44:14.934Z" }, +] + +[[package]] +name = "nodeenv" +version = "1.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/24/bf/d1bda4f6168e0b2e9e5958945e01910052158313224ada5ce1fb2e1113b8/nodeenv-1.10.0.tar.gz", hash = "sha256:996c191ad80897d076bdfba80a41994c2b47c68e224c542b48feba42ba00f8bb", size = 55611, upload-time = "2025-12-20T14:08:54.006Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/b2/d0896bdcdc8d28a7fc5717c305f1a861c26e18c05047949fb371034d98bd/nodeenv-1.10.0-py2.py3-none-any.whl", hash = "sha256:5bb13e3eed2923615535339b3c620e76779af4cb4c6a90deccc9e36b274d3827", size = 23438, upload-time = "2025-12-20T14:08:52.782Z" }, +] + +[[package]] +name = "numpy" +version = "2.2.6" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130'", + "python_full_version < '3.11' and extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version < '3.11' and sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version < '3.11' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", +] +sdist = { url = "https://files.pythonhosted.org/packages/76/21/7d2a95e4bba9dc13d043ee156a356c0a8f0c6309dff6b21b4d71a073b8a8/numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd", size = 20276440, upload-time = "2025-05-17T22:38:04.611Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/3e/ed6db5be21ce87955c0cbd3009f2803f59fa08df21b5df06862e2d8e2bdd/numpy-2.2.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b412caa66f72040e6d268491a59f2c43bf03eb6c96dd8f0307829feb7fa2b6fb", size = 21165245, upload-time = "2025-05-17T21:27:58.555Z" }, + { url = "https://files.pythonhosted.org/packages/22/c2/4b9221495b2a132cc9d2eb862e21d42a009f5a60e45fc44b00118c174bff/numpy-2.2.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e41fd67c52b86603a91c1a505ebaef50b3314de0213461c7a6e99c9a3beff90", size = 14360048, upload-time = "2025-05-17T21:28:21.406Z" }, + { url = "https://files.pythonhosted.org/packages/fd/77/dc2fcfc66943c6410e2bf598062f5959372735ffda175b39906d54f02349/numpy-2.2.6-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:37e990a01ae6ec7fe7fa1c26c55ecb672dd98b19c3d0e1d1f326fa13cb38d163", size = 5340542, upload-time = "2025-05-17T21:28:30.931Z" }, + { url = "https://files.pythonhosted.org/packages/7a/4f/1cb5fdc353a5f5cc7feb692db9b8ec2c3d6405453f982435efc52561df58/numpy-2.2.6-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:5a6429d4be8ca66d889b7cf70f536a397dc45ba6faeb5f8c5427935d9592e9cf", size = 6878301, upload-time = "2025-05-17T21:28:41.613Z" }, + { url = "https://files.pythonhosted.org/packages/eb/17/96a3acd228cec142fcb8723bd3cc39c2a474f7dcf0a5d16731980bcafa95/numpy-2.2.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efd28d4e9cd7d7a8d39074a4d44c63eda73401580c5c76acda2ce969e0a38e83", size = 14297320, upload-time = "2025-05-17T21:29:02.78Z" }, + { url = "https://files.pythonhosted.org/packages/b4/63/3de6a34ad7ad6646ac7d2f55ebc6ad439dbbf9c4370017c50cf403fb19b5/numpy-2.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc7b73d02efb0e18c000e9ad8b83480dfcd5dfd11065997ed4c6747470ae8915", size = 16801050, upload-time = "2025-05-17T21:29:27.675Z" }, + { url = "https://files.pythonhosted.org/packages/07/b6/89d837eddef52b3d0cec5c6ba0456c1bf1b9ef6a6672fc2b7873c3ec4e2e/numpy-2.2.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:74d4531beb257d2c3f4b261bfb0fc09e0f9ebb8842d82a7b4209415896adc680", size = 15807034, upload-time = "2025-05-17T21:29:51.102Z" }, + { url = "https://files.pythonhosted.org/packages/01/c8/dc6ae86e3c61cfec1f178e5c9f7858584049b6093f843bca541f94120920/numpy-2.2.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8fc377d995680230e83241d8a96def29f204b5782f371c532579b4f20607a289", size = 18614185, upload-time = "2025-05-17T21:30:18.703Z" }, + { url = "https://files.pythonhosted.org/packages/5b/c5/0064b1b7e7c89137b471ccec1fd2282fceaae0ab3a9550f2568782d80357/numpy-2.2.6-cp310-cp310-win32.whl", hash = "sha256:b093dd74e50a8cba3e873868d9e93a85b78e0daf2e98c6797566ad8044e8363d", size = 6527149, upload-time = "2025-05-17T21:30:29.788Z" }, + { url = "https://files.pythonhosted.org/packages/a3/dd/4b822569d6b96c39d1215dbae0582fd99954dcbcf0c1a13c61783feaca3f/numpy-2.2.6-cp310-cp310-win_amd64.whl", hash = "sha256:f0fd6321b839904e15c46e0d257fdd101dd7f530fe03fd6359c1ea63738703f3", size = 12904620, upload-time = "2025-05-17T21:30:48.994Z" }, + { url = "https://files.pythonhosted.org/packages/da/a8/4f83e2aa666a9fbf56d6118faaaf5f1974d456b1823fda0a176eff722839/numpy-2.2.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae", size = 21176963, upload-time = "2025-05-17T21:31:19.36Z" }, + { url = "https://files.pythonhosted.org/packages/b3/2b/64e1affc7972decb74c9e29e5649fac940514910960ba25cd9af4488b66c/numpy-2.2.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a", size = 14406743, upload-time = "2025-05-17T21:31:41.087Z" }, + { url = "https://files.pythonhosted.org/packages/4a/9f/0121e375000b5e50ffdd8b25bf78d8e1a5aa4cca3f185d41265198c7b834/numpy-2.2.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42", size = 5352616, upload-time = "2025-05-17T21:31:50.072Z" }, + { url = "https://files.pythonhosted.org/packages/31/0d/b48c405c91693635fbe2dcd7bc84a33a602add5f63286e024d3b6741411c/numpy-2.2.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491", size = 6889579, upload-time = "2025-05-17T21:32:01.712Z" }, + { url = "https://files.pythonhosted.org/packages/52/b8/7f0554d49b565d0171eab6e99001846882000883998e7b7d9f0d98b1f934/numpy-2.2.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b64d8d4d17135e00c8e346e0a738deb17e754230d7e0810ac5012750bbd85a5a", size = 14312005, upload-time = "2025-05-17T21:32:23.332Z" }, + { url = "https://files.pythonhosted.org/packages/b3/dd/2238b898e51bd6d389b7389ffb20d7f4c10066d80351187ec8e303a5a475/numpy-2.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba10f8411898fc418a521833e014a77d3ca01c15b0c6cdcce6a0d2897e6dbbdf", size = 16821570, upload-time = "2025-05-17T21:32:47.991Z" }, + { url = "https://files.pythonhosted.org/packages/83/6c/44d0325722cf644f191042bf47eedad61c1e6df2432ed65cbe28509d404e/numpy-2.2.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bd48227a919f1bafbdda0583705e547892342c26fb127219d60a5c36882609d1", size = 15818548, upload-time = "2025-05-17T21:33:11.728Z" }, + { url = "https://files.pythonhosted.org/packages/ae/9d/81e8216030ce66be25279098789b665d49ff19eef08bfa8cb96d4957f422/numpy-2.2.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9551a499bf125c1d4f9e250377c1ee2eddd02e01eac6644c080162c0c51778ab", size = 18620521, upload-time = "2025-05-17T21:33:39.139Z" }, + { url = "https://files.pythonhosted.org/packages/6a/fd/e19617b9530b031db51b0926eed5345ce8ddc669bb3bc0044b23e275ebe8/numpy-2.2.6-cp311-cp311-win32.whl", hash = "sha256:0678000bb9ac1475cd454c6b8c799206af8107e310843532b04d49649c717a47", size = 6525866, upload-time = "2025-05-17T21:33:50.273Z" }, + { url = "https://files.pythonhosted.org/packages/31/0a/f354fb7176b81747d870f7991dc763e157a934c717b67b58456bc63da3df/numpy-2.2.6-cp311-cp311-win_amd64.whl", hash = "sha256:e8213002e427c69c45a52bbd94163084025f533a55a59d6f9c5b820774ef3303", size = 12907455, upload-time = "2025-05-17T21:34:09.135Z" }, + { url = "https://files.pythonhosted.org/packages/82/5d/c00588b6cf18e1da539b45d3598d3557084990dcc4331960c15ee776ee41/numpy-2.2.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff", size = 20875348, upload-time = "2025-05-17T21:34:39.648Z" }, + { url = "https://files.pythonhosted.org/packages/66/ee/560deadcdde6c2f90200450d5938f63a34b37e27ebff162810f716f6a230/numpy-2.2.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c", size = 14119362, upload-time = "2025-05-17T21:35:01.241Z" }, + { url = "https://files.pythonhosted.org/packages/3c/65/4baa99f1c53b30adf0acd9a5519078871ddde8d2339dc5a7fde80d9d87da/numpy-2.2.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3", size = 5084103, upload-time = "2025-05-17T21:35:10.622Z" }, + { url = "https://files.pythonhosted.org/packages/cc/89/e5a34c071a0570cc40c9a54eb472d113eea6d002e9ae12bb3a8407fb912e/numpy-2.2.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282", size = 6625382, upload-time = "2025-05-17T21:35:21.414Z" }, + { url = "https://files.pythonhosted.org/packages/f8/35/8c80729f1ff76b3921d5c9487c7ac3de9b2a103b1cd05e905b3090513510/numpy-2.2.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2618db89be1b4e05f7a1a847a9c1c0abd63e63a1607d892dd54668dd92faf87", size = 14018462, upload-time = "2025-05-17T21:35:42.174Z" }, + { url = "https://files.pythonhosted.org/packages/8c/3d/1e1db36cfd41f895d266b103df00ca5b3cbe965184df824dec5c08c6b803/numpy-2.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd83c01228a688733f1ded5201c678f0c53ecc1006ffbc404db9f7a899ac6249", size = 16527618, upload-time = "2025-05-17T21:36:06.711Z" }, + { url = "https://files.pythonhosted.org/packages/61/c6/03ed30992602c85aa3cd95b9070a514f8b3c33e31124694438d88809ae36/numpy-2.2.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37c0ca431f82cd5fa716eca9506aefcabc247fb27ba69c5062a6d3ade8cf8f49", size = 15505511, upload-time = "2025-05-17T21:36:29.965Z" }, + { url = "https://files.pythonhosted.org/packages/b7/25/5761d832a81df431e260719ec45de696414266613c9ee268394dd5ad8236/numpy-2.2.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fe27749d33bb772c80dcd84ae7e8df2adc920ae8297400dabec45f0dedb3f6de", size = 18313783, upload-time = "2025-05-17T21:36:56.883Z" }, + { url = "https://files.pythonhosted.org/packages/57/0a/72d5a3527c5ebffcd47bde9162c39fae1f90138c961e5296491ce778e682/numpy-2.2.6-cp312-cp312-win32.whl", hash = "sha256:4eeaae00d789f66c7a25ac5f34b71a7035bb474e679f410e5e1a94deb24cf2d4", size = 6246506, upload-time = "2025-05-17T21:37:07.368Z" }, + { url = "https://files.pythonhosted.org/packages/36/fa/8c9210162ca1b88529ab76b41ba02d433fd54fecaf6feb70ef9f124683f1/numpy-2.2.6-cp312-cp312-win_amd64.whl", hash = "sha256:c1f9540be57940698ed329904db803cf7a402f3fc200bfe599334c9bd84a40b2", size = 12614190, upload-time = "2025-05-17T21:37:26.213Z" }, + { url = "https://files.pythonhosted.org/packages/f9/5c/6657823f4f594f72b5471f1db1ab12e26e890bb2e41897522d134d2a3e81/numpy-2.2.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0811bb762109d9708cca4d0b13c4f67146e3c3b7cf8d34018c722adb2d957c84", size = 20867828, upload-time = "2025-05-17T21:37:56.699Z" }, + { url = "https://files.pythonhosted.org/packages/dc/9e/14520dc3dadf3c803473bd07e9b2bd1b69bc583cb2497b47000fed2fa92f/numpy-2.2.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:287cc3162b6f01463ccd86be154f284d0893d2b3ed7292439ea97eafa8170e0b", size = 14143006, upload-time = "2025-05-17T21:38:18.291Z" }, + { url = "https://files.pythonhosted.org/packages/4f/06/7e96c57d90bebdce9918412087fc22ca9851cceaf5567a45c1f404480e9e/numpy-2.2.6-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:f1372f041402e37e5e633e586f62aa53de2eac8d98cbfb822806ce4bbefcb74d", size = 5076765, upload-time = "2025-05-17T21:38:27.319Z" }, + { url = "https://files.pythonhosted.org/packages/73/ed/63d920c23b4289fdac96ddbdd6132e9427790977d5457cd132f18e76eae0/numpy-2.2.6-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:55a4d33fa519660d69614a9fad433be87e5252f4b03850642f88993f7b2ca566", size = 6617736, upload-time = "2025-05-17T21:38:38.141Z" }, + { url = "https://files.pythonhosted.org/packages/85/c5/e19c8f99d83fd377ec8c7e0cf627a8049746da54afc24ef0a0cb73d5dfb5/numpy-2.2.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f92729c95468a2f4f15e9bb94c432a9229d0d50de67304399627a943201baa2f", size = 14010719, upload-time = "2025-05-17T21:38:58.433Z" }, + { url = "https://files.pythonhosted.org/packages/19/49/4df9123aafa7b539317bf6d342cb6d227e49f7a35b99c287a6109b13dd93/numpy-2.2.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bc23a79bfabc5d056d106f9befb8d50c31ced2fbc70eedb8155aec74a45798f", size = 16526072, upload-time = "2025-05-17T21:39:22.638Z" }, + { url = "https://files.pythonhosted.org/packages/b2/6c/04b5f47f4f32f7c2b0e7260442a8cbcf8168b0e1a41ff1495da42f42a14f/numpy-2.2.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e3143e4451880bed956e706a3220b4e5cf6172ef05fcc397f6f36a550b1dd868", size = 15503213, upload-time = "2025-05-17T21:39:45.865Z" }, + { url = "https://files.pythonhosted.org/packages/17/0a/5cd92e352c1307640d5b6fec1b2ffb06cd0dabe7d7b8227f97933d378422/numpy-2.2.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b4f13750ce79751586ae2eb824ba7e1e8dba64784086c98cdbbcc6a42112ce0d", size = 18316632, upload-time = "2025-05-17T21:40:13.331Z" }, + { url = "https://files.pythonhosted.org/packages/f0/3b/5cba2b1d88760ef86596ad0f3d484b1cbff7c115ae2429678465057c5155/numpy-2.2.6-cp313-cp313-win32.whl", hash = "sha256:5beb72339d9d4fa36522fc63802f469b13cdbe4fdab4a288f0c441b74272ebfd", size = 6244532, upload-time = "2025-05-17T21:43:46.099Z" }, + { url = "https://files.pythonhosted.org/packages/cb/3b/d58c12eafcb298d4e6d0d40216866ab15f59e55d148a5658bb3132311fcf/numpy-2.2.6-cp313-cp313-win_amd64.whl", hash = "sha256:b0544343a702fa80c95ad5d3d608ea3599dd54d4632df855e4c8d24eb6ecfa1c", size = 12610885, upload-time = "2025-05-17T21:44:05.145Z" }, + { url = "https://files.pythonhosted.org/packages/6b/9e/4bf918b818e516322db999ac25d00c75788ddfd2d2ade4fa66f1f38097e1/numpy-2.2.6-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0bca768cd85ae743b2affdc762d617eddf3bcf8724435498a1e80132d04879e6", size = 20963467, upload-time = "2025-05-17T21:40:44Z" }, + { url = "https://files.pythonhosted.org/packages/61/66/d2de6b291507517ff2e438e13ff7b1e2cdbdb7cb40b3ed475377aece69f9/numpy-2.2.6-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:fc0c5673685c508a142ca65209b4e79ed6740a4ed6b2267dbba90f34b0b3cfda", size = 14225144, upload-time = "2025-05-17T21:41:05.695Z" }, + { url = "https://files.pythonhosted.org/packages/e4/25/480387655407ead912e28ba3a820bc69af9adf13bcbe40b299d454ec011f/numpy-2.2.6-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:5bd4fc3ac8926b3819797a7c0e2631eb889b4118a9898c84f585a54d475b7e40", size = 5200217, upload-time = "2025-05-17T21:41:15.903Z" }, + { url = "https://files.pythonhosted.org/packages/aa/4a/6e313b5108f53dcbf3aca0c0f3e9c92f4c10ce57a0a721851f9785872895/numpy-2.2.6-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:fee4236c876c4e8369388054d02d0e9bb84821feb1a64dd59e137e6511a551f8", size = 6712014, upload-time = "2025-05-17T21:41:27.321Z" }, + { url = "https://files.pythonhosted.org/packages/b7/30/172c2d5c4be71fdf476e9de553443cf8e25feddbe185e0bd88b096915bcc/numpy-2.2.6-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1dda9c7e08dc141e0247a5b8f49cf05984955246a327d4c48bda16821947b2f", size = 14077935, upload-time = "2025-05-17T21:41:49.738Z" }, + { url = "https://files.pythonhosted.org/packages/12/fb/9e743f8d4e4d3c710902cf87af3512082ae3d43b945d5d16563f26ec251d/numpy-2.2.6-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f447e6acb680fd307f40d3da4852208af94afdfab89cf850986c3ca00562f4fa", size = 16600122, upload-time = "2025-05-17T21:42:14.046Z" }, + { url = "https://files.pythonhosted.org/packages/12/75/ee20da0e58d3a66f204f38916757e01e33a9737d0b22373b3eb5a27358f9/numpy-2.2.6-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:389d771b1623ec92636b0786bc4ae56abafad4a4c513d36a55dce14bd9ce8571", size = 15586143, upload-time = "2025-05-17T21:42:37.464Z" }, + { url = "https://files.pythonhosted.org/packages/76/95/bef5b37f29fc5e739947e9ce5179ad402875633308504a52d188302319c8/numpy-2.2.6-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8e9ace4a37db23421249ed236fdcdd457d671e25146786dfc96835cd951aa7c1", size = 18385260, upload-time = "2025-05-17T21:43:05.189Z" }, + { url = "https://files.pythonhosted.org/packages/09/04/f2f83279d287407cf36a7a8053a5abe7be3622a4363337338f2585e4afda/numpy-2.2.6-cp313-cp313t-win32.whl", hash = "sha256:038613e9fb8c72b0a41f025a7e4c3f0b7a1b5d768ece4796b674c8f3fe13efff", size = 6377225, upload-time = "2025-05-17T21:43:16.254Z" }, + { url = "https://files.pythonhosted.org/packages/67/0e/35082d13c09c02c011cf21570543d202ad929d961c02a147493cb0c2bdf5/numpy-2.2.6-cp313-cp313t-win_amd64.whl", hash = "sha256:6031dd6dfecc0cf9f668681a37648373bddd6421fff6c66ec1624eed0180ee06", size = 12771374, upload-time = "2025-05-17T21:43:35.479Z" }, + { url = "https://files.pythonhosted.org/packages/9e/3b/d94a75f4dbf1ef5d321523ecac21ef23a3cd2ac8b78ae2aac40873590229/numpy-2.2.6-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0b605b275d7bd0c640cad4e5d30fa701a8d59302e127e5f79138ad62762c3e3d", size = 21040391, upload-time = "2025-05-17T21:44:35.948Z" }, + { url = "https://files.pythonhosted.org/packages/17/f4/09b2fa1b58f0fb4f7c7963a1649c64c4d315752240377ed74d9cd878f7b5/numpy-2.2.6-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:7befc596a7dc9da8a337f79802ee8adb30a552a94f792b9c9d18c840055907db", size = 6786754, upload-time = "2025-05-17T21:44:47.446Z" }, + { url = "https://files.pythonhosted.org/packages/af/30/feba75f143bdc868a1cc3f44ccfa6c4b9ec522b36458e738cd00f67b573f/numpy-2.2.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce47521a4754c8f4593837384bd3424880629f718d87c5d44f8ed763edd63543", size = 16643476, upload-time = "2025-05-17T21:45:11.871Z" }, + { url = "https://files.pythonhosted.org/packages/37/48/ac2a9584402fb6c0cd5b5d1a91dcf176b15760130dd386bbafdbfe3640bf/numpy-2.2.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d042d24c90c41b54fd506da306759e06e568864df8ec17ccc17e9e884634fd00", size = 12812666, upload-time = "2025-05-17T21:45:31.426Z" }, +] + +[[package]] +name = "numpy" +version = "2.4.6" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130'", + "python_full_version == '3.11.*' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130'", + "python_full_version >= '3.12' and extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version == '3.11.*' and extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version >= '3.12' and sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version == '3.11.*' and sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version >= '3.12' and sys_platform == 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version == '3.11.*' and sys_platform == 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version >= '3.12' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version == '3.11.*' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", +] +sdist = { url = "https://files.pythonhosted.org/packages/d0/ad/fed0499ce6a338d2a03ebae59cd15093910c8875328855781952abf6c2fe/numpy-2.4.6.tar.gz", hash = "sha256:f3a3570c4a2a16746ac2c31a7c7c7b0c186b95ce902e33db6f28094ed7387dda", size = 20735807, upload-time = "2026-05-18T23:37:14.07Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/49/ec46835a70be8fa6446c495126ac84fdb28cb2558e1620ffb87a10c8b64c/numpy-2.4.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0280e0356c0829a18d9de1cb7eee50ec22ca639878d7240307ca0943d73cd2c4", size = 16969194, upload-time = "2026-05-18T23:33:13.503Z" }, + { url = "https://files.pythonhosted.org/packages/0e/0d/f5957185c0ee2f3e12f78715aa9e3b353fd83633316c8532b38faa37e3f6/numpy-2.4.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:110f8b71aacb688ec69062bb7f6938a0f8acb01b7c1c4beb453c65b6d234584d", size = 14964111, upload-time = "2026-05-18T23:33:17.795Z" }, + { url = "https://files.pythonhosted.org/packages/ad/40/40a40ee0ddf7ceb782c49af278894b686e586d65d8c1889c8b5da01a3d7d/numpy-2.4.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:4cfe66903cc32a9921a6733d96b19bb6abf310397581bbad89c228f5abaf0ee8", size = 5469159, upload-time = "2026-05-18T23:33:20.654Z" }, + { url = "https://files.pythonhosted.org/packages/63/13/f9a8046535cb21deae82f8d03de9617e08882d274fad2539630761888228/numpy-2.4.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:8155154c7c691289fe18f510b5d4657c68c67989f293f0535a91360392ff6538", size = 6798936, upload-time = "2026-05-18T23:33:22.987Z" }, + { url = "https://files.pythonhosted.org/packages/33/a8/6fa8c1a345a8c85dbb21932c447bee07c30a2c2a3f31e369c0a84b300147/numpy-2.4.6-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0ab0a9c4ffb1a6d95ef519fe4247dba8eb6b18ad93999f76b7f657039acabd47", size = 15966692, upload-time = "2026-05-18T23:33:26.62Z" }, + { url = "https://files.pythonhosted.org/packages/02/03/74fe2a4cb3817d94d86402f2506554130a2f01414e299b5a843e5a8a957f/numpy-2.4.6-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:89cd468399cfd2504718f0ba50e410dca55a170b61a02ad92bb18c8a65186e93", size = 16918164, upload-time = "2026-05-18T23:33:29.955Z" }, + { url = "https://files.pythonhosted.org/packages/c5/80/3615be3313f7e7696609bc194b9f0101da809df79e859bdb84e0cd043f46/numpy-2.4.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c2d37ab77531417474168eb79d6d80b14f821a966818505d03013d0833edb7a8", size = 17322877, upload-time = "2026-05-18T23:33:34.724Z" }, + { url = "https://files.pythonhosted.org/packages/ca/ac/a691e0fe2675e370d0e08ff905adc49a1c8830e8cae03efe4477e92cd55d/numpy-2.4.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f407cb6b8e9d6d8c626bc73c945db1706035af8fd632295547bf1c9e46d092d6", size = 18651487, upload-time = "2026-05-18T23:33:38.217Z" }, + { url = "https://files.pythonhosted.org/packages/15/a7/9bc1cd626d7bf6869bfedf27b91b6ab5dd607758bf8e959d6fa80c6a59cb/numpy-2.4.6-cp311-cp311-win32.whl", hash = "sha256:ddea102b48f9e339f3948bf22040944184627a30fdf7f858667673b9c5f033c8", size = 6233945, upload-time = "2026-05-18T23:33:41.331Z" }, + { url = "https://files.pythonhosted.org/packages/c5/31/7fc6239c12bce7e931463251cca4426c465e1876ba3cc785402ef4dd8f4e/numpy-2.4.6-cp311-cp311-win_amd64.whl", hash = "sha256:1e254a00cdf42b1e4d5b3d68d33af63268d41340d8885df2ab6470f2e1500147", size = 12608406, upload-time = "2026-05-18T23:33:44.131Z" }, + { url = "https://files.pythonhosted.org/packages/27/83/140f85a466595a16382996a1bf06b2b54bcd597488921b0c9daaeeda72af/numpy-2.4.6-cp311-cp311-win_arm64.whl", hash = "sha256:ed9749eef4cbd126da3dc1d6bcb3a57f5eb7ac6a6484146bdbf743f552dfc577", size = 10479528, upload-time = "2026-05-18T23:33:50.725Z" }, + { url = "https://files.pythonhosted.org/packages/95/2a/3d7b5ac8aac24feaf9ad7ed58f45b0bbc06d37e4338ae84c9f2298b570f9/numpy-2.4.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:001fbb8e08d942dd57599e781f2472269ee7f2755fae407b4f67b2f0b17da3f1", size = 16689119, upload-time = "2026-05-18T23:33:54.065Z" }, + { url = "https://files.pythonhosted.org/packages/ea/12/92c4c131527599e8288d6918e888d88726f84d805d784b771f32408aeaef/numpy-2.4.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ebfb099f8dcf083deef3ac1ca4c1503f387cf76296fcb3816b66f5ecb5f54fdb", size = 14699246, upload-time = "2026-05-18T23:33:57.621Z" }, + { url = "https://files.pythonhosted.org/packages/ad/fe/c0a6b7b2ca128a8fb228575147073b660656734b8ebe4d76c8fd748dcc79/numpy-2.4.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:3213d622a0283a39a93d188f3cf72b26862df52fbb4ca3697f51705016523d41", size = 5204410, upload-time = "2026-05-18T23:34:00.302Z" }, + { url = "https://files.pythonhosted.org/packages/f3/d4/9770d14ba719432bb90a421bfd443872ed0f70f7264b64bec12ea363d5fd/numpy-2.4.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:357cc07a6d7b0b182ff02249616a03742827ebb1277546b5c7cd7f7620a45698", size = 6551240, upload-time = "2026-05-18T23:34:02.852Z" }, + { url = "https://files.pythonhosted.org/packages/c9/c6/50a46a6205feba2343f1d6d17438107c5dc491ed1c736e6ea68689fd906b/numpy-2.4.6-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f9fb9157b4ce2971008323afe46053787b526ef624fea915b261468a8421a0f", size = 15671012, upload-time = "2026-05-18T23:34:05.485Z" }, + { url = "https://files.pythonhosted.org/packages/99/60/14115e6364fa676c5397c2ad3004e527e9aa487abf5d0706ec81bbd08529/numpy-2.4.6-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:90f9849678c75fe7afa2d348ac842c168b0a4d3d61919687216dfc547976d853", size = 16645538, upload-time = "2026-05-18T23:34:09.265Z" }, + { url = "https://files.pythonhosted.org/packages/ae/c5/693cbe59e57db94d2231fa519ca3978dc9e19da5a8f088588f5c6e947ff2/numpy-2.4.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c1a2af6c6ef86344a6b0db6b97834208bf598db514f2b155042439b62605601a", size = 17020706, upload-time = "2026-05-18T23:34:13.053Z" }, + { url = "https://files.pythonhosted.org/packages/ef/fc/85b7c4eff9b4966ade25c2273cf7e7012e92366c032058653934b37de044/numpy-2.4.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e5805d5a22fd19c8ccff10a9561f9df94436b0545619ea579db2d3c35294bce2", size = 18368541, upload-time = "2026-05-18T23:34:17.024Z" }, + { url = "https://files.pythonhosted.org/packages/f6/81/e1b27545deedce7f4a0b348618c6b62d74e36a4dc9ccd42f3eb2f85eee32/numpy-2.4.6-cp312-cp312-win32.whl", hash = "sha256:e3eeb0aabd6bd5ce64faae67e9935203a6991b4bc2a485a767fbafb2c5125f45", size = 5962825, upload-time = "2026-05-18T23:34:20.3Z" }, + { url = "https://files.pythonhosted.org/packages/ab/ca/feab00bd44aa5fe1ad2c18f08b4d3bb92e26484b0b1d1443897809ed528c/numpy-2.4.6-cp312-cp312-win_amd64.whl", hash = "sha256:d8e8286dd7cea7895157318d1b91cdacac64c479f3cbc8dce548331728484751", size = 12321687, upload-time = "2026-05-18T23:34:23.095Z" }, + { url = "https://files.pythonhosted.org/packages/63/cf/5a6d34850a39d1093558564f77ee8e8e0bee5061151b8f05a55711001ec7/numpy-2.4.6-cp312-cp312-win_arm64.whl", hash = "sha256:4081eb135ac24158bd51cdfbef16f1c64df7063b1143f24731387137c092bec8", size = 10221482, upload-time = "2026-05-18T23:34:25.876Z" }, + { url = "https://files.pythonhosted.org/packages/fb/82/bdab26d7438c6791ca31b7c024ca37c1eab8b726ba236129005cd4a06e45/numpy-2.4.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:511dbaf848decaaaf4b4ca48032619fb3138710c4bf7da7617765edad1ef96b0", size = 16684648, upload-time = "2026-05-18T23:34:29.41Z" }, + { url = "https://files.pythonhosted.org/packages/1b/30/a80189bcc7f5e4258b3fbc3968d909d1756f54d023299ecc39ad6fdb9ef8/numpy-2.4.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bf162abab1c1a736333192707cef898e735a5ca00f38f27eeedf44b39d9e85eb", size = 14693902, upload-time = "2026-05-18T23:34:33.013Z" }, + { url = "https://files.pythonhosted.org/packages/97/12/70b5d0d7c15e1ebb8a6a84a8caa1d19e181d84fb58bb6d70aca29099dec1/numpy-2.4.6-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:043191bfa8eab18c776647b62723ac9dddece59743b13f49b2016094129c2b3f", size = 5198992, upload-time = "2026-05-18T23:34:36.132Z" }, + { url = "https://files.pythonhosted.org/packages/ba/8c/ebd2a8f8a83541f8d38cc5667e8c2b69cecfd30da6e45693e8158857d44b/numpy-2.4.6-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:6180d8b35af935aed8ece3a85e0a43f87393ae0ac87c8d2c8bd2c993f7270ef3", size = 6546944, upload-time = "2026-05-18T23:34:38.484Z" }, + { url = "https://files.pythonhosted.org/packages/bb/c5/7b863a97a91671a0338f4253bd3b5a3d3852f0692dae91711c9f4a10e787/numpy-2.4.6-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:72fbe16c6fac95aedf5937fa873445cec2110be35d8a4e9433d7501fd98dae6b", size = 15669392, upload-time = "2026-05-18T23:34:41.257Z" }, + { url = "https://files.pythonhosted.org/packages/a5/9d/3584b9984ca4c047aea75214ce1a4c4c73d849bd71b604264b7f5653f8a8/numpy-2.4.6-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a7830bab239b79cda9c08c2da014761cafb48da6150e1da17ac06283f43b6089", size = 16633220, upload-time = "2026-05-18T23:34:45.075Z" }, + { url = "https://files.pythonhosted.org/packages/05/ae/7c67fba23bd98caec7c99261f3a16072ade14813486b0282cb29846de832/numpy-2.4.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ef4aea96ce4d3b074422cb4f2f64e216bf9e213004bb58ecfdf50ea02ea8eb9a", size = 17020800, upload-time = "2026-05-18T23:34:49.065Z" }, + { url = "https://files.pythonhosted.org/packages/d9/5d/3b6725cb31d983c5e66916f5d36f6d7e5521129e4c4404d64f918292a5b6/numpy-2.4.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:dfa20cc6ca228e6b155b11da03825975ce66aea520985dbbddf0f2a5a495c605", size = 18357600, upload-time = "2026-05-18T23:34:52.709Z" }, + { url = "https://files.pythonhosted.org/packages/f7/da/2ccc6c2fe8898dee01d90c75c5f5f914a23daf99e3e0f59516a08760c8b5/numpy-2.4.6-cp313-cp313-win32.whl", hash = "sha256:56b39e5e0622a09a25bf5baf62f4bcf0cb8a41ae6e2819cf49bbc5a74c083f91", size = 5961134, upload-time = "2026-05-18T23:34:55.618Z" }, + { url = "https://files.pythonhosted.org/packages/b5/cd/9cc4dc876fb065d5c220aae4d5e14826b2715331bb7618ce1fb07a679d99/numpy-2.4.6-cp313-cp313-win_amd64.whl", hash = "sha256:c4fc99836233ea196540b17ab0983aff60ed07941751930f5f4d05bc3b3b7359", size = 12318598, upload-time = "2026-05-18T23:34:58.928Z" }, + { url = "https://files.pythonhosted.org/packages/39/1e/c0bcba1f8694116485fe28fd1be698c278fcda4141c5b0e53a2aed8b12a8/numpy-2.4.6-cp313-cp313-win_arm64.whl", hash = "sha256:a7c711e21628b52034bb5ab8d1bce291f752fcc5e92accc615778acee1ff4778", size = 10222272, upload-time = "2026-05-18T23:35:02.167Z" }, + { url = "https://files.pythonhosted.org/packages/63/6d/cc5619247c8f4204e507f5883528372e4ac4bb189e579fb859a12e480b1f/numpy-2.4.6-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:112b06a867b235ef466ed3508ddf0238050df9c727cafb5301ac385b899189a1", size = 14821197, upload-time = "2026-05-18T23:35:05.468Z" }, + { url = "https://files.pythonhosted.org/packages/00/58/f1c39161c87d9e9bed660f1ed4bafc0e403d5ec9650b6dd77aead07d489b/numpy-2.4.6-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:eaf7fa2de5c0be8ae6ff8e9bea2ccd725e980541244521d8d4b5f3354a27babe", size = 5326287, upload-time = "2026-05-18T23:35:08.693Z" }, + { url = "https://files.pythonhosted.org/packages/af/57/3917ab0fd97f271a8694513581b8a36c655f111c446852c302f04ccdb6fc/numpy-2.4.6-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:7265a2f3d436e54ef9f2b52b5c937e6be778781bd97a590319d7348f1c1ca997", size = 6646763, upload-time = "2026-05-18T23:35:11.459Z" }, + { url = "https://files.pythonhosted.org/packages/eb/0f/037e64c494b67581ae18193d770adef354c41f3f2c8ebf865602d949bf8f/numpy-2.4.6-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f74a575920ab21fe304421a3fc28793d82e299cae9eccb37084e9fc7f3617c20", size = 15728070, upload-time = "2026-05-18T23:35:14.79Z" }, + { url = "https://files.pythonhosted.org/packages/21/a6/5d2bae9c9542eb4df16dc9c46dc79c186e9bad53805dfa5399a6023c6db0/numpy-2.4.6-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ede83e07a75dd06bc501566c1eca2afc0d61677c1472ac9ad93fdee6e638a48d", size = 16681752, upload-time = "2026-05-18T23:35:18.836Z" }, + { url = "https://files.pythonhosted.org/packages/92/14/23d1dfb410ae362cd59ce53e936b1513d545eb40db3949ced632e19a459e/numpy-2.4.6-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:68bb27509ac1b9a3443094260f6326150663b06abe40b73a2f81160623da5b67", size = 17086024, upload-time = "2026-05-18T23:35:22.52Z" }, + { url = "https://files.pythonhosted.org/packages/4b/6e/23595a2c642cdf3bc567877064bdd7f91c8b0038a4453cf2daf7248eafe9/numpy-2.4.6-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:a0df0043bdb289bde1f62da130d20df23d58b45429f752bc7a8fc5325a225ecd", size = 18403398, upload-time = "2026-05-18T23:35:26.398Z" }, + { url = "https://files.pythonhosted.org/packages/8a/90/0ac3bc947217e66dec77e7cbc6a1979d1af70b6461b82f620d3bccd5e4c8/numpy-2.4.6-cp313-cp313t-win32.whl", hash = "sha256:29a287e0cf63ff528da061de6b9f64a4618da591ca1046aafc54062e40ca7eab", size = 6084971, upload-time = "2026-05-18T23:35:29.387Z" }, + { url = "https://files.pythonhosted.org/packages/77/71/5673e351671a1d2bd6063b91b44f70c0affea7d1516fa7a6572941ba4aa1/numpy-2.4.6-cp313-cp313t-win_amd64.whl", hash = "sha256:25c692919ac5a01f170a3bfcd62d745b24fd095c353d50812637d6fcab442e75", size = 12458532, upload-time = "2026-05-18T23:35:32.175Z" }, + { url = "https://files.pythonhosted.org/packages/3f/88/19d3503c5046e688f049274b27a3ef3d771152fa80d3ba3d01a3dff61abe/numpy-2.4.6-cp313-cp313t-win_arm64.whl", hash = "sha256:1e978ec1e8bd0e0e4de6bb75de9d30cbb74db6b6a2bb727618613703ca0167dd", size = 10291881, upload-time = "2026-05-18T23:35:35.465Z" }, + { url = "https://files.pythonhosted.org/packages/f8/91/3ab2044d05fd16d343c5ac2e69b127f1b2854040dd20b193257c78028bd3/numpy-2.4.6-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:06ca2f61ec4385a07a6977c55ba998a4466c123642b4a32694d3128fce18c079", size = 16683458, upload-time = "2026-05-18T23:35:38.353Z" }, + { url = "https://files.pythonhosted.org/packages/8e/62/764ce66fa4147ae6d73071a3abf804ffe606f174618697c571acdf26a7c9/numpy-2.4.6-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:38efbc8de75c7a0fc1ac190162d892787f3f47b57cc291231aafee36b80982b7", size = 14704559, upload-time = "2026-05-18T23:35:42.14Z" }, + { url = "https://files.pythonhosted.org/packages/60/61/23f27c172f022e04025b7dc2367f4d63c1a398120607ec896228649a6f48/numpy-2.4.6-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:d581b735e177fdcdce6fed8e7e8880a3fb6ee4e3653a3ac6af01c6f4c03effc5", size = 5209716, upload-time = "2026-05-18T23:35:45.377Z" }, + { url = "https://files.pythonhosted.org/packages/03/71/21cf70dc6ea3e3acb95fc53a265b2fc248b981f0194ceb5b475271b8809d/numpy-2.4.6-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:0a041d3d761dc3c35cc56ce0351506a02bcbc25f7b169f652435141a17db9096", size = 6543947, upload-time = "2026-05-18T23:35:47.926Z" }, + { url = "https://files.pythonhosted.org/packages/d5/91/64288395ee1799bd2e0b04a305dce9666da90c961e1f3fe982a05ee1c036/numpy-2.4.6-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:40fdc1ae7125e518ea98e53e69a4ebc27e1fd50510c47b7ea130cf21e5e1d42b", size = 15685197, upload-time = "2026-05-18T23:35:50.863Z" }, + { url = "https://files.pythonhosted.org/packages/f3/eb/ebffaa97dc55502df69584a8f0dcf07f69a3e0b3e2323670a2722db9aa39/numpy-2.4.6-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a2c306dea656c12c68f51f4cea133cbe78ca7435eb28c735eac1d3ebe73be6e8", size = 16638245, upload-time = "2026-05-18T23:35:54.752Z" }, + { url = "https://files.pythonhosted.org/packages/b8/0b/54f9da33128d7e350fab89c7455902eeae70349ee52bddb448dc4a576f45/numpy-2.4.6-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:33111801a01c12a8a1e3721f0a9232f8cfc8ae2c6b7098167e6f623c6073f402", size = 17036587, upload-time = "2026-05-18T23:35:58.355Z" }, + { url = "https://files.pythonhosted.org/packages/b6/f0/fdebc1052db1cc37c64beb22072d67cd6d1c71adca1299f53dec2b5e20d3/numpy-2.4.6-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ae506e6902902557576a26ff33eda8695e7ecb3cb36c3b573a0765dee114ebdb", size = 18363226, upload-time = "2026-05-18T23:36:02.845Z" }, + { url = "https://files.pythonhosted.org/packages/aa/b4/298628d98c72b57e57f7165ae6a481a1deaf6f3c28262a6e4c739c275930/numpy-2.4.6-cp314-cp314-win32.whl", hash = "sha256:aaf159caa35993cb1f56fb9b8e4610d35758e7ca005412eb1daa856a78c9c4b1", size = 6010196, upload-time = "2026-05-18T23:36:05.92Z" }, + { url = "https://files.pythonhosted.org/packages/df/ac/46de6dda46478f7942f839e094970be2d4a861e005c4b3bf07c92e291a09/numpy-2.4.6-cp314-cp314-win_amd64.whl", hash = "sha256:b507f5c4c1d508876d1819b6bf9a49d365b96320b5d4993426b33a23ca4b8261", size = 12450334, upload-time = "2026-05-18T23:36:09.107Z" }, + { url = "https://files.pythonhosted.org/packages/78/92/b8b798ac784102c0da830d2257d59358e3d3d90d1e2b3f2575dad976c5cf/numpy-2.4.6-cp314-cp314-win_arm64.whl", hash = "sha256:6f41ae150c4e32db4f3310cdaf64b1593a03dbabe29eec77fc9b50fe64061df6", size = 10495678, upload-time = "2026-05-18T23:36:12.766Z" }, + { url = "https://files.pythonhosted.org/packages/30/34/ec28d1aa8115971537c01469ab2011ee96827930f0a124de1000cc2a7ed7/numpy-2.4.6-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ece3d2cfe132e7d51f44a832b303895e6f2d499c5e74dfbdb06ee246147a304a", size = 14823672, upload-time = "2026-05-18T23:36:16.473Z" }, + { url = "https://files.pythonhosted.org/packages/16/bd/f6d1fede4e54e8042a7ff97bb495510f3c220f94bcd9e8b228e87c92cc0d/numpy-2.4.6-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:e3e5193ef5a3dc73bceee50f7fdc2c90dbb76c42df8d8fae3d1067a583df579e", size = 5328731, upload-time = "2026-05-18T23:36:19.767Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f0/e105b9e2fd728a9910103884decd6951d9dd73896b914a98d9a231de02ee/numpy-2.4.6-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:17f9ade344e7d9b464a084d69bcf18fc691cb1db67c62ed80820bf4926d78f0e", size = 6649805, upload-time = "2026-05-18T23:36:22.266Z" }, + { url = "https://files.pythonhosted.org/packages/82/dd/1206a7ca6ab15e3f02069707ca96222e202af681bb73756da7527f3cb837/numpy-2.4.6-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9cd5ffd25db4e7ba6a375693b3fc0fc1791ec636c17db3720da19bde7180ec43", size = 15730496, upload-time = "2026-05-18T23:36:25.713Z" }, + { url = "https://files.pythonhosted.org/packages/51/e7/38d3ea825dcab85a591734decb2f6c67caa7c8367d374df1a1c3842f9b07/numpy-2.4.6-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7d92c3819208a60205a12a245c91ad70cb0a85336659b19b834205573ac8456e", size = 16679616, upload-time = "2026-05-18T23:36:29.652Z" }, + { url = "https://files.pythonhosted.org/packages/93/b7/caabfdf53edf663e0b4eb74d7d405d83baef09eb5e83bcd32d601d72b93e/numpy-2.4.6-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e85b752a1e912b70eaad4fafbd4d1238007ab221de2009b9a2f5ae7461239895", size = 17085145, upload-time = "2026-05-18T23:36:33.449Z" }, + { url = "https://files.pythonhosted.org/packages/f9/45/68d7c33a6bcf3e5aa3bdbd57a367e6f615286dfd6482f97e8ffeb734306e/numpy-2.4.6-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:29cb7f67d10b479ff07c17d33e39f78c07f71c40ef30d63c153d340e96cd3fb4", size = 18403813, upload-time = "2026-05-18T23:36:37.369Z" }, + { url = "https://files.pythonhosted.org/packages/9c/50/0753655aa844c99cd9e018aacf76f130f1bd81d881bb74bc0aef5d73a8ba/numpy-2.4.6-cp314-cp314t-win32.whl", hash = "sha256:260a5d70215b61ab4fadf5c7baacd64821842975eea312125ed3c39a6391b063", size = 6156982, upload-time = "2026-05-18T23:36:40.817Z" }, + { url = "https://files.pythonhosted.org/packages/b2/d4/7c67becf668f973cb490cec3e98dfd799d866f9c989a54d355672cfa0db6/numpy-2.4.6-cp314-cp314t-win_amd64.whl", hash = "sha256:81a1cca95ed5bb92aa8b10dd2cdc9a0d3853a50fad926c28b5d7e8ea54389627", size = 12638908, upload-time = "2026-05-18T23:36:43.996Z" }, + { url = "https://files.pythonhosted.org/packages/43/bb/e1c71a4295b1b1d1393d50dbb4f2a36283c6859d9d3892e84f00ec5a91d5/numpy-2.4.6-cp314-cp314t-win_arm64.whl", hash = "sha256:0c9136e14ed34a9e343a31c533d78a9813a69a3148332bce5e9821cb2f996e66", size = 10565867, upload-time = "2026-05-18T23:36:47.114Z" }, + { url = "https://files.pythonhosted.org/packages/de/12/b422cc84439adc0d00de605bf4a308890ae5c26f2c71fbd73e5d08fbb0dd/numpy-2.4.6-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:55cced7c52e981362f708ad635198e97a752dfba412cc03c23bbf3bd8d5cd662", size = 16847511, upload-time = "2026-05-18T23:36:50.673Z" }, + { url = "https://files.pythonhosted.org/packages/44/53/f481bef68011740f8849418d82db07230e825013f31f4eef5ba5b805316a/numpy-2.4.6-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d6da64deb6b8ed903e7560180a92f2d804ee1ba5eeb849ac2748b8c1aba1f6d7", size = 14889064, upload-time = "2026-05-18T23:36:53.879Z" }, + { url = "https://files.pythonhosted.org/packages/7f/57/42ed575c10ced8af951d426bc4e1f8aff16fd851db33f067036215a7f860/numpy-2.4.6-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:68a5124b13fa6cc2086764a20005d30bc0548146f7f5322f02fce212ca14317f", size = 5394157, upload-time = "2026-05-18T23:36:57.194Z" }, + { url = "https://files.pythonhosted.org/packages/6a/ef/f66cc724fcc36c1e364c67f51ae9146090b8b584f27d58b97fdae3edd737/numpy-2.4.6-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:948424b06129ce883307e8cff868c31396d8dc7630a59c61d70d98dbe70f222c", size = 6708728, upload-time = "2026-05-18T23:36:59.575Z" }, + { url = "https://files.pythonhosted.org/packages/1a/9c/c531f2293b91265d8b48e9b329f54fdd7ffae73cb4134ea10cca4237e9cc/numpy-2.4.6-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5dbbdb29840ca3d91ee0fece42fc29278886d908280bfec0a5846c6f901a3eb0", size = 15798374, upload-time = "2026-05-18T23:37:02.674Z" }, + { url = "https://files.pythonhosted.org/packages/1a/b0/413077f6b1153ed3cba361401c6783bbad6114804a000cc22eb71c13e190/numpy-2.4.6-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8ad03c0965fb3c692200e74d458ca28c1dbb4ce96f9a479a8aa041ad5fabca02", size = 16747286, upload-time = "2026-05-18T23:37:06.327Z" }, + { url = "https://files.pythonhosted.org/packages/15/ce/e5ec180bc41812edcd8daeb8639d205622c0e8c02259d8ab25a0201b3c2a/numpy-2.4.6-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:2803abfebfc990042cd494d8ce2d5f82e9d847af6d35ec486923aa19dbad5e73", size = 12504263, upload-time = "2026-05-18T23:37:09.715Z" }, +] + +[[package]] +name = "nvidia-cublas" +version = "13.1.0.3" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/a5/fce49e2ae977e0ccc084e5adafceb4f0ac0c8333cb6863501618a7277f67/nvidia_cublas-13.1.0.3-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:c86fc7f7ae36d7528288c5d88098edcb7b02c633d262e7ddbb86b0ad91be5df2", size = 542851226, upload-time = "2025-10-09T08:59:04.818Z" }, + { url = "https://files.pythonhosted.org/packages/e7/44/423ac00af4dd95a5aeb27207e2c0d9b7118702149bf4704c3ddb55bb7429/nvidia_cublas-13.1.0.3-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:ee8722c1f0145ab246bccb9e452153b5e0515fd094c3678df50b2a0888b8b171", size = 423133236, upload-time = "2025-10-09T08:59:32.536Z" }, + { url = "https://files.pythonhosted.org/packages/10/f5/f50bc3f5c2bb57ab8f5b4d78bc1146b57810d42cb8fcb28cbe2e14050376/nvidia_cublas-13.1.0.3-py3-none-win_amd64.whl", hash = "sha256:2a3b94a37def342471c59fad7856caee4926809a72dd5270155d6a31b5b277be", size = 404355960, upload-time = "2025-10-09T09:07:00.987Z" }, +] + +[[package]] +name = "nvidia-cublas-cu12" +version = "12.8.4.1" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/29/99/db44d685f0e257ff0e213ade1964fc459b4a690a73293220e98feb3307cf/nvidia_cublas_cu12-12.8.4.1-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:b86f6dd8935884615a0683b663891d43781b819ac4f2ba2b0c9604676af346d0", size = 590537124, upload-time = "2025-03-07T01:43:53.556Z" }, + { url = "https://files.pythonhosted.org/packages/dc/61/e24b560ab2e2eaeb3c839129175fb330dfcfc29e5203196e5541a4c44682/nvidia_cublas_cu12-12.8.4.1-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:8ac4e771d5a348c551b2a426eda6193c19aa630236b418086020df5ba9667142", size = 594346921, upload-time = "2025-03-07T01:44:31.254Z" }, + { url = "https://files.pythonhosted.org/packages/70/61/7d7b3c70186fb651d0fbd35b01dbfc8e755f69fd58f817f3d0f642df20c3/nvidia_cublas_cu12-12.8.4.1-py3-none-win_amd64.whl", hash = "sha256:47e9b82132fa8d2b4944e708049229601448aaad7e6f296f630f2d1a32de35af", size = 567544208, upload-time = "2025-03-07T01:53:30.535Z" }, +] + +[[package]] +name = "nvidia-cuda-cupti" +version = "13.0.85" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/2a/80353b103fc20ce05ef51e928daed4b6015db4aaa9162ed0997090fe2250/nvidia_cuda_cupti-13.0.85-py3-none-manylinux_2_25_aarch64.whl", hash = "sha256:796bd679890ee55fb14a94629b698b6db54bcfd833d391d5e94017dd9d7d3151", size = 10310827, upload-time = "2025-09-04T08:26:42.012Z" }, + { url = "https://files.pythonhosted.org/packages/33/6d/737d164b4837a9bbd202f5ae3078975f0525a55730fe871d8ed4e3b952b0/nvidia_cuda_cupti-13.0.85-py3-none-manylinux_2_25_x86_64.whl", hash = "sha256:4eb01c08e859bf924d222250d2e8f8b8ff6d3db4721288cf35d14252a4d933c8", size = 10715597, upload-time = "2025-09-04T08:26:51.312Z" }, + { url = "https://files.pythonhosted.org/packages/ad/df/b74b10025c1205695c5676373f2edd3e87a7202cc62ead0dfbc373b0f6ea/nvidia_cuda_cupti-13.0.85-py3-none-win_amd64.whl", hash = "sha256:683f58d301548deeefcb8f6fac1b8d907691b9d8b18eccab417f51e362102f00", size = 7736776, upload-time = "2025-09-04T08:38:08.38Z" }, +] + +[[package]] +name = "nvidia-cuda-cupti-cu12" +version = "12.8.90" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d5/1f/b3bd73445e5cb342727fd24fe1f7b748f690b460acadc27ea22f904502c8/nvidia_cuda_cupti_cu12-12.8.90-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:4412396548808ddfed3f17a467b104ba7751e6b58678a4b840675c56d21cf7ed", size = 9533318, upload-time = "2025-03-07T01:40:10.421Z" }, + { url = "https://files.pythonhosted.org/packages/f8/02/2adcaa145158bf1a8295d83591d22e4103dbfd821bcaf6f3f53151ca4ffa/nvidia_cuda_cupti_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ea0cb07ebda26bb9b29ba82cda34849e73c166c18162d3913575b0c9db9a6182", size = 10248621, upload-time = "2025-03-07T01:40:21.213Z" }, + { url = "https://files.pythonhosted.org/packages/41/bc/83f5426095d93694ae39fe1311431b5d5a9bb82e48bf0dd8e19be2765942/nvidia_cuda_cupti_cu12-12.8.90-py3-none-win_amd64.whl", hash = "sha256:bb479dcdf7e6d4f8b0b01b115260399bf34154a1a2e9fe11c85c517d87efd98e", size = 7015759, upload-time = "2025-03-07T01:51:11.355Z" }, +] + +[[package]] +name = "nvidia-cuda-nvrtc" +version = "13.0.88" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c3/68/483a78f5e8f31b08fb1bb671559968c0ca3a065ac7acabfc7cee55214fd6/nvidia_cuda_nvrtc-13.0.88-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:ad9b6d2ead2435f11cbb6868809d2adeeee302e9bb94bcf0539c7a40d80e8575", size = 90215200, upload-time = "2025-09-04T08:28:44.204Z" }, + { url = "https://files.pythonhosted.org/packages/b7/dc/6bb80850e0b7edd6588d560758f17e0550893a1feaf436807d64d2da040f/nvidia_cuda_nvrtc-13.0.88-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d27f20a0ca67a4bb34268a5e951033496c5b74870b868bacd046b1b8e0c3267b", size = 43015449, upload-time = "2025-09-04T08:28:20.239Z" }, + { url = "https://files.pythonhosted.org/packages/4a/af/345fedb9f4c76c84ab4fa445b36bd4048a4d9db60e6bc76b4f913ff4b852/nvidia_cuda_nvrtc-13.0.88-py3-none-win_amd64.whl", hash = "sha256:6bcd4e7f8e205cbe644f5a98f2f799bef9556fefc89dd786e79a16312ce49872", size = 76807835, upload-time = "2025-09-04T08:39:15.274Z" }, +] + +[[package]] +name = "nvidia-cuda-nvrtc-cu12" +version = "12.8.93" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/6b/32f747947df2da6994e999492ab306a903659555dddc0fbdeb9d71f75e52/nvidia_cuda_nvrtc_cu12-12.8.93-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:a7756528852ef889772a84c6cd89d41dfa74667e24cca16bb31f8f061e3e9994", size = 88040029, upload-time = "2025-03-07T01:42:13.562Z" }, + { url = "https://files.pythonhosted.org/packages/eb/d1/e50d0acaab360482034b84b6e27ee83c6738f7d32182b987f9c7a4e32962/nvidia_cuda_nvrtc_cu12-12.8.93-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fc1fec1e1637854b4c0a65fb9a8346b51dd9ee69e61ebaccc82058441f15bce8", size = 43106076, upload-time = "2025-03-07T01:41:59.817Z" }, + { url = "https://files.pythonhosted.org/packages/45/51/52a3d84baa2136cc8df15500ad731d74d3a1114d4c123e043cb608d4a32b/nvidia_cuda_nvrtc_cu12-12.8.93-py3-none-win_amd64.whl", hash = "sha256:7a4b6b2904850fe78e0bd179c4b655c404d4bb799ef03ddc60804247099ae909", size = 73586838, upload-time = "2025-03-07T01:52:13.483Z" }, +] + +[[package]] +name = "nvidia-cuda-runtime" +version = "13.0.96" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/87/4f/17d7b9b8e285199c58ce28e31b5c5bbaa4d8271af06a89b6405258245de2/nvidia_cuda_runtime-13.0.96-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ef9bcbe90493a2b9d810e43d249adb3d02e98dd30200d86607d8d02687c43f55", size = 2261060, upload-time = "2025-10-09T08:55:15.78Z" }, + { url = "https://files.pythonhosted.org/packages/2e/24/d1558f3b68b1d26e706813b1d10aa1d785e4698c425af8db8edc3dced472/nvidia_cuda_runtime-13.0.96-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7f82250d7782aa23b6cfe765ecc7db554bd3c2870c43f3d1821f1d18aebf0548", size = 2243632, upload-time = "2025-10-09T08:55:36.117Z" }, + { url = "https://files.pythonhosted.org/packages/b7/94/6b867483bec07da24ffa32736c79fabb94ef3a7af4d787a9d4a974868576/nvidia_cuda_runtime-13.0.96-py3-none-win_amd64.whl", hash = "sha256:f79298c8a098cec150a597c8eba58ecdab96e3bdc4b9bc4f9983635031740492", size = 2927037, upload-time = "2025-10-09T09:04:23.782Z" }, +] + +[[package]] +name = "nvidia-cuda-runtime-cu12" +version = "12.8.90" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7c/75/f865a3b236e4647605ea34cc450900854ba123834a5f1598e160b9530c3a/nvidia_cuda_runtime_cu12-12.8.90-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:52bf7bbee900262ffefe5e9d5a2a69a30d97e2bc5bb6cc866688caa976966e3d", size = 965265, upload-time = "2025-03-07T01:39:43.533Z" }, + { url = "https://files.pythonhosted.org/packages/0d/9b/a997b638fcd068ad6e4d53b8551a7d30fe8b404d6f1804abf1df69838932/nvidia_cuda_runtime_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:adade8dcbd0edf427b7204d480d6066d33902cab2a4707dcfc48a2d0fd44ab90", size = 954765, upload-time = "2025-03-07T01:40:01.615Z" }, + { url = "https://files.pythonhosted.org/packages/30/a5/a515b7600ad361ea14bfa13fb4d6687abf500adc270f19e89849c0590492/nvidia_cuda_runtime_cu12-12.8.90-py3-none-win_amd64.whl", hash = "sha256:c0c6027f01505bfed6c3b21ec546f69c687689aad5f1a377554bc6ca4aa993a8", size = 944318, upload-time = "2025-03-07T01:51:01.794Z" }, +] + +[[package]] +name = "nvidia-cudnn-cu12" +version = "9.10.2.21" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-cublas-cu12", marker = "extra == 'extra-13-torchpfaffian-cu128' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/fa/41/e79269ce215c857c935fd86bcfe91a451a584dfc27f1e068f568b9ad1ab7/nvidia_cudnn_cu12-9.10.2.21-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:c9132cc3f8958447b4910a1720036d9eff5928cc3179b0a51fb6d167c6cc87d8", size = 705026878, upload-time = "2025-06-06T21:52:51.348Z" }, + { url = "https://files.pythonhosted.org/packages/ba/51/e123d997aa098c61d029f76663dedbfb9bc8dcf8c60cbd6adbe42f76d049/nvidia_cudnn_cu12-9.10.2.21-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:949452be657fa16687d0930933f032835951ef0892b37d2d53824d1a84dc97a8", size = 706758467, upload-time = "2025-06-06T21:54:08.597Z" }, + { url = "https://files.pythonhosted.org/packages/3d/90/0bd6e586701b3a890fd38aa71c387dab4883d619d6e5ad912ccbd05bfd67/nvidia_cudnn_cu12-9.10.2.21-py3-none-win_amd64.whl", hash = "sha256:c6288de7d63e6cf62988f0923f96dc339cea362decb1bf5b3141883392a7d65e", size = 692992268, upload-time = "2025-06-06T21:55:18.114Z" }, +] + +[[package]] +name = "nvidia-cudnn-cu13" +version = "9.15.1.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-cublas", marker = "(extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra != 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/ff/93/b3c9db2c35d6183361333d2dcfea50e094c012d012c8a4d7effbfb53ef62/nvidia_cudnn_cu13-9.15.1.9-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:44cd2ec83c3ef62a7357614bd02ce7f3dac35ffcbb04ad20999e730741f0ba17", size = 415636241, upload-time = "2025-11-12T20:22:26.582Z" }, + { url = "https://files.pythonhosted.org/packages/0c/d0/90f98fc55c48a7d8f5ad0a03a6321acc1a7024bdd550d96b3547a04ea6b4/nvidia_cudnn_cu13-9.15.1.9-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:ebc9a647918df0d7298d67cfaf41579fd4c78ead9aba246f5ad9414d61b9ec4c", size = 351298418, upload-time = "2025-11-12T20:23:21.455Z" }, + { url = "https://files.pythonhosted.org/packages/01/e4/f899b1cd1b3be20e8a5065fba3670d492f634da07eba5e09425bc96647be/nvidia_cudnn_cu13-9.15.1.9-py3-none-win_amd64.whl", hash = "sha256:e99068ca372b9791483759705ff79545e6e0ab5fe6352772e084cc6d1a419ab6", size = 336136012, upload-time = "2025-11-12T20:24:43.179Z" }, +] + +[[package]] +name = "nvidia-cufft" +version = "12.0.0.61" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-nvjitlink", marker = "(extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra != 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/8b/ae/f417a75c0259e85c1d2f83ca4e960289a5f814ed0cea74d18c353d3e989d/nvidia_cufft-12.0.0.61-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2708c852ef8cd89d1d2068bdbece0aa188813a0c934db3779b9b1faa8442e5f5", size = 214053554, upload-time = "2025-09-04T08:31:38.196Z" }, + { url = "https://files.pythonhosted.org/packages/a8/2f/7b57e29836ea8714f81e9898409196f47d772d5ddedddf1592eadb8ab743/nvidia_cufft-12.0.0.61-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6c44f692dce8fd5ffd3e3df134b6cdb9c2f72d99cf40b62c32dde45eea9ddad3", size = 214085489, upload-time = "2025-09-04T08:31:56.044Z" }, + { url = "https://files.pythonhosted.org/packages/85/b2/f8af21a2ed1beed337a6a02c5a28aeb85441f4d578ec3d529543c775ea4b/nvidia_cufft-12.0.0.61-py3-none-win_amd64.whl", hash = "sha256:2abce5b39d2f5ae12730fb7e5db6696533e36c26e2d3e8fd1750bdd2853364eb", size = 213342123, upload-time = "2025-09-04T08:40:51.145Z" }, +] + +[[package]] +name = "nvidia-cufft-cu12" +version = "11.3.3.83" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-nvjitlink-cu12", marker = "extra == 'extra-13-torchpfaffian-cu128' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/bc/7771846d3a0272026c416fbb7e5f4c1f146d6d80704534d0b187dd6f4800/nvidia_cufft_cu12-11.3.3.83-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:848ef7224d6305cdb2a4df928759dca7b1201874787083b6e7550dd6765ce69a", size = 193109211, upload-time = "2025-03-07T01:44:56.873Z" }, + { url = "https://files.pythonhosted.org/packages/1f/13/ee4e00f30e676b66ae65b4f08cb5bcbb8392c03f54f2d5413ea99a5d1c80/nvidia_cufft_cu12-11.3.3.83-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4d2dd21ec0b88cf61b62e6b43564355e5222e4a3fb394cac0db101f2dd0d4f74", size = 193118695, upload-time = "2025-03-07T01:45:27.821Z" }, + { url = "https://files.pythonhosted.org/packages/7d/ec/ce1629f1e478bb5ccd208986b5f9e0316a78538dd6ab1d0484f012f8e2a1/nvidia_cufft_cu12-11.3.3.83-py3-none-win_amd64.whl", hash = "sha256:7a64a98ef2a7c47f905aaf8931b69a3a43f27c55530c698bb2ed7c75c0b42cb7", size = 192216559, upload-time = "2025-03-07T01:53:57.106Z" }, +] + +[[package]] +name = "nvidia-cufile" +version = "1.15.1.6" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/70/4f193de89a48b71714e74602ee14d04e4019ad36a5a9f20c425776e72cd6/nvidia_cufile-1.15.1.6-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:08a3ecefae5a01c7f5117351c64f17c7c62efa5fffdbe24fc7d298da19cd0b44", size = 1223672, upload-time = "2025-09-04T08:32:22.779Z" }, + { url = "https://files.pythonhosted.org/packages/ab/73/cc4a14c9813a8a0d509417cf5f4bdaba76e924d58beb9864f5a7baceefbf/nvidia_cufile-1.15.1.6-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:bdc0deedc61f548bddf7733bdc216456c2fdb101d020e1ab4b88d232d5e2f6d1", size = 1136992, upload-time = "2025-09-04T08:32:14.119Z" }, +] + +[[package]] +name = "nvidia-cufile-cu12" +version = "1.13.1.3" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bb/fe/1bcba1dfbfb8d01be8d93f07bfc502c93fa23afa6fd5ab3fc7c1df71038a/nvidia_cufile_cu12-1.13.1.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1d069003be650e131b21c932ec3d8969c1715379251f8d23a1860554b1cb24fc", size = 1197834, upload-time = "2025-03-07T01:45:50.723Z" }, + { url = "https://files.pythonhosted.org/packages/1e/f5/5607710447a6fe9fd9b3283956fceeee8a06cda1d2f56ce31371f595db2a/nvidia_cufile_cu12-1.13.1.3-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:4beb6d4cce47c1a0f1013d72e02b0994730359e17801d395bdcbf20cfb3bb00a", size = 1120705, upload-time = "2025-03-07T01:45:41.434Z" }, +] + +[[package]] +name = "nvidia-curand" +version = "10.4.0.35" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/72/7c2ae24fb6b63a32e6ae5d241cc65263ea18d08802aaae087d9f013335a2/nvidia_curand-10.4.0.35-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:133df5a7509c3e292aaa2b477afd0194f06ce4ea24d714d616ff36439cee349a", size = 61962106, upload-time = "2025-08-04T10:21:41.128Z" }, + { url = "https://files.pythonhosted.org/packages/a5/9f/be0a41ca4a4917abf5cb9ae0daff1a6060cc5de950aec0396de9f3b52bc5/nvidia_curand-10.4.0.35-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:1aee33a5da6e1db083fe2b90082def8915f30f3248d5896bcec36a579d941bfc", size = 59544258, upload-time = "2025-08-04T10:22:03.992Z" }, + { url = "https://files.pythonhosted.org/packages/99/27/72103153b1ffc00e09fdc40ac970235343dcd1ea8bd762e84d2d73219ffa/nvidia_curand-10.4.0.35-py3-none-win_amd64.whl", hash = "sha256:65b1710aa6961d326b411e314b374290904c5ddf41dc3f766ebc3f1d7d4ca69f", size = 55242481, upload-time = "2025-08-04T10:30:41.831Z" }, +] + +[[package]] +name = "nvidia-curand-cu12" +version = "10.3.9.90" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/45/5e/92aa15eca622a388b80fbf8375d4760738df6285b1e92c43d37390a33a9a/nvidia_curand_cu12-10.3.9.90-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:dfab99248034673b779bc6decafdc3404a8a6f502462201f2f31f11354204acd", size = 63625754, upload-time = "2025-03-07T01:46:10.735Z" }, + { url = "https://files.pythonhosted.org/packages/fb/aa/6584b56dc84ebe9cf93226a5cde4d99080c8e90ab40f0c27bda7a0f29aa1/nvidia_curand_cu12-10.3.9.90-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:b32331d4f4df5d6eefa0554c565b626c7216f87a06a4f56fab27c3b68a830ec9", size = 63619976, upload-time = "2025-03-07T01:46:23.323Z" }, + { url = "https://files.pythonhosted.org/packages/b9/75/70c05b2f3ed5be3bb30b7102b6eb78e100da4bbf6944fd6725c012831cab/nvidia_curand_cu12-10.3.9.90-py3-none-win_amd64.whl", hash = "sha256:f149a8ca457277da854f89cf282d6ef43176861926c7ac85b2a0fbd237c587ec", size = 62765309, upload-time = "2025-03-07T01:54:20.478Z" }, +] + +[[package]] +name = "nvidia-cusolver" +version = "12.0.4.66" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-cublas", marker = "(extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra != 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "nvidia-cusparse", marker = "(extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra != 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "nvidia-nvjitlink", marker = "(extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra != 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/c3/b30c9e935fc01e3da443ec0116ed1b2a009bb867f5324d3f2d7e533e776b/nvidia_cusolver-12.0.4.66-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:02c2457eaa9e39de20f880f4bd8820e6a1cfb9f9a34f820eb12a155aa5bc92d2", size = 223467760, upload-time = "2025-09-04T08:33:04.222Z" }, + { url = "https://files.pythonhosted.org/packages/5f/67/cba3777620cdacb99102da4042883709c41c709f4b6323c10781a9c3aa34/nvidia_cusolver-12.0.4.66-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:0a759da5dea5c0ea10fd307de75cdeb59e7ea4fcb8add0924859b944babf1112", size = 200941980, upload-time = "2025-09-04T08:33:22.767Z" }, + { url = "https://files.pythonhosted.org/packages/99/ef/332a0101260ca78a1daef046bf0b06199e8ed4dac1d2aa698289c358169c/nvidia_cusolver-12.0.4.66-py3-none-win_amd64.whl", hash = "sha256:16515bd33a8e76bb54d024cfa068fa68d30e80fc34b9e1090813ea9362e0cb65", size = 193551444, upload-time = "2025-09-04T08:41:46.813Z" }, +] + +[[package]] +name = "nvidia-cusolver-cu12" +version = "11.7.3.90" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-cublas-cu12", marker = "extra == 'extra-13-torchpfaffian-cu128' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "nvidia-cusparse-cu12", marker = "extra == 'extra-13-torchpfaffian-cu128' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "nvidia-nvjitlink-cu12", marker = "extra == 'extra-13-torchpfaffian-cu128' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/32/f7cd6ce8a7690544d084ea21c26e910a97e077c9b7f07bf5de623ee19981/nvidia_cusolver_cu12-11.7.3.90-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:db9ed69dbef9715071232caa9b69c52ac7de3a95773c2db65bdba85916e4e5c0", size = 267229841, upload-time = "2025-03-07T01:46:54.356Z" }, + { url = "https://files.pythonhosted.org/packages/85/48/9a13d2975803e8cf2777d5ed57b87a0b6ca2cc795f9a4f59796a910bfb80/nvidia_cusolver_cu12-11.7.3.90-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:4376c11ad263152bd50ea295c05370360776f8c3427b30991df774f9fb26c450", size = 267506905, upload-time = "2025-03-07T01:47:16.273Z" }, + { url = "https://files.pythonhosted.org/packages/13/c0/76ca8551b8a84146ffa189fec81c26d04adba4bc0dbe09cd6e6fd9b7de04/nvidia_cusolver_cu12-11.7.3.90-py3-none-win_amd64.whl", hash = "sha256:4a550db115fcabc4d495eb7d39ac8b58d4ab5d8e63274d3754df1c0ad6a22d34", size = 256720438, upload-time = "2025-03-07T01:54:39.898Z" }, +] + +[[package]] +name = "nvidia-cusparse" +version = "12.6.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-nvjitlink", marker = "(extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra != 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/94/5c26f33738ae35276672f12615a64bd008ed5be6d1ebcb23579285d960a9/nvidia_cusparse-12.6.3.3-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:80bcc4662f23f1054ee334a15c72b8940402975e0eab63178fc7e670aa59472c", size = 162155568, upload-time = "2025-09-04T08:33:42.864Z" }, + { url = "https://files.pythonhosted.org/packages/fa/18/623c77619c31d62efd55302939756966f3ecc8d724a14dab2b75f1508850/nvidia_cusparse-12.6.3.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2b3c89c88d01ee0e477cb7f82ef60a11a4bcd57b6b87c33f789350b59759360b", size = 145942937, upload-time = "2025-09-04T08:33:58.029Z" }, + { url = "https://files.pythonhosted.org/packages/02/b0/b043d6f3480f102f885cf87fc3ffd3edcb5e23b855025a50e2ef4d059185/nvidia_cusparse-12.6.3.3-py3-none-win_amd64.whl", hash = "sha256:cbcf42feb737bd7ec15b4c0a63e62351886bd3f975027b8815d7f720a2b5ea79", size = 143783033, upload-time = "2025-09-04T08:42:12.391Z" }, +] + +[[package]] +name = "nvidia-cusparse-cu12" +version = "12.5.8.93" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-nvjitlink-cu12", marker = "extra == 'extra-13-torchpfaffian-cu128' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/bc/f7/cd777c4109681367721b00a106f491e0d0d15cfa1fd59672ce580ce42a97/nvidia_cusparse_cu12-12.5.8.93-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:9b6c161cb130be1a07a27ea6923df8141f3c295852f4b260c65f18f3e0a091dc", size = 288117129, upload-time = "2025-03-07T01:47:40.407Z" }, + { url = "https://files.pythonhosted.org/packages/c2/f5/e1854cb2f2bcd4280c44736c93550cc300ff4b8c95ebe370d0aa7d2b473d/nvidia_cusparse_cu12-12.5.8.93-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1ec05d76bbbd8b61b06a80e1eaf8cf4959c3d4ce8e711b65ebd0443bb0ebb13b", size = 288216466, upload-time = "2025-03-07T01:48:13.779Z" }, + { url = "https://files.pythonhosted.org/packages/62/07/f3b2ad63f8e3d257a599f422ae34eb565e70c41031aecefa3d18b62cabd1/nvidia_cusparse_cu12-12.5.8.93-py3-none-win_amd64.whl", hash = "sha256:9a33604331cb2cac199f2e7f5104dfbb8a5a898c367a53dfda9ff2acb6b6b4dd", size = 284937404, upload-time = "2025-03-07T01:55:07.742Z" }, +] + +[[package]] +name = "nvidia-cusparselt-cu12" +version = "0.7.1" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/73/b9/598f6ff36faaece4b3c50d26f50e38661499ff34346f00e057760b35cc9d/nvidia_cusparselt_cu12-0.7.1-py3-none-manylinux2014_aarch64.whl", hash = "sha256:8878dce784d0fac90131b6817b607e803c36e629ba34dc5b433471382196b6a5", size = 283835557, upload-time = "2025-02-26T00:16:54.265Z" }, + { url = "https://files.pythonhosted.org/packages/56/79/12978b96bd44274fe38b5dde5cfb660b1d114f70a65ef962bcbbed99b549/nvidia_cusparselt_cu12-0.7.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:f1bb701d6b930d5a7cea44c19ceb973311500847f81b634d802b7b539dc55623", size = 287193691, upload-time = "2025-02-26T00:15:44.104Z" }, + { url = "https://files.pythonhosted.org/packages/2f/d8/a6b0d0d0c2435e9310f3e2bb0d9c9dd4c33daef86aa5f30b3681defd37ea/nvidia_cusparselt_cu12-0.7.1-py3-none-win_amd64.whl", hash = "sha256:f67fbb5831940ec829c9117b7f33807db9f9678dc2a617fbe781cac17b4e1075", size = 271020911, upload-time = "2025-02-26T00:14:47.204Z" }, +] + +[[package]] +name = "nvidia-cusparselt-cu13" +version = "0.8.0" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/46/10/8dcd1175260706a2fc92a16a52e306b71d4c1ea0b0cc4a9484183399818a/nvidia_cusparselt_cu13-0.8.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:400c6ed1cf6780fc6efedd64ec9f1345871767e6a1a0a552a1ea0578117ea77c", size = 220791277, upload-time = "2025-08-13T19:22:40.982Z" }, + { url = "https://files.pythonhosted.org/packages/fd/53/43b0d71f4e702fa9733f8b4571fdca50a8813f1e450b656c239beff12315/nvidia_cusparselt_cu13-0.8.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:25e30a8a7323935d4ad0340b95a0b69926eee755767e8e0b1cf8dd85b197d3fd", size = 169884119, upload-time = "2025-08-13T19:23:41.967Z" }, + { url = "https://files.pythonhosted.org/packages/57/de/8f0578928b9b1246d7b1324db0528e6b9f9fb54496a49f40bf71f09f1a27/nvidia_cusparselt_cu13-0.8.0-py3-none-win_amd64.whl", hash = "sha256:e80212ed7b1afc97102fbb2b5c82487aa73f6a0edfa6d26c5a152593e520bb8f", size = 156459710, upload-time = "2025-08-13T19:24:18.043Z" }, +] + +[[package]] +name = "nvidia-nccl-cu12" +version = "2.27.5" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bb/1c/857979db0ef194ca5e21478a0612bcdbbe59458d7694361882279947b349/nvidia_nccl_cu12-2.27.5-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:31432ad4d1fb1004eb0c56203dc9bc2178a1ba69d1d9e02d64a6938ab5e40e7a", size = 322400625, upload-time = "2025-06-26T04:11:04.496Z" }, + { url = "https://files.pythonhosted.org/packages/6e/89/f7a07dc961b60645dbbf42e80f2bc85ade7feb9a491b11a1e973aa00071f/nvidia_nccl_cu12-2.27.5-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ad730cf15cb5d25fe849c6e6ca9eb5b76db16a80f13f425ac68d8e2e55624457", size = 322348229, upload-time = "2025-06-26T04:11:28.385Z" }, +] + +[[package]] +name = "nvidia-nccl-cu13" +version = "2.28.9" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/39/55/1920646a2e43ffd4fc958536b276197ed740e9e0c54105b4bb3521591fc7/nvidia_nccl_cu13-2.28.9-py3-none-manylinux_2_18_aarch64.whl", hash = "sha256:01c873ba1626b54caa12272ed228dc5b2781545e0ae8ba3f432a8ef1c6d78643", size = 196561677, upload-time = "2025-11-18T05:49:03.45Z" }, + { url = "https://files.pythonhosted.org/packages/b0/b4/878fefaad5b2bcc6fcf8d474a25e3e3774bc5133e4b58adff4d0bca238bc/nvidia_nccl_cu13-2.28.9-py3-none-manylinux_2_18_x86_64.whl", hash = "sha256:e4553a30f34195f3fa1da02a6da3d6337d28f2003943aa0a3d247bbc25fefc42", size = 196493177, upload-time = "2025-11-18T05:49:17.677Z" }, +] + +[[package]] +name = "nvidia-nvjitlink" +version = "13.0.88" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/56/7a/123e033aaff487c77107195fa5a2b8686795ca537935a24efae476c41f05/nvidia_nvjitlink-13.0.88-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:13a74f429e23b921c1109976abefacc69835f2f433ebd323d3946e11d804e47b", size = 40713933, upload-time = "2025-09-04T08:35:43.553Z" }, + { url = "https://files.pythonhosted.org/packages/ab/2c/93c5250e64df4f894f1cbb397c6fd71f79813f9fd79d7cd61de3f97b3c2d/nvidia_nvjitlink-13.0.88-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e931536ccc7d467a98ba1d8b89ff7fa7f1fa3b13f2b0069118cd7f47bff07d0c", size = 38768748, upload-time = "2025-09-04T08:35:20.008Z" }, + { url = "https://files.pythonhosted.org/packages/e4/01/07530b0e37546231052e30234540289c42eaffa486f1a34a87fed340157b/nvidia_nvjitlink-13.0.88-py3-none-win_amd64.whl", hash = "sha256:634e96e3da9ef845ae744097a1f289238ecf946ce0b82e93cdce14b9782e682f", size = 36035115, upload-time = "2025-09-04T08:43:03.001Z" }, +] + +[[package]] +name = "nvidia-nvjitlink-cu12" +version = "12.8.93" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f6/74/86a07f1d0f42998ca31312f998bd3b9a7eff7f52378f4f270c8679c77fb9/nvidia_nvjitlink_cu12-12.8.93-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:81ff63371a7ebd6e6451970684f916be2eab07321b73c9d244dc2b4da7f73b88", size = 39254836, upload-time = "2025-03-07T01:49:55.661Z" }, + { url = "https://files.pythonhosted.org/packages/2a/a2/8cee5da30d13430e87bf99bb33455d2724d0a4a9cb5d7926d80ccb96d008/nvidia_nvjitlink_cu12-12.8.93-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:adccd7161ace7261e01bb91e44e88da350895c270d23f744f0820c818b7229e7", size = 38386204, upload-time = "2025-03-07T01:49:43.612Z" }, + { url = "https://files.pythonhosted.org/packages/ed/d7/34f02dad2e30c31b10a51f6b04e025e5dd60e5f936af9045a9b858a05383/nvidia_nvjitlink_cu12-12.8.93-py3-none-win_amd64.whl", hash = "sha256:bd93fbeeee850917903583587f4fc3a4eafa022e34572251368238ab5e6bd67f", size = 268553710, upload-time = "2025-03-07T01:56:24.13Z" }, +] + +[[package]] +name = "nvidia-nvshmem-cu12" +version = "3.4.5" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/6a/03aa43cc9bd3ad91553a88b5f6fb25ed6a3752ae86ce2180221962bc2aa5/nvidia_nvshmem_cu12-3.4.5-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0b48363fc6964dede448029434c6abed6c5e37f823cb43c3bcde7ecfc0457e15", size = 138936938, upload-time = "2025-09-06T00:32:05.589Z" }, + { url = "https://files.pythonhosted.org/packages/b5/09/6ea3ea725f82e1e76684f0708bbedd871fc96da89945adeba65c3835a64c/nvidia_nvshmem_cu12-3.4.5-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:042f2500f24c021db8a06c5eec2539027d57460e1c1a762055a6554f72c369bd", size = 139103095, upload-time = "2025-09-06T00:32:31.266Z" }, +] + +[[package]] +name = "nvidia-nvshmem-cu13" +version = "3.4.5" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dc/0f/05cc9c720236dcd2db9c1ab97fff629e96821be2e63103569da0c9b72f19/nvidia_nvshmem_cu13-3.4.5-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6dc2a197f38e5d0376ad52cd1a2a3617d3cdc150fd5966f4aee9bcebb1d68fe9", size = 60215947, upload-time = "2025-09-06T00:32:20.022Z" }, + { url = "https://files.pythonhosted.org/packages/3c/35/a9bf80a609e74e3b000fef598933235c908fcefcef9026042b8e6dfde2a9/nvidia_nvshmem_cu13-3.4.5-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:290f0a2ee94c9f3687a02502f3b9299a9f9fe826e6d0287ee18482e78d495b80", size = 60412546, upload-time = "2025-09-06T00:32:41.564Z" }, +] + +[[package]] +name = "nvidia-nvtx" +version = "13.0.85" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/f3/d86c845465a2723ad7e1e5c36dcd75ddb82898b3f53be47ebd429fb2fa5d/nvidia_nvtx-13.0.85-py3-none-manylinux1_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:4936d1d6780fbe68db454f5e72a42ff64d1fd6397df9f363ae786930fd5c1cd4", size = 148047, upload-time = "2025-09-04T08:29:01.761Z" }, + { url = "https://files.pythonhosted.org/packages/a8/64/3708a90d1ebe202ffdeb7185f878a3c84d15c2b2c31858da2ce0583e2def/nvidia_nvtx-13.0.85-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cb7780edb6b14107373c835bf8b72e7a178bac7367e23da7acb108f973f157a6", size = 148878, upload-time = "2025-09-04T08:28:53.627Z" }, + { url = "https://files.pythonhosted.org/packages/d2/50/0e2220f8620a177de994211186ffc5bfa9f2ce1e1282797f8f90096f9f88/nvidia_nvtx-13.0.85-py3-none-win_amd64.whl", hash = "sha256:d66ea44254dd3c6eacc300047af6e1288d2269dd072b417e0adffbf479e18519", size = 137066, upload-time = "2025-09-04T08:39:25.649Z" }, +] + +[[package]] +name = "nvidia-nvtx-cu12" +version = "12.8.90" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/c0/1b303feea90d296f6176f32a2a70b5ef230f9bdeb3a72bddb0dc922dc137/nvidia_nvtx_cu12-12.8.90-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d7ad891da111ebafbf7e015d34879f7112832fc239ff0d7d776b6cb685274615", size = 91161, upload-time = "2025-03-07T01:42:23.922Z" }, + { url = "https://files.pythonhosted.org/packages/a2/eb/86626c1bbc2edb86323022371c39aa48df6fd8b0a1647bc274577f72e90b/nvidia_nvtx_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5b17e2001cc0d751a5bc2c6ec6d26ad95913324a4adb86788c944f8ce9ba441f", size = 89954, upload-time = "2025-03-07T01:42:44.131Z" }, + { url = "https://files.pythonhosted.org/packages/9f/99/4c9c0c329bf9fc125008c3b54c7c94c0023518d06fc025ae36431375e1fe/nvidia_nvtx_cu12-12.8.90-py3-none-win_amd64.whl", hash = "sha256:619c8304aedc69f02ea82dd244541a83c3d9d40993381b3b590f1adaed3db41e", size = 56492, upload-time = "2025-03-07T01:52:24.69Z" }, +] + +[[package]] +name = "packaging" +version = "26.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/f1/e7a6dd94a8d4a5626c03e4e99c87f241ba9e350cd9e6d75123f992427270/packaging-26.2.tar.gz", hash = "sha256:ff452ff5a3e828ce110190feff1178bb1f2ea2281fa2075aadb987c2fb221661", size = 228134, upload-time = "2026-04-24T20:15:23.917Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl", hash = "sha256:5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e", size = 100195, upload-time = "2026-04-24T20:15:22.081Z" }, +] + +[[package]] +name = "pandocfilters" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/70/6f/3dd4940bbe001c06a65f88e36bad298bc7a0de5036115639926b0c5c0458/pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e", size = 8454, upload-time = "2024-01-18T20:08:13.726Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc", size = 8663, upload-time = "2024-01-18T20:08:11.28Z" }, +] + +[[package]] +name = "parso" +version = "0.8.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/30/4b/90c937815137d43ce71ba043cd3566221e9df6b9c805f24b5d138c9d40a7/parso-0.8.7.tar.gz", hash = "sha256:eaaac4c9fdd5e9e8852dc778d2d7405897ec510f2a298071453e5e3a07914bb1", size = 401824, upload-time = "2026-05-01T23:13:02.138Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/99/5d/8268b644392ee874ee82a635cd0df1773de230bde356c38de28e298392cc/parso-0.8.7-py2.py3-none-any.whl", hash = "sha256:a8926eb2a1b915486941fdbd31e86a4baf88fe8c210f25f2f35ecec5b574ca1c", size = 107025, upload-time = "2026-05-01T23:12:58.867Z" }, +] + +[[package]] +name = "pathspec" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/82/42f767fc1c1143d6fd36efb827202a2d997a375e160a71eb2888a925aac1/pathspec-1.1.1.tar.gz", hash = "sha256:17db5ecd524104a120e173814c90367a96a98d07c45b2e10c2f3919fff91bf5a", size = 135180, upload-time = "2026-04-27T01:46:08.907Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/d9/7fb5aa316bc299258e68c73ba3bddbc499654a07f151cba08f6153988714/pathspec-1.1.1-py3-none-any.whl", hash = "sha256:a00ce642f577bf7f473932318056212bc4f8bfdf53128c78bbd5af0b9b20b189", size = 57328, upload-time = "2026-04-27T01:46:07.06Z" }, +] + +[[package]] +name = "pexpect" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ptyprocess" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450, upload-time = "2023-11-25T09:07:26.339Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772, upload-time = "2023-11-25T06:56:14.81Z" }, +] + +[[package]] +name = "pillow" +version = "12.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8c/21/c2bcdd5906101a30244eaffc1b6e6ce71a31bd0742a01eb89e660ebfac2d/pillow-12.2.0.tar.gz", hash = "sha256:a830b1a40919539d07806aa58e1b114df53ddd43213d9c8b75847eee6c0182b5", size = 46987819, upload-time = "2026-04-01T14:46:17.687Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3a/aa/d0b28e1c811cd4d5f5c2bfe2e022292bd255ae5744a3b9ac7d6c8f72dd75/pillow-12.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:a4e8f36e677d3336f35089648c8955c51c6d386a13cf6ee9c189c5f5bd713a9f", size = 5354355, upload-time = "2026-04-01T14:42:15.402Z" }, + { url = "https://files.pythonhosted.org/packages/27/8e/1d5b39b8ae2bd7650d0c7b6abb9602d16043ead9ebbfef4bc4047454da2a/pillow-12.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e589959f10d9824d39b350472b92f0ce3b443c0a3442ebf41c40cb8361c5b97", size = 4695871, upload-time = "2026-04-01T14:42:18.234Z" }, + { url = "https://files.pythonhosted.org/packages/f0/c5/dcb7a6ca6b7d3be41a76958e90018d56c8462166b3ef223150360850c8da/pillow-12.2.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a52edc8bfff4429aaabdf4d9ee0daadbbf8562364f940937b941f87a4290f5ff", size = 6269734, upload-time = "2026-04-01T14:42:20.608Z" }, + { url = "https://files.pythonhosted.org/packages/ea/f1/aa1bb13b2f4eba914e9637893c73f2af8e48d7d4023b9d3750d4c5eb2d0c/pillow-12.2.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:975385f4776fafde056abb318f612ef6285b10a1f12b8570f3647ad0d74b48ec", size = 8076080, upload-time = "2026-04-01T14:42:23.095Z" }, + { url = "https://files.pythonhosted.org/packages/a1/2a/8c79d6a53169937784604a8ae8d77e45888c41537f7f6f65ed1f407fe66d/pillow-12.2.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bd9c0c7a0c681a347b3194c500cb1e6ca9cab053ea4d82a5cf45b6b754560136", size = 6382236, upload-time = "2026-04-01T14:42:25.82Z" }, + { url = "https://files.pythonhosted.org/packages/b5/42/bbcb6051030e1e421d103ce7a8ecadf837aa2f39b8f82ef1a8d37c3d4ebc/pillow-12.2.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:88d387ff40b3ff7c274947ed3125dedf5262ec6919d83946753b5f3d7c67ea4c", size = 7070220, upload-time = "2026-04-01T14:42:28.68Z" }, + { url = "https://files.pythonhosted.org/packages/3f/e1/c2a7d6dd8cfa6b231227da096fd2d58754bab3603b9d73bf609d3c18b64f/pillow-12.2.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:51c4167c34b0d8ba05b547a3bb23578d0ba17b80a5593f93bd8ecb123dd336a3", size = 6493124, upload-time = "2026-04-01T14:42:31.579Z" }, + { url = "https://files.pythonhosted.org/packages/5f/41/7c8617da5d32e1d2f026e509484fdb6f3ad7efaef1749a0c1928adbb099e/pillow-12.2.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:34c0d99ecccea270c04882cb3b86e7b57296079c9a4aff88cb3b33563d95afaa", size = 7194324, upload-time = "2026-04-01T14:42:34.615Z" }, + { url = "https://files.pythonhosted.org/packages/2d/de/a777627e19fd6d62f84070ee1521adde5eeda4855b5cf60fe0b149118bca/pillow-12.2.0-cp310-cp310-win32.whl", hash = "sha256:b85f66ae9eb53e860a873b858b789217ba505e5e405a24b85c0464822fe88032", size = 6376363, upload-time = "2026-04-01T14:42:37.19Z" }, + { url = "https://files.pythonhosted.org/packages/e7/34/fc4cb5204896465842767b96d250c08410f01f2f28afc43b257de842eed5/pillow-12.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:673aa32138f3e7531ccdbca7b3901dba9b70940a19ccecc6a37c77d5fdeb05b5", size = 7083523, upload-time = "2026-04-01T14:42:39.62Z" }, + { url = "https://files.pythonhosted.org/packages/2d/a0/32852d36bc7709f14dc3f64f929a275e958ad8c19a6deba9610d458e28b3/pillow-12.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:3e080565d8d7c671db5802eedfb438e5565ffa40115216eabb8cd52d0ecce024", size = 2463318, upload-time = "2026-04-01T14:42:42.063Z" }, + { url = "https://files.pythonhosted.org/packages/68/e1/748f5663efe6edcfc4e74b2b93edfb9b8b99b67f21a854c3ae416500a2d9/pillow-12.2.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:8be29e59487a79f173507c30ddf57e733a357f67881430449bb32614075a40ab", size = 5354347, upload-time = "2026-04-01T14:42:44.255Z" }, + { url = "https://files.pythonhosted.org/packages/47/a1/d5ff69e747374c33a3b53b9f98cca7889fce1fd03d79cdc4e1bccc6c5a87/pillow-12.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:71cde9a1e1551df7d34a25462fc60325e8a11a82cc2e2f54578e5e9a1e153d65", size = 4695873, upload-time = "2026-04-01T14:42:46.452Z" }, + { url = "https://files.pythonhosted.org/packages/df/21/e3fbdf54408a973c7f7f89a23b2cb97a7ef30c61ab4142af31eee6aebc88/pillow-12.2.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f490f9368b6fc026f021db16d7ec2fbf7d89e2edb42e8ec09d2c60505f5729c7", size = 6280168, upload-time = "2026-04-01T14:42:49.228Z" }, + { url = "https://files.pythonhosted.org/packages/d3/f1/00b7278c7dd52b17ad4329153748f87b6756ec195ff786c2bdf12518337d/pillow-12.2.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8bd7903a5f2a4545f6fd5935c90058b89d30045568985a71c79f5fd6edf9b91e", size = 8088188, upload-time = "2026-04-01T14:42:51.735Z" }, + { url = "https://files.pythonhosted.org/packages/ad/cf/220a5994ef1b10e70e85748b75649d77d506499352be135a4989c957b701/pillow-12.2.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3997232e10d2920a68d25191392e3a4487d8183039e1c74c2297f00ed1c50705", size = 6394401, upload-time = "2026-04-01T14:42:54.343Z" }, + { url = "https://files.pythonhosted.org/packages/e9/bd/e51a61b1054f09437acfbc2ff9106c30d1eb76bc1453d428399946781253/pillow-12.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e74473c875d78b8e9d5da2a70f7099549f9eb37ded4e2f6a463e60125bccd176", size = 7079655, upload-time = "2026-04-01T14:42:56.954Z" }, + { url = "https://files.pythonhosted.org/packages/6b/3d/45132c57d5fb4b5744567c3817026480ac7fc3ce5d4c47902bc0e7f6f853/pillow-12.2.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:56a3f9c60a13133a98ecff6197af34d7824de9b7b38c3654861a725c970c197b", size = 6503105, upload-time = "2026-04-01T14:42:59.847Z" }, + { url = "https://files.pythonhosted.org/packages/7d/2e/9df2fc1e82097b1df3dce58dc43286aa01068e918c07574711fcc53e6fb4/pillow-12.2.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:90e6f81de50ad6b534cab6e5aef77ff6e37722b2f5d908686f4a5c9eba17a909", size = 7203402, upload-time = "2026-04-01T14:43:02.664Z" }, + { url = "https://files.pythonhosted.org/packages/bd/2e/2941e42858ebb67e50ae741473de81c2984e6eff7b397017623c676e2e8d/pillow-12.2.0-cp311-cp311-win32.whl", hash = "sha256:8c984051042858021a54926eb597d6ee3012393ce9c181814115df4c60b9a808", size = 6378149, upload-time = "2026-04-01T14:43:05.274Z" }, + { url = "https://files.pythonhosted.org/packages/69/42/836b6f3cd7f3e5fa10a1f1a5420447c17966044c8fbf589cc0452d5502db/pillow-12.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:6e6b2a0c538fc200b38ff9eb6628228b77908c319a005815f2dde585a0664b60", size = 7082626, upload-time = "2026-04-01T14:43:08.557Z" }, + { url = "https://files.pythonhosted.org/packages/c2/88/549194b5d6f1f494b485e493edc6693c0a16f4ada488e5bd974ed1f42fad/pillow-12.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:9a8a34cc89c67a65ea7437ce257cea81a9dad65b29805f3ecee8c8fe8ff25ffe", size = 2463531, upload-time = "2026-04-01T14:43:10.743Z" }, + { url = "https://files.pythonhosted.org/packages/58/be/7482c8a5ebebbc6470b3eb791812fff7d5e0216c2be3827b30b8bb6603ed/pillow-12.2.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2d192a155bbcec180f8564f693e6fd9bccff5a7af9b32e2e4bf8c9c69dbad6b5", size = 5308279, upload-time = "2026-04-01T14:43:13.246Z" }, + { url = "https://files.pythonhosted.org/packages/d8/95/0a351b9289c2b5cbde0bacd4a83ebc44023e835490a727b2a3bd60ddc0f4/pillow-12.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f3f40b3c5a968281fd507d519e444c35f0ff171237f4fdde090dd60699458421", size = 4695490, upload-time = "2026-04-01T14:43:15.584Z" }, + { url = "https://files.pythonhosted.org/packages/de/af/4e8e6869cbed569d43c416fad3dc4ecb944cb5d9492defaed89ddd6fe871/pillow-12.2.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:03e7e372d5240cc23e9f07deca4d775c0817bffc641b01e9c3af208dbd300987", size = 6284462, upload-time = "2026-04-01T14:43:18.268Z" }, + { url = "https://files.pythonhosted.org/packages/e9/9e/c05e19657fd57841e476be1ab46c4d501bffbadbafdc31a6d665f8b737b6/pillow-12.2.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b86024e52a1b269467a802258c25521e6d742349d760728092e1bc2d135b4d76", size = 8094744, upload-time = "2026-04-01T14:43:20.716Z" }, + { url = "https://files.pythonhosted.org/packages/2b/54/1789c455ed10176066b6e7e6da1b01e50e36f94ba584dc68d9eebfe9156d/pillow-12.2.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7371b48c4fa448d20d2714c9a1f775a81155050d383333e0a6c15b1123dda005", size = 6398371, upload-time = "2026-04-01T14:43:23.443Z" }, + { url = "https://files.pythonhosted.org/packages/43/e3/fdc657359e919462369869f1c9f0e973f353f9a9ee295a39b1fea8ee1a77/pillow-12.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:62f5409336adb0663b7caa0da5c7d9e7bdbaae9ce761d34669420c2a801b2780", size = 7087215, upload-time = "2026-04-01T14:43:26.758Z" }, + { url = "https://files.pythonhosted.org/packages/8b/f8/2f6825e441d5b1959d2ca5adec984210f1ec086435b0ed5f52c19b3b8a6e/pillow-12.2.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:01afa7cf67f74f09523699b4e88c73fb55c13346d212a59a2db1f86b0a63e8c5", size = 6509783, upload-time = "2026-04-01T14:43:29.56Z" }, + { url = "https://files.pythonhosted.org/packages/67/f9/029a27095ad20f854f9dba026b3ea6428548316e057e6fc3545409e86651/pillow-12.2.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fc3d34d4a8fbec3e88a79b92e5465e0f9b842b628675850d860b8bd300b159f5", size = 7212112, upload-time = "2026-04-01T14:43:32.091Z" }, + { url = "https://files.pythonhosted.org/packages/be/42/025cfe05d1be22dbfdb4f264fe9de1ccda83f66e4fc3aac94748e784af04/pillow-12.2.0-cp312-cp312-win32.whl", hash = "sha256:58f62cc0f00fd29e64b29f4fd923ffdb3859c9f9e6105bfc37ba1d08994e8940", size = 6378489, upload-time = "2026-04-01T14:43:34.601Z" }, + { url = "https://files.pythonhosted.org/packages/5d/7b/25a221d2c761c6a8ae21bfa3874988ff2583e19cf8a27bf2fee358df7942/pillow-12.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:7f84204dee22a783350679a0333981df803dac21a0190d706a50475e361c93f5", size = 7084129, upload-time = "2026-04-01T14:43:37.213Z" }, + { url = "https://files.pythonhosted.org/packages/10/e1/542a474affab20fd4a0f1836cb234e8493519da6b76899e30bcc5d990b8b/pillow-12.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:af73337013e0b3b46f175e79492d96845b16126ddf79c438d7ea7ff27783a414", size = 2463612, upload-time = "2026-04-01T14:43:39.421Z" }, + { url = "https://files.pythonhosted.org/packages/4a/01/53d10cf0dbad820a8db274d259a37ba50b88b24768ddccec07355382d5ad/pillow-12.2.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:8297651f5b5679c19968abefd6bb84d95fe30ef712eb1b2d9b2d31ca61267f4c", size = 4100837, upload-time = "2026-04-01T14:43:41.506Z" }, + { url = "https://files.pythonhosted.org/packages/0f/98/f3a6657ecb698c937f6c76ee564882945f29b79bad496abcba0e84659ec5/pillow-12.2.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:50d8520da2a6ce0af445fa6d648c4273c3eeefbc32d7ce049f22e8b5c3daecc2", size = 4176528, upload-time = "2026-04-01T14:43:43.773Z" }, + { url = "https://files.pythonhosted.org/packages/69/bc/8986948f05e3ea490b8442ea1c1d4d990b24a7e43d8a51b2c7d8b1dced36/pillow-12.2.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:766cef22385fa1091258ad7e6216792b156dc16d8d3fa607e7545b2b72061f1c", size = 3640401, upload-time = "2026-04-01T14:43:45.87Z" }, + { url = "https://files.pythonhosted.org/packages/34/46/6c717baadcd62bc8ed51d238d521ab651eaa74838291bda1f86fe1f864c9/pillow-12.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5d2fd0fa6b5d9d1de415060363433f28da8b1526c1c129020435e186794b3795", size = 5308094, upload-time = "2026-04-01T14:43:48.438Z" }, + { url = "https://files.pythonhosted.org/packages/71/43/905a14a8b17fdb1ccb58d282454490662d2cb89a6bfec26af6d3520da5ec/pillow-12.2.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:56b25336f502b6ed02e889f4ece894a72612fe885889a6e8c4c80239ff6e5f5f", size = 4695402, upload-time = "2026-04-01T14:43:51.292Z" }, + { url = "https://files.pythonhosted.org/packages/73/dd/42107efcb777b16fa0393317eac58f5b5cf30e8392e266e76e51cff28c3d/pillow-12.2.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f1c943e96e85df3d3478f7b691f229887e143f81fedab9b20205349ab04d73ed", size = 6280005, upload-time = "2026-04-01T14:43:54.242Z" }, + { url = "https://files.pythonhosted.org/packages/a8/68/b93e09e5e8549019e61acf49f65b1a8530765a7f812c77a7461bca7e4494/pillow-12.2.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:03f6fab9219220f041c74aeaa2939ff0062bd5c364ba9ce037197f4c6d498cd9", size = 8090669, upload-time = "2026-04-01T14:43:57.335Z" }, + { url = "https://files.pythonhosted.org/packages/4b/6e/3ccb54ce8ec4ddd1accd2d89004308b7b0b21c4ac3d20fa70af4760a4330/pillow-12.2.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5cdfebd752ec52bf5bb4e35d9c64b40826bc5b40a13df7c3cda20a2c03a0f5ed", size = 6395194, upload-time = "2026-04-01T14:43:59.864Z" }, + { url = "https://files.pythonhosted.org/packages/67/ee/21d4e8536afd1a328f01b359b4d3997b291ffd35a237c877b331c1c3b71c/pillow-12.2.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:eedf4b74eda2b5a4b2b2fb4c006d6295df3bf29e459e198c90ea48e130dc75c3", size = 7082423, upload-time = "2026-04-01T14:44:02.74Z" }, + { url = "https://files.pythonhosted.org/packages/78/5f/e9f86ab0146464e8c133fe85df987ed9e77e08b29d8d35f9f9f4d6f917ba/pillow-12.2.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:00a2865911330191c0b818c59103b58a5e697cae67042366970a6b6f1b20b7f9", size = 6505667, upload-time = "2026-04-01T14:44:05.381Z" }, + { url = "https://files.pythonhosted.org/packages/ed/1e/409007f56a2fdce61584fd3acbc2bbc259857d555196cedcadc68c015c82/pillow-12.2.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1e1757442ed87f4912397c6d35a0db6a7b52592156014706f17658ff58bbf795", size = 7208580, upload-time = "2026-04-01T14:44:08.39Z" }, + { url = "https://files.pythonhosted.org/packages/23/c4/7349421080b12fb35414607b8871e9534546c128a11965fd4a7002ccfbee/pillow-12.2.0-cp313-cp313-win32.whl", hash = "sha256:144748b3af2d1b358d41286056d0003f47cb339b8c43a9ea42f5fea4d8c66b6e", size = 6375896, upload-time = "2026-04-01T14:44:11.197Z" }, + { url = "https://files.pythonhosted.org/packages/3f/82/8a3739a5e470b3c6cbb1d21d315800d8e16bff503d1f16b03a4ec3212786/pillow-12.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:390ede346628ccc626e5730107cde16c42d3836b89662a115a921f28440e6a3b", size = 7081266, upload-time = "2026-04-01T14:44:13.947Z" }, + { url = "https://files.pythonhosted.org/packages/c3/25/f968f618a062574294592f668218f8af564830ccebdd1fa6200f598e65c5/pillow-12.2.0-cp313-cp313-win_arm64.whl", hash = "sha256:8023abc91fba39036dbce14a7d6535632f99c0b857807cbbbf21ecc9f4717f06", size = 2463508, upload-time = "2026-04-01T14:44:16.312Z" }, + { url = "https://files.pythonhosted.org/packages/4d/a4/b342930964e3cb4dce5038ae34b0eab4653334995336cd486c5a8c25a00c/pillow-12.2.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:042db20a421b9bafecc4b84a8b6e444686bd9d836c7fd24542db3e7df7baad9b", size = 5309927, upload-time = "2026-04-01T14:44:18.89Z" }, + { url = "https://files.pythonhosted.org/packages/9f/de/23198e0a65a9cf06123f5435a5d95cea62a635697f8f03d134d3f3a96151/pillow-12.2.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:dd025009355c926a84a612fecf58bb315a3f6814b17ead51a8e48d3823d9087f", size = 4698624, upload-time = "2026-04-01T14:44:21.115Z" }, + { url = "https://files.pythonhosted.org/packages/01/a6/1265e977f17d93ea37aa28aa81bad4fa597933879fac2520d24e021c8da3/pillow-12.2.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:88ddbc66737e277852913bd1e07c150cc7bb124539f94c4e2df5344494e0a612", size = 6321252, upload-time = "2026-04-01T14:44:23.663Z" }, + { url = "https://files.pythonhosted.org/packages/3c/83/5982eb4a285967baa70340320be9f88e57665a387e3a53a7f0db8231a0cd/pillow-12.2.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d362d1878f00c142b7e1a16e6e5e780f02be8195123f164edf7eddd911eefe7c", size = 8126550, upload-time = "2026-04-01T14:44:26.772Z" }, + { url = "https://files.pythonhosted.org/packages/4e/48/6ffc514adce69f6050d0753b1a18fd920fce8cac87620d5a31231b04bfc5/pillow-12.2.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2c727a6d53cb0018aadd8018c2b938376af27914a68a492f59dfcaca650d5eea", size = 6433114, upload-time = "2026-04-01T14:44:29.615Z" }, + { url = "https://files.pythonhosted.org/packages/36/a3/f9a77144231fb8d40ee27107b4463e205fa4677e2ca2548e14da5cf18dce/pillow-12.2.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:efd8c21c98c5cc60653bcb311bef2ce0401642b7ce9d09e03a7da87c878289d4", size = 7115667, upload-time = "2026-04-01T14:44:32.773Z" }, + { url = "https://files.pythonhosted.org/packages/c1/fc/ac4ee3041e7d5a565e1c4fd72a113f03b6394cc72ab7089d27608f8aaccb/pillow-12.2.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9f08483a632889536b8139663db60f6724bfcb443c96f1b18855860d7d5c0fd4", size = 6538966, upload-time = "2026-04-01T14:44:35.252Z" }, + { url = "https://files.pythonhosted.org/packages/c0/a8/27fb307055087f3668f6d0a8ccb636e7431d56ed0750e07a60547b1e083e/pillow-12.2.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dac8d77255a37e81a2efcbd1fc05f1c15ee82200e6c240d7e127e25e365c39ea", size = 7238241, upload-time = "2026-04-01T14:44:37.875Z" }, + { url = "https://files.pythonhosted.org/packages/ad/4b/926ab182c07fccae9fcb120043464e1ff1564775ec8864f21a0ebce6ac25/pillow-12.2.0-cp313-cp313t-win32.whl", hash = "sha256:ee3120ae9dff32f121610bb08e4313be87e03efeadfc6c0d18f89127e24d0c24", size = 6379592, upload-time = "2026-04-01T14:44:40.336Z" }, + { url = "https://files.pythonhosted.org/packages/c2/c4/f9e476451a098181b30050cc4c9a3556b64c02cf6497ea421ac047e89e4b/pillow-12.2.0-cp313-cp313t-win_amd64.whl", hash = "sha256:325ca0528c6788d2a6c3d40e3568639398137346c3d6e66bb61db96b96511c98", size = 7085542, upload-time = "2026-04-01T14:44:43.251Z" }, + { url = "https://files.pythonhosted.org/packages/00/a4/285f12aeacbe2d6dc36c407dfbbe9e96d4a80b0fb710a337f6d2ad978c75/pillow-12.2.0-cp313-cp313t-win_arm64.whl", hash = "sha256:2e5a76d03a6c6dcef67edabda7a52494afa4035021a79c8558e14af25313d453", size = 2465765, upload-time = "2026-04-01T14:44:45.996Z" }, + { url = "https://files.pythonhosted.org/packages/bf/98/4595daa2365416a86cb0d495248a393dfc84e96d62ad080c8546256cb9c0/pillow-12.2.0-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:3adc9215e8be0448ed6e814966ecf3d9952f0ea40eb14e89a102b87f450660d8", size = 4100848, upload-time = "2026-04-01T14:44:48.48Z" }, + { url = "https://files.pythonhosted.org/packages/0b/79/40184d464cf89f6663e18dfcf7ca21aae2491fff1a16127681bf1fa9b8cf/pillow-12.2.0-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:6a9adfc6d24b10f89588096364cc726174118c62130c817c2837c60cf08a392b", size = 4176515, upload-time = "2026-04-01T14:44:51.353Z" }, + { url = "https://files.pythonhosted.org/packages/b0/63/703f86fd4c422a9cf722833670f4f71418fb116b2853ff7da722ea43f184/pillow-12.2.0-cp314-cp314-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:6a6e67ea2e6feda684ed370f9a1c52e7a243631c025ba42149a2cc5934dec295", size = 3640159, upload-time = "2026-04-01T14:44:53.588Z" }, + { url = "https://files.pythonhosted.org/packages/71/e0/fb22f797187d0be2270f83500aab851536101b254bfa1eae10795709d283/pillow-12.2.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:2bb4a8d594eacdfc59d9e5ad972aa8afdd48d584ffd5f13a937a664c3e7db0ed", size = 5312185, upload-time = "2026-04-01T14:44:56.039Z" }, + { url = "https://files.pythonhosted.org/packages/ba/8c/1a9e46228571de18f8e28f16fabdfc20212a5d019f3e3303452b3f0a580d/pillow-12.2.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:80b2da48193b2f33ed0c32c38140f9d3186583ce7d516526d462645fd98660ae", size = 4695386, upload-time = "2026-04-01T14:44:58.663Z" }, + { url = "https://files.pythonhosted.org/packages/70/62/98f6b7f0c88b9addd0e87c217ded307b36be024d4ff8869a812b241d1345/pillow-12.2.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:22db17c68434de69d8ecfc2fe821569195c0c373b25cccb9cbdacf2c6e53c601", size = 6280384, upload-time = "2026-04-01T14:45:01.5Z" }, + { url = "https://files.pythonhosted.org/packages/5e/03/688747d2e91cfbe0e64f316cd2e8005698f76ada3130d0194664174fa5de/pillow-12.2.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7b14cc0106cd9aecda615dd6903840a058b4700fcb817687d0ee4fc8b6e389be", size = 8091599, upload-time = "2026-04-01T14:45:04.5Z" }, + { url = "https://files.pythonhosted.org/packages/f6/35/577e22b936fcdd66537329b33af0b4ccfefaeabd8aec04b266528cddb33c/pillow-12.2.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8cbeb542b2ebc6fcdacabf8aca8c1a97c9b3ad3927d46b8723f9d4f033288a0f", size = 6396021, upload-time = "2026-04-01T14:45:07.117Z" }, + { url = "https://files.pythonhosted.org/packages/11/8d/d2532ad2a603ca2b93ad9f5135732124e57811d0168155852f37fbce2458/pillow-12.2.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4bfd07bc812fbd20395212969e41931001fd59eb55a60658b0e5710872e95286", size = 7083360, upload-time = "2026-04-01T14:45:09.763Z" }, + { url = "https://files.pythonhosted.org/packages/5e/26/d325f9f56c7e039034897e7380e9cc202b1e368bfd04d4cbe6a441f02885/pillow-12.2.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:9aba9a17b623ef750a4d11b742cbafffeb48a869821252b30ee21b5e91392c50", size = 6507628, upload-time = "2026-04-01T14:45:12.378Z" }, + { url = "https://files.pythonhosted.org/packages/5f/f7/769d5632ffb0988f1c5e7660b3e731e30f7f8ec4318e94d0a5d674eb65a4/pillow-12.2.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:deede7c263feb25dba4e82ea23058a235dcc2fe1f6021025dc71f2b618e26104", size = 7209321, upload-time = "2026-04-01T14:45:15.122Z" }, + { url = "https://files.pythonhosted.org/packages/6a/7a/c253e3c645cd47f1aceea6a8bacdba9991bf45bb7dfe927f7c893e89c93c/pillow-12.2.0-cp314-cp314-win32.whl", hash = "sha256:632ff19b2778e43162304d50da0181ce24ac5bb8180122cbe1bf4673428328c7", size = 6479723, upload-time = "2026-04-01T14:45:17.797Z" }, + { url = "https://files.pythonhosted.org/packages/cd/8b/601e6566b957ca50e28725cb6c355c59c2c8609751efbecd980db44e0349/pillow-12.2.0-cp314-cp314-win_amd64.whl", hash = "sha256:4e6c62e9d237e9b65fac06857d511e90d8461a32adcc1b9065ea0c0fa3a28150", size = 7217400, upload-time = "2026-04-01T14:45:20.529Z" }, + { url = "https://files.pythonhosted.org/packages/d6/94/220e46c73065c3e2951bb91c11a1fb636c8c9ad427ac3ce7d7f3359b9b2f/pillow-12.2.0-cp314-cp314-win_arm64.whl", hash = "sha256:b1c1fbd8a5a1af3412a0810d060a78b5136ec0836c8a4ef9aa11807f2a22f4e1", size = 2554835, upload-time = "2026-04-01T14:45:23.162Z" }, + { url = "https://files.pythonhosted.org/packages/b6/ab/1b426a3974cb0e7da5c29ccff4807871d48110933a57207b5a676cccc155/pillow-12.2.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:57850958fe9c751670e49b2cecf6294acc99e562531f4bd317fa5ddee2068463", size = 5314225, upload-time = "2026-04-01T14:45:25.637Z" }, + { url = "https://files.pythonhosted.org/packages/19/1e/dce46f371be2438eecfee2a1960ee2a243bbe5e961890146d2dee1ff0f12/pillow-12.2.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:d5d38f1411c0ed9f97bcb49b7bd59b6b7c314e0e27420e34d99d844b9ce3b6f3", size = 4698541, upload-time = "2026-04-01T14:45:28.355Z" }, + { url = "https://files.pythonhosted.org/packages/55/c3/7fbecf70adb3a0c33b77a300dc52e424dc22ad8cdc06557a2e49523b703d/pillow-12.2.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5c0a9f29ca8e79f09de89293f82fc9b0270bb4af1d58bc98f540cc4aedf03166", size = 6322251, upload-time = "2026-04-01T14:45:30.924Z" }, + { url = "https://files.pythonhosted.org/packages/1c/3c/7fbc17cfb7e4fe0ef1642e0abc17fc6c94c9f7a16be41498e12e2ba60408/pillow-12.2.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1610dd6c61621ae1cf811bef44d77e149ce3f7b95afe66a4512f8c59f25d9ebe", size = 8127807, upload-time = "2026-04-01T14:45:33.908Z" }, + { url = "https://files.pythonhosted.org/packages/ff/c3/a8ae14d6defd2e448493ff512fae903b1e9bd40b72efb6ec55ce0048c8ce/pillow-12.2.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0a34329707af4f73cf1782a36cd2289c0368880654a2c11f027bcee9052d35dd", size = 6433935, upload-time = "2026-04-01T14:45:36.623Z" }, + { url = "https://files.pythonhosted.org/packages/6e/32/2880fb3a074847ac159d8f902cb43278a61e85f681661e7419e6596803ed/pillow-12.2.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8e9c4f5b3c546fa3458a29ab22646c1c6c787ea8f5ef51300e5a60300736905e", size = 7116720, upload-time = "2026-04-01T14:45:39.258Z" }, + { url = "https://files.pythonhosted.org/packages/46/87/495cc9c30e0129501643f24d320076f4cc54f718341df18cc70ec94c44e1/pillow-12.2.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:fb043ee2f06b41473269765c2feae53fc2e2fbf96e5e22ca94fb5ad677856f06", size = 6540498, upload-time = "2026-04-01T14:45:41.879Z" }, + { url = "https://files.pythonhosted.org/packages/18/53/773f5edca692009d883a72211b60fdaf8871cbef075eaa9d577f0a2f989e/pillow-12.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:f278f034eb75b4e8a13a54a876cc4a5ab39173d2cdd93a638e1b467fc545ac43", size = 7239413, upload-time = "2026-04-01T14:45:44.705Z" }, + { url = "https://files.pythonhosted.org/packages/c9/e4/4b64a97d71b2a83158134abbb2f5bd3f8a2ea691361282f010998f339ec7/pillow-12.2.0-cp314-cp314t-win32.whl", hash = "sha256:6bb77b2dcb06b20f9f4b4a8454caa581cd4dd0643a08bacf821216a16d9c8354", size = 6482084, upload-time = "2026-04-01T14:45:47.568Z" }, + { url = "https://files.pythonhosted.org/packages/ba/13/306d275efd3a3453f72114b7431c877d10b1154014c1ebbedd067770d629/pillow-12.2.0-cp314-cp314t-win_amd64.whl", hash = "sha256:6562ace0d3fb5f20ed7290f1f929cae41b25ae29528f2af1722966a0a02e2aa1", size = 7225152, upload-time = "2026-04-01T14:45:50.032Z" }, + { url = "https://files.pythonhosted.org/packages/ff/6e/cf826fae916b8658848d7b9f38d88da6396895c676e8086fc0988073aaf8/pillow-12.2.0-cp314-cp314t-win_arm64.whl", hash = "sha256:aa88ccfe4e32d362816319ed727a004423aab09c5cea43c01a4b435643fa34eb", size = 2556579, upload-time = "2026-04-01T14:45:52.529Z" }, + { url = "https://files.pythonhosted.org/packages/4e/b7/2437044fb910f499610356d1352e3423753c98e34f915252aafecc64889f/pillow-12.2.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0538bd5e05efec03ae613fd89c4ce0368ecd2ba239cc25b9f9be7ed426b0af1f", size = 5273969, upload-time = "2026-04-01T14:45:55.538Z" }, + { url = "https://files.pythonhosted.org/packages/f6/f4/8316e31de11b780f4ac08ef3654a75555e624a98db1056ecb2122d008d5a/pillow-12.2.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:394167b21da716608eac917c60aa9b969421b5dcbbe02ae7f013e7b85811c69d", size = 4659674, upload-time = "2026-04-01T14:45:58.093Z" }, + { url = "https://files.pythonhosted.org/packages/d4/37/664fca7201f8bb2aa1d20e2c3d5564a62e6ae5111741966c8319ca802361/pillow-12.2.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5d04bfa02cc2d23b497d1e90a0f927070043f6cbf303e738300532379a4b4e0f", size = 5288479, upload-time = "2026-04-01T14:46:01.141Z" }, + { url = "https://files.pythonhosted.org/packages/49/62/5b0ed78fce87346be7a5cfcfaaad91f6a1f98c26f86bdbafa2066c647ef6/pillow-12.2.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0c838a5125cee37e68edec915651521191cef1e6aa336b855f495766e77a366e", size = 7032230, upload-time = "2026-04-01T14:46:03.874Z" }, + { url = "https://files.pythonhosted.org/packages/c3/28/ec0fc38107fc32536908034e990c47914c57cd7c5a3ece4d8d8f7ffd7e27/pillow-12.2.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4a6c9fa44005fa37a91ebfc95d081e8079757d2e904b27103f4f5fa6f0bf78c0", size = 5355404, upload-time = "2026-04-01T14:46:06.33Z" }, + { url = "https://files.pythonhosted.org/packages/5e/8b/51b0eddcfa2180d60e41f06bd6d0a62202b20b59c68f5a132e615b75aecf/pillow-12.2.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:25373b66e0dd5905ed63fa3cae13c82fbddf3079f2c8bf15c6fb6a35586324c1", size = 6002215, upload-time = "2026-04-01T14:46:08.83Z" }, + { url = "https://files.pythonhosted.org/packages/bc/60/5382c03e1970de634027cee8e1b7d39776b778b81812aaf45b694dfe9e28/pillow-12.2.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:bfa9c230d2fe991bed5318a5f119bd6780cda2915cca595393649fc118ab895e", size = 7080946, upload-time = "2026-04-01T14:46:11.734Z" }, +] + +[[package]] +name = "pip" +version = "26.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/01/91/47e7d486260f618783899587af63ccf7980fb60245c3e63dd4571c6b57ad/pip-26.1.2.tar.gz", hash = "sha256:f49cd134c61cf2fd75e0ce2676db03e4054504a5a4986d00f8299ae632dc4605", size = 1840799, upload-time = "2026-05-31T17:33:58.56Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5d/95/6b5cb3461ea5673ba0995989746db58eb18b91b54dbf331e72f569540946/pip-26.1.2-py3-none-any.whl", hash = "sha256:382ff9f685ee3bc25864f820aa50505825f10f5458ffff07e30a6d96e5715cab", size = 1813144, upload-time = "2026-05-31T17:33:56.772Z" }, +] + +[[package]] +name = "platformdirs" +version = "4.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/47/e4501f49c178ae1d9f4a75073fda4204f52647993f075a9db4d14930e0c5/platformdirs-4.10.0.tar.gz", hash = "sha256:31e761a6a0ca04faf7353ea759bdba55652be214725111e5aac52dfa29d4bef7", size = 31224, upload-time = "2026-05-28T03:32:53.587Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/e6/cd9575ac904136b3cbf7aa7ee819ef86eedb7274e46f230e94ea4342e729/platformdirs-4.10.0-py3-none-any.whl", hash = "sha256:fb516cdb12eb0d857d0cd85a7c57cea4d060bee4578d6cf5a14dfdf8cbf8784a", size = 22743, upload-time = "2026-05-28T03:32:52.175Z" }, +] + +[[package]] +name = "pluggy" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, +] + +[[package]] +name = "pre-commit" +version = "4.6.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cfgv" }, + { name = "identify" }, + { name = "nodeenv" }, + { name = "pyyaml" }, + { name = "virtualenv" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8e/22/2de9408ac81acbb8a7d05d4cc064a152ccf33b3d480ebe0cd292153db239/pre_commit-4.6.0.tar.gz", hash = "sha256:718d2208cef53fdc38206e40524a6d4d9576d103eb16f0fec11c875e7716e9d9", size = 198525, upload-time = "2026-04-21T20:31:41.613Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/80/6e/4b28b62ecb6aae56769c34a8ff1d661473ec1e9519e2d5f8b2c150086b26/pre_commit-4.6.0-py2.py3-none-any.whl", hash = "sha256:e2cf246f7299edcabcf15f9b0571fdce06058527f0a06535068a86d38089f29b", size = 226472, upload-time = "2026-04-21T20:31:40.092Z" }, +] + +[[package]] +name = "prompt-toolkit" +version = "3.0.52" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wcwidth" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a1/96/06e01a7b38dce6fe1db213e061a4602dd6032a8a97ef6c1a862537732421/prompt_toolkit-3.0.52.tar.gz", hash = "sha256:28cde192929c8e7321de85de1ddbe736f1375148b02f2e17edd840042b1be855", size = 434198, upload-time = "2025-08-27T15:24:02.057Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl", hash = "sha256:9aac639a3bbd33284347de5ad8d68ecc044b91a762dc39b7c21095fcd6a19955", size = 391431, upload-time = "2025-08-27T15:23:59.498Z" }, +] + +[[package]] +name = "psutil" +version = "7.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/aa/c6/d1ddf4abb55e93cebc4f2ed8b5d6dbad109ecb8d63748dd2b20ab5e57ebe/psutil-7.2.2.tar.gz", hash = "sha256:0746f5f8d406af344fd547f1c8daa5f5c33dbc293bb8d6a16d80b4bb88f59372", size = 493740, upload-time = "2026-01-28T18:14:54.428Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/51/08/510cbdb69c25a96f4ae523f733cdc963ae654904e8db864c07585ef99875/psutil-7.2.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2edccc433cbfa046b980b0df0171cd25bcaeb3a68fe9022db0979e7aa74a826b", size = 130595, upload-time = "2026-01-28T18:14:57.293Z" }, + { url = "https://files.pythonhosted.org/packages/d6/f5/97baea3fe7a5a9af7436301f85490905379b1c6f2dd51fe3ecf24b4c5fbf/psutil-7.2.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e78c8603dcd9a04c7364f1a3e670cea95d51ee865e4efb3556a3a63adef958ea", size = 131082, upload-time = "2026-01-28T18:14:59.732Z" }, + { url = "https://files.pythonhosted.org/packages/37/d6/246513fbf9fa174af531f28412297dd05241d97a75911ac8febefa1a53c6/psutil-7.2.2-cp313-cp313t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1a571f2330c966c62aeda00dd24620425d4b0cc86881c89861fbc04549e5dc63", size = 181476, upload-time = "2026-01-28T18:15:01.884Z" }, + { url = "https://files.pythonhosted.org/packages/b8/b5/9182c9af3836cca61696dabe4fd1304e17bc56cb62f17439e1154f225dd3/psutil-7.2.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:917e891983ca3c1887b4ef36447b1e0873e70c933afc831c6b6da078ba474312", size = 184062, upload-time = "2026-01-28T18:15:04.436Z" }, + { url = "https://files.pythonhosted.org/packages/16/ba/0756dca669f5a9300d0cbcbfae9a4c30e446dfc7440ffe43ded5724bfd93/psutil-7.2.2-cp313-cp313t-win_amd64.whl", hash = "sha256:ab486563df44c17f5173621c7b198955bd6b613fb87c71c161f827d3fb149a9b", size = 139893, upload-time = "2026-01-28T18:15:06.378Z" }, + { url = "https://files.pythonhosted.org/packages/1c/61/8fa0e26f33623b49949346de05ec1ddaad02ed8ba64af45f40a147dbfa97/psutil-7.2.2-cp313-cp313t-win_arm64.whl", hash = "sha256:ae0aefdd8796a7737eccea863f80f81e468a1e4cf14d926bd9b6f5f2d5f90ca9", size = 135589, upload-time = "2026-01-28T18:15:08.03Z" }, + { url = "https://files.pythonhosted.org/packages/81/69/ef179ab5ca24f32acc1dac0c247fd6a13b501fd5534dbae0e05a1c48b66d/psutil-7.2.2-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:eed63d3b4d62449571547b60578c5b2c4bcccc5387148db46e0c2313dad0ee00", size = 130664, upload-time = "2026-01-28T18:15:09.469Z" }, + { url = "https://files.pythonhosted.org/packages/7b/64/665248b557a236d3fa9efc378d60d95ef56dd0a490c2cd37dafc7660d4a9/psutil-7.2.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7b6d09433a10592ce39b13d7be5a54fbac1d1228ed29abc880fb23df7cb694c9", size = 131087, upload-time = "2026-01-28T18:15:11.724Z" }, + { url = "https://files.pythonhosted.org/packages/d5/2e/e6782744700d6759ebce3043dcfa661fb61e2fb752b91cdeae9af12c2178/psutil-7.2.2-cp314-cp314t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1fa4ecf83bcdf6e6c8f4449aff98eefb5d0604bf88cb883d7da3d8d2d909546a", size = 182383, upload-time = "2026-01-28T18:15:13.445Z" }, + { url = "https://files.pythonhosted.org/packages/57/49/0a41cefd10cb7505cdc04dab3eacf24c0c2cb158a998b8c7b1d27ee2c1f5/psutil-7.2.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e452c464a02e7dc7822a05d25db4cde564444a67e58539a00f929c51eddda0cf", size = 185210, upload-time = "2026-01-28T18:15:16.002Z" }, + { url = "https://files.pythonhosted.org/packages/dd/2c/ff9bfb544f283ba5f83ba725a3c5fec6d6b10b8f27ac1dc641c473dc390d/psutil-7.2.2-cp314-cp314t-win_amd64.whl", hash = "sha256:c7663d4e37f13e884d13994247449e9f8f574bc4655d509c3b95e9ec9e2b9dc1", size = 141228, upload-time = "2026-01-28T18:15:18.385Z" }, + { url = "https://files.pythonhosted.org/packages/f2/fc/f8d9c31db14fcec13748d373e668bc3bed94d9077dbc17fb0eebc073233c/psutil-7.2.2-cp314-cp314t-win_arm64.whl", hash = "sha256:11fe5a4f613759764e79c65cf11ebdf26e33d6dd34336f8a337aa2996d71c841", size = 136284, upload-time = "2026-01-28T18:15:19.912Z" }, + { url = "https://files.pythonhosted.org/packages/e7/36/5ee6e05c9bd427237b11b3937ad82bb8ad2752d72c6969314590dd0c2f6e/psutil-7.2.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ed0cace939114f62738d808fdcecd4c869222507e266e574799e9c0faa17d486", size = 129090, upload-time = "2026-01-28T18:15:22.168Z" }, + { url = "https://files.pythonhosted.org/packages/80/c4/f5af4c1ca8c1eeb2e92ccca14ce8effdeec651d5ab6053c589b074eda6e1/psutil-7.2.2-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:1a7b04c10f32cc88ab39cbf606e117fd74721c831c98a27dc04578deb0c16979", size = 129859, upload-time = "2026-01-28T18:15:23.795Z" }, + { url = "https://files.pythonhosted.org/packages/b5/70/5d8df3b09e25bce090399cf48e452d25c935ab72dad19406c77f4e828045/psutil-7.2.2-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:076a2d2f923fd4821644f5ba89f059523da90dc9014e85f8e45a5774ca5bc6f9", size = 155560, upload-time = "2026-01-28T18:15:25.976Z" }, + { url = "https://files.pythonhosted.org/packages/63/65/37648c0c158dc222aba51c089eb3bdfa238e621674dc42d48706e639204f/psutil-7.2.2-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b0726cecd84f9474419d67252add4ac0cd9811b04d61123054b9fb6f57df6e9e", size = 156997, upload-time = "2026-01-28T18:15:27.794Z" }, + { url = "https://files.pythonhosted.org/packages/8e/13/125093eadae863ce03c6ffdbae9929430d116a246ef69866dad94da3bfbc/psutil-7.2.2-cp36-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:fd04ef36b4a6d599bbdb225dd1d3f51e00105f6d48a28f006da7f9822f2606d8", size = 148972, upload-time = "2026-01-28T18:15:29.342Z" }, + { url = "https://files.pythonhosted.org/packages/04/78/0acd37ca84ce3ddffaa92ef0f571e073faa6d8ff1f0559ab1272188ea2be/psutil-7.2.2-cp36-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b58fabe35e80b264a4e3bb23e6b96f9e45a3df7fb7eed419ac0e5947c61e47cc", size = 148266, upload-time = "2026-01-28T18:15:31.597Z" }, + { url = "https://files.pythonhosted.org/packages/b4/90/e2159492b5426be0c1fef7acba807a03511f97c5f86b3caeda6ad92351a7/psutil-7.2.2-cp37-abi3-win_amd64.whl", hash = "sha256:eb7e81434c8d223ec4a219b5fc1c47d0417b12be7ea866e24fb5ad6e84b3d988", size = 137737, upload-time = "2026-01-28T18:15:33.849Z" }, + { url = "https://files.pythonhosted.org/packages/8c/c7/7bb2e321574b10df20cbde462a94e2b71d05f9bbda251ef27d104668306a/psutil-7.2.2-cp37-abi3-win_arm64.whl", hash = "sha256:8c233660f575a5a89e6d4cb65d9f938126312bca76d8fe087b947b3a1aaac9ee", size = 134617, upload-time = "2026-01-28T18:15:36.514Z" }, +] + +[[package]] +name = "ptyprocess" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762, upload-time = "2020-12-28T15:15:30.155Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993, upload-time = "2020-12-28T15:15:28.35Z" }, +] + +[[package]] +name = "pure-eval" +version = "0.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752, upload-time = "2024-07-21T12:58:21.801Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842, upload-time = "2024-07-21T12:58:20.04Z" }, +] + +[[package]] +name = "pybtex" +version = "0.26.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "latexcodec" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4d/f5/f30da9c93f0fa6d619332b2f69597219b625f35780473a05164a9981fd9a/pybtex-0.26.1.tar.gz", hash = "sha256:2e5543bea424e60e9e42eef70bff597be48649d8f68ba061a7a092b2477d5464", size = 692991, upload-time = "2026-04-03T13:05:39.014Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/44/f6/775eb92e865b28cdb4ad1f2bed7a5446197516f76b58a950faa3be3fd08d/pybtex-0.26.1-py3-none-any.whl", hash = "sha256:e26c0412cc54f5f21b2a6d9d175762a2d2af9ccf3a8f651cdb89ec035db77aa1", size = 126134, upload-time = "2026-04-03T13:05:40.623Z" }, +] + +[[package]] +name = "pybtex-docutils" +version = "1.0.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "docutils" }, + { name = "pybtex" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7e/84/796ea94d26188a853660f81bded39f8de4cfe595130aef0dea1088705a11/pybtex-docutils-1.0.3.tar.gz", hash = "sha256:3a7ebdf92b593e00e8c1c538aa9a20bca5d92d84231124715acc964d51d93c6b", size = 18348, upload-time = "2023-08-22T18:47:54.833Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/b1/ce1f4596211efb5410e178a803f08e59b20bedb66837dcf41e21c54f9ec1/pybtex_docutils-1.0.3-py3-none-any.whl", hash = "sha256:8fd290d2ae48e32fcb54d86b0efb8d573198653c7e2447d5bec5847095f430b9", size = 6385, upload-time = "2023-08-22T06:43:20.513Z" }, +] + +[[package]] +name = "pycparser" +version = "3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1b/7d/92392ff7815c21062bea51aa7b87d45576f649f16458d78b7cf94b9ab2e6/pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29", size = 103492, upload-time = "2026-01-21T14:26:51.89Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992", size = 48172, upload-time = "2026-01-21T14:26:50.693Z" }, +] + +[[package]] +name = "pygments" +version = "2.20.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c3/b2/bc9c9196916376152d655522fdcebac55e66de6603a76a02bca1b6414f6c/pygments-2.20.0.tar.gz", hash = "sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f", size = 4955991, upload-time = "2026-03-29T13:29:33.898Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176", size = 1231151, upload-time = "2026-03-29T13:29:30.038Z" }, +] + +[[package]] +name = "pyparsing" +version = "3.3.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/91/9c6ee907786a473bf81c5f53cf703ba0957b23ab84c264080fb5a450416f/pyparsing-3.3.2.tar.gz", hash = "sha256:c777f4d763f140633dcb6d8a3eda953bf7a214dc4eff598413c070bcdc117cbc", size = 6851574, upload-time = "2026-01-21T03:57:59.36Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl", hash = "sha256:850ba148bd908d7e2411587e247a1e4f0327839c40e2e5e6d05a007ecc69911d", size = 122781, upload-time = "2026-01-21T03:57:55.912Z" }, +] + +[[package]] +name = "pyproject-hooks" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/82/28175b2414effca1cdac8dc99f76d660e7a4fb0ceefa4b4ab8f5f6742925/pyproject_hooks-1.2.0.tar.gz", hash = "sha256:1e859bd5c40fae9448642dd871adf459e5e2084186e8d2c2a79a824c970da1f8", size = 19228, upload-time = "2024-09-29T09:24:13.293Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bd/24/12818598c362d7f300f18e74db45963dbcb85150324092410c8b49405e42/pyproject_hooks-1.2.0-py3-none-any.whl", hash = "sha256:9e5c6bfa8dcc30091c74b0cf803c81fdd29d94f01992a7707bc97babb1141913", size = 10216, upload-time = "2024-09-29T09:24:11.978Z" }, +] + +[[package]] +name = "pytest" +version = "8.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "exceptiongroup", marker = "python_full_version < '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "iniconfig" }, + { name = "packaging" }, + { name = "pluggy" }, + { name = "pygments" }, + { name = "tomli", marker = "python_full_version < '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a3/5c/00a0e072241553e1a7496d638deababa67c5058571567b92a7eaa258397c/pytest-8.4.2.tar.gz", hash = "sha256:86c0d0b93306b961d58d62a4db4879f27fe25513d4b969df351abdddb3c30e01", size = 1519618, upload-time = "2025-09-04T14:34:22.711Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a8/a4/20da314d277121d6534b3a980b29035dcd51e6744bd79075a6ce8fa4eb8d/pytest-8.4.2-py3-none-any.whl", hash = "sha256:872f880de3fc3a5bdc88a11b39c9710c3497a547cfa9320bc3c5e62fbf272e79", size = 365750, upload-time = "2025-09-04T14:34:20.226Z" }, +] + +[[package]] +name = "pytest-cov" +version = "6.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "coverage", extra = ["toml"] }, + { name = "pluggy" }, + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/30/4c/f883ab8f0daad69f47efdf95f55a66b51a8b939c430dadce0611508d9e99/pytest_cov-6.3.0.tar.gz", hash = "sha256:35c580e7800f87ce892e687461166e1ac2bcb8fb9e13aea79032518d6e503ff2", size = 70398, upload-time = "2025-09-06T15:40:14.361Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/80/b4/bb7263e12aade3842b938bc5c6958cae79c5ee18992f9b9349019579da0f/pytest_cov-6.3.0-py3-none-any.whl", hash = "sha256:440db28156d2468cafc0415b4f8e50856a0d11faefa38f30906048fe490f1749", size = 25115, upload-time = "2025-09-06T15:40:12.44Z" }, +] + +[[package]] +name = "pytest-json-report" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, + { name = "pytest-metadata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4f/d3/765dae9712fcd68d820338908c1337e077d5fdadccd5cacf95b9b0bea278/pytest-json-report-1.5.0.tar.gz", hash = "sha256:2dde3c647851a19b5f3700729e8310a6e66efb2077d674f27ddea3d34dc615de", size = 21241, upload-time = "2022-03-15T21:03:10.2Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/35/d07400c715bf8a88aa0c1ee9c9eb6050ca7fe5b39981f0eea773feeb0681/pytest_json_report-1.5.0-py3-none-any.whl", hash = "sha256:9897b68c910b12a2e48dd849f9a284b2c79a732a8a9cb398452ddd23d3c8c325", size = 13222, upload-time = "2022-03-15T21:03:08.65Z" }, +] + +[[package]] +name = "pytest-metadata" +version = "3.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a6/85/8c969f8bec4e559f8f2b958a15229a35495f5b4ce499f6b865eac54b878d/pytest_metadata-3.1.1.tar.gz", hash = "sha256:d2a29b0355fbc03f168aa96d41ff88b1a3b44a3b02acbe491801c98a048017c8", size = 9952, upload-time = "2024-02-12T19:38:44.887Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3e/43/7e7b2ec865caa92f67b8f0e9231a798d102724ca4c0e1f414316be1c1ef2/pytest_metadata-3.1.1-py3-none-any.whl", hash = "sha256:c8e0844db684ee1c798cfa38908d20d67d0463ecb6137c72e91f418558dd5f4b", size = 11428, upload-time = "2024-02-12T19:38:42.531Z" }, +] + +[[package]] +name = "pytest-timeout" +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ac/82/4c9ecabab13363e72d880f2fb504c5f750433b2b6f16e99f4ec21ada284c/pytest_timeout-2.4.0.tar.gz", hash = "sha256:7e68e90b01f9eff71332b25001f85c75495fc4e3a836701876183c4bcfd0540a", size = 17973, upload-time = "2025-05-05T19:44:34.99Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fa/b6/3127540ecdf1464a00e5a01ee60a1b09175f6913f0644ac748494d9c4b21/pytest_timeout-2.4.0-py3-none-any.whl", hash = "sha256:c42667e5cdadb151aeb5b26d114aff6bdf5a907f176a007a30b940d3d865b5c2", size = 14382, upload-time = "2025-05-05T19:44:33.502Z" }, +] + +[[package]] +name = "pytest-xdist" +version = "3.8.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "execnet" }, + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/78/b4/439b179d1ff526791eb921115fca8e44e596a13efeda518b9d845a619450/pytest_xdist-3.8.0.tar.gz", hash = "sha256:7e578125ec9bc6050861aa93f2d59f1d8d085595d6551c2c90b6f4fad8d3a9f1", size = 88069, upload-time = "2025-07-01T13:30:59.346Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ca/31/d4e37e9e550c2b92a9cbc2e4d0b7420a27224968580b5a447f420847c975/pytest_xdist-3.8.0-py3-none-any.whl", hash = "sha256:202ca578cfeb7370784a8c33d6d05bc6e13b4f25b5053c30a152269fd10f0b88", size = 46396, upload-time = "2025-07-01T13:30:56.632Z" }, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, +] + +[[package]] +name = "python-discovery" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "filelock" }, + { name = "platformdirs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a6/12/38c1a0b1e64806780c9563e3fc9f6e472251839662587cfbe9bfaf2ae10a/python_discovery-1.4.0.tar.gz", hash = "sha256:eb8bc7daad3c226c147e45bb4e970a1feb1bf4048ee178e6db59e197b8010ce3", size = 68455, upload-time = "2026-05-28T01:15:37.639Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/8d/3d316429f65029532bb1e28ff77b797d86b5ac3915bb44ca4e19aa283d43/python_discovery-1.4.0-py3-none-any.whl", hash = "sha256:26ed78d703e234879a66244c7d4114563fb13ec5cd30a2d1357e5fb4850782da", size = 33217, upload-time = "2026-05-28T01:15:36.573Z" }, +] + +[[package]] +name = "pywin32-ctypes" +version = "0.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/85/9f/01a1a99704853cb63f253eea009390c88e7131c67e66a0a02099a8c917cb/pywin32-ctypes-0.2.3.tar.gz", hash = "sha256:d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755", size = 29471, upload-time = "2024-08-14T10:15:34.626Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/de/3d/8161f7711c017e01ac9f008dfddd9410dff3674334c233bde66e7ba65bbf/pywin32_ctypes-0.2.3-py3-none-any.whl", hash = "sha256:8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8", size = 30756, upload-time = "2024-08-14T10:15:33.187Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/a0/39350dd17dd6d6c6507025c0e53aef67a9293a6d37d3511f23ea510d5800/pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", size = 184227, upload-time = "2025-09-25T21:31:46.04Z" }, + { url = "https://files.pythonhosted.org/packages/05/14/52d505b5c59ce73244f59c7a50ecf47093ce4765f116cdb98286a71eeca2/pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", size = 174019, upload-time = "2025-09-25T21:31:47.706Z" }, + { url = "https://files.pythonhosted.org/packages/43/f7/0e6a5ae5599c838c696adb4e6330a59f463265bfa1e116cfd1fbb0abaaae/pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", size = 740646, upload-time = "2025-09-25T21:31:49.21Z" }, + { url = "https://files.pythonhosted.org/packages/2f/3a/61b9db1d28f00f8fd0ae760459a5c4bf1b941baf714e207b6eb0657d2578/pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", size = 840793, upload-time = "2025-09-25T21:31:50.735Z" }, + { url = "https://files.pythonhosted.org/packages/7a/1e/7acc4f0e74c4b3d9531e24739e0ab832a5edf40e64fbae1a9c01941cabd7/pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", size = 770293, upload-time = "2025-09-25T21:31:51.828Z" }, + { url = "https://files.pythonhosted.org/packages/8b/ef/abd085f06853af0cd59fa5f913d61a8eab65d7639ff2a658d18a25d6a89d/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", size = 732872, upload-time = "2025-09-25T21:31:53.282Z" }, + { url = "https://files.pythonhosted.org/packages/1f/15/2bc9c8faf6450a8b3c9fc5448ed869c599c0a74ba2669772b1f3a0040180/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", size = 758828, upload-time = "2025-09-25T21:31:54.807Z" }, + { url = "https://files.pythonhosted.org/packages/a3/00/531e92e88c00f4333ce359e50c19b8d1de9fe8d581b1534e35ccfbc5f393/pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", size = 142415, upload-time = "2025-09-25T21:31:55.885Z" }, + { url = "https://files.pythonhosted.org/packages/2a/fa/926c003379b19fca39dd4634818b00dec6c62d87faf628d1394e137354d4/pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", size = 158561, upload-time = "2025-09-25T21:31:57.406Z" }, + { url = "https://files.pythonhosted.org/packages/6d/16/a95b6757765b7b031c9374925bb718d55e0a9ba8a1b6a12d25962ea44347/pyyaml-6.0.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e", size = 185826, upload-time = "2025-09-25T21:31:58.655Z" }, + { url = "https://files.pythonhosted.org/packages/16/19/13de8e4377ed53079ee996e1ab0a9c33ec2faf808a4647b7b4c0d46dd239/pyyaml-6.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824", size = 175577, upload-time = "2025-09-25T21:32:00.088Z" }, + { url = "https://files.pythonhosted.org/packages/0c/62/d2eb46264d4b157dae1275b573017abec435397aa59cbcdab6fc978a8af4/pyyaml-6.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c", size = 775556, upload-time = "2025-09-25T21:32:01.31Z" }, + { url = "https://files.pythonhosted.org/packages/10/cb/16c3f2cf3266edd25aaa00d6c4350381c8b012ed6f5276675b9eba8d9ff4/pyyaml-6.0.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:850774a7879607d3a6f50d36d04f00ee69e7fc816450e5f7e58d7f17f1ae5c00", size = 882114, upload-time = "2025-09-25T21:32:03.376Z" }, + { url = "https://files.pythonhosted.org/packages/71/60/917329f640924b18ff085ab889a11c763e0b573da888e8404ff486657602/pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d", size = 806638, upload-time = "2025-09-25T21:32:04.553Z" }, + { url = "https://files.pythonhosted.org/packages/dd/6f/529b0f316a9fd167281a6c3826b5583e6192dba792dd55e3203d3f8e655a/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37d57ad971609cf3c53ba6a7e365e40660e3be0e5175fa9f2365a379d6095a", size = 767463, upload-time = "2025-09-25T21:32:06.152Z" }, + { url = "https://files.pythonhosted.org/packages/f2/6a/b627b4e0c1dd03718543519ffb2f1deea4a1e6d42fbab8021936a4d22589/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:37503bfbfc9d2c40b344d06b2199cf0e96e97957ab1c1b546fd4f87e53e5d3e4", size = 794986, upload-time = "2025-09-25T21:32:07.367Z" }, + { url = "https://files.pythonhosted.org/packages/45/91/47a6e1c42d9ee337c4839208f30d9f09caa9f720ec7582917b264defc875/pyyaml-6.0.3-cp311-cp311-win32.whl", hash = "sha256:8098f252adfa6c80ab48096053f512f2321f0b998f98150cea9bd23d83e1467b", size = 142543, upload-time = "2025-09-25T21:32:08.95Z" }, + { url = "https://files.pythonhosted.org/packages/da/e3/ea007450a105ae919a72393cb06f122f288ef60bba2dc64b26e2646fa315/pyyaml-6.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:9f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf", size = 158763, upload-time = "2025-09-25T21:32:09.96Z" }, + { url = "https://files.pythonhosted.org/packages/d1/33/422b98d2195232ca1826284a76852ad5a86fe23e31b009c9886b2d0fb8b2/pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196", size = 182063, upload-time = "2025-09-25T21:32:11.445Z" }, + { url = "https://files.pythonhosted.org/packages/89/a0/6cf41a19a1f2f3feab0e9c0b74134aa2ce6849093d5517a0c550fe37a648/pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0", size = 173973, upload-time = "2025-09-25T21:32:12.492Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/7a778b6bd0b9a8039df8b1b1d80e2e2ad78aa04171592c8a5c43a56a6af4/pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28", size = 775116, upload-time = "2025-09-25T21:32:13.652Z" }, + { url = "https://files.pythonhosted.org/packages/65/30/d7353c338e12baef4ecc1b09e877c1970bd3382789c159b4f89d6a70dc09/pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c", size = 844011, upload-time = "2025-09-25T21:32:15.21Z" }, + { url = "https://files.pythonhosted.org/packages/8b/9d/b3589d3877982d4f2329302ef98a8026e7f4443c765c46cfecc8858c6b4b/pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc", size = 807870, upload-time = "2025-09-25T21:32:16.431Z" }, + { url = "https://files.pythonhosted.org/packages/05/c0/b3be26a015601b822b97d9149ff8cb5ead58c66f981e04fedf4e762f4bd4/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e", size = 761089, upload-time = "2025-09-25T21:32:17.56Z" }, + { url = "https://files.pythonhosted.org/packages/be/8e/98435a21d1d4b46590d5459a22d88128103f8da4c2d4cb8f14f2a96504e1/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea", size = 790181, upload-time = "2025-09-25T21:32:18.834Z" }, + { url = "https://files.pythonhosted.org/packages/74/93/7baea19427dcfbe1e5a372d81473250b379f04b1bd3c4c5ff825e2327202/pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5", size = 137658, upload-time = "2025-09-25T21:32:20.209Z" }, + { url = "https://files.pythonhosted.org/packages/86/bf/899e81e4cce32febab4fb42bb97dcdf66bc135272882d1987881a4b519e9/pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b", size = 154003, upload-time = "2025-09-25T21:32:21.167Z" }, + { url = "https://files.pythonhosted.org/packages/1a/08/67bd04656199bbb51dbed1439b7f27601dfb576fb864099c7ef0c3e55531/pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd", size = 140344, upload-time = "2025-09-25T21:32:22.617Z" }, + { url = "https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8", size = 181669, upload-time = "2025-09-25T21:32:23.673Z" }, + { url = "https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1", size = 173252, upload-time = "2025-09-25T21:32:25.149Z" }, + { url = "https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c", size = 767081, upload-time = "2025-09-25T21:32:26.575Z" }, + { url = "https://files.pythonhosted.org/packages/49/1e/a55ca81e949270d5d4432fbbd19dfea5321eda7c41a849d443dc92fd1ff7/pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5", size = 841159, upload-time = "2025-09-25T21:32:27.727Z" }, + { url = "https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6", size = 801626, upload-time = "2025-09-25T21:32:28.878Z" }, + { url = "https://files.pythonhosted.org/packages/f9/11/ba845c23988798f40e52ba45f34849aa8a1f2d4af4b798588010792ebad6/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6", size = 753613, upload-time = "2025-09-25T21:32:30.178Z" }, + { url = "https://files.pythonhosted.org/packages/3d/e0/7966e1a7bfc0a45bf0a7fb6b98ea03fc9b8d84fa7f2229e9659680b69ee3/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be", size = 794115, upload-time = "2025-09-25T21:32:31.353Z" }, + { url = "https://files.pythonhosted.org/packages/de/94/980b50a6531b3019e45ddeada0626d45fa85cbe22300844a7983285bed3b/pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26", size = 137427, upload-time = "2025-09-25T21:32:32.58Z" }, + { url = "https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c", size = 154090, upload-time = "2025-09-25T21:32:33.659Z" }, + { url = "https://files.pythonhosted.org/packages/73/e8/2bdf3ca2090f68bb3d75b44da7bbc71843b19c9f2b9cb9b0f4ab7a5a4329/pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb", size = 140246, upload-time = "2025-09-25T21:32:34.663Z" }, + { url = "https://files.pythonhosted.org/packages/9d/8c/f4bd7f6465179953d3ac9bc44ac1a8a3e6122cf8ada906b4f96c60172d43/pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac", size = 181814, upload-time = "2025-09-25T21:32:35.712Z" }, + { url = "https://files.pythonhosted.org/packages/bd/9c/4d95bb87eb2063d20db7b60faa3840c1b18025517ae857371c4dd55a6b3a/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310", size = 173809, upload-time = "2025-09-25T21:32:36.789Z" }, + { url = "https://files.pythonhosted.org/packages/92/b5/47e807c2623074914e29dabd16cbbdd4bf5e9b2db9f8090fa64411fc5382/pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7", size = 766454, upload-time = "2025-09-25T21:32:37.966Z" }, + { url = "https://files.pythonhosted.org/packages/02/9e/e5e9b168be58564121efb3de6859c452fccde0ab093d8438905899a3a483/pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788", size = 836355, upload-time = "2025-09-25T21:32:39.178Z" }, + { url = "https://files.pythonhosted.org/packages/88/f9/16491d7ed2a919954993e48aa941b200f38040928474c9e85ea9e64222c3/pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5", size = 794175, upload-time = "2025-09-25T21:32:40.865Z" }, + { url = "https://files.pythonhosted.org/packages/dd/3f/5989debef34dc6397317802b527dbbafb2b4760878a53d4166579111411e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764", size = 755228, upload-time = "2025-09-25T21:32:42.084Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ce/af88a49043cd2e265be63d083fc75b27b6ed062f5f9fd6cdc223ad62f03e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35", size = 789194, upload-time = "2025-09-25T21:32:43.362Z" }, + { url = "https://files.pythonhosted.org/packages/23/20/bb6982b26a40bb43951265ba29d4c246ef0ff59c9fdcdf0ed04e0687de4d/pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac", size = 156429, upload-time = "2025-09-25T21:32:57.844Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f4/a4541072bb9422c8a883ab55255f918fa378ecf083f5b85e87fc2b4eda1b/pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3", size = 143912, upload-time = "2025-09-25T21:32:59.247Z" }, + { url = "https://files.pythonhosted.org/packages/7c/f9/07dd09ae774e4616edf6cda684ee78f97777bdd15847253637a6f052a62f/pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3", size = 189108, upload-time = "2025-09-25T21:32:44.377Z" }, + { url = "https://files.pythonhosted.org/packages/4e/78/8d08c9fb7ce09ad8c38ad533c1191cf27f7ae1effe5bb9400a46d9437fcf/pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba", size = 183641, upload-time = "2025-09-25T21:32:45.407Z" }, + { url = "https://files.pythonhosted.org/packages/7b/5b/3babb19104a46945cf816d047db2788bcaf8c94527a805610b0289a01c6b/pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c", size = 831901, upload-time = "2025-09-25T21:32:48.83Z" }, + { url = "https://files.pythonhosted.org/packages/8b/cc/dff0684d8dc44da4d22a13f35f073d558c268780ce3c6ba1b87055bb0b87/pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702", size = 861132, upload-time = "2025-09-25T21:32:50.149Z" }, + { url = "https://files.pythonhosted.org/packages/b1/5e/f77dc6b9036943e285ba76b49e118d9ea929885becb0a29ba8a7c75e29fe/pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c", size = 839261, upload-time = "2025-09-25T21:32:51.808Z" }, + { url = "https://files.pythonhosted.org/packages/ce/88/a9db1376aa2a228197c58b37302f284b5617f56a5d959fd1763fb1675ce6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065", size = 805272, upload-time = "2025-09-25T21:32:52.941Z" }, + { url = "https://files.pythonhosted.org/packages/da/92/1446574745d74df0c92e6aa4a7b0b3130706a4142b2d1a5869f2eaa423c6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65", size = 829923, upload-time = "2025-09-25T21:32:54.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/7a/1c7270340330e575b92f397352af856a8c06f230aa3e76f86b39d01b416a/pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9", size = 174062, upload-time = "2025-09-25T21:32:55.767Z" }, + { url = "https://files.pythonhosted.org/packages/f1/12/de94a39c2ef588c7e6455cfbe7343d3b2dc9d6b6b2f40c4c6565744c873d/pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", size = 149341, upload-time = "2025-09-25T21:32:56.828Z" }, +] + +[[package]] +name = "pyzmq" +version = "27.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "implementation_name == 'pypy' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/04/0b/3c9baedbdf613ecaa7aa07027780b8867f57b6293b6ee50de316c9f3222b/pyzmq-27.1.0.tar.gz", hash = "sha256:ac0765e3d44455adb6ddbf4417dcce460fc40a05978c08efdf2948072f6db540", size = 281750, upload-time = "2025-09-08T23:10:18.157Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/67/b9/52aa9ec2867528b54f1e60846728d8b4d84726630874fee3a91e66c7df81/pyzmq-27.1.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:508e23ec9bc44c0005c4946ea013d9317ae00ac67778bd47519fdf5a0e930ff4", size = 1329850, upload-time = "2025-09-08T23:07:26.274Z" }, + { url = "https://files.pythonhosted.org/packages/99/64/5653e7b7425b169f994835a2b2abf9486264401fdef18df91ddae47ce2cc/pyzmq-27.1.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:507b6f430bdcf0ee48c0d30e734ea89ce5567fd7b8a0f0044a369c176aa44556", size = 906380, upload-time = "2025-09-08T23:07:29.78Z" }, + { url = "https://files.pythonhosted.org/packages/73/78/7d713284dbe022f6440e391bd1f3c48d9185673878034cfb3939cdf333b2/pyzmq-27.1.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bf7b38f9fd7b81cb6d9391b2946382c8237fd814075c6aa9c3b746d53076023b", size = 666421, upload-time = "2025-09-08T23:07:31.263Z" }, + { url = "https://files.pythonhosted.org/packages/30/76/8f099f9d6482450428b17c4d6b241281af7ce6a9de8149ca8c1c649f6792/pyzmq-27.1.0-cp310-cp310-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:03ff0b279b40d687691a6217c12242ee71f0fba28bf8626ff50e3ef0f4410e1e", size = 854149, upload-time = "2025-09-08T23:07:33.17Z" }, + { url = "https://files.pythonhosted.org/packages/59/f0/37fbfff06c68016019043897e4c969ceab18bde46cd2aca89821fcf4fb2e/pyzmq-27.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:677e744fee605753eac48198b15a2124016c009a11056f93807000ab11ce6526", size = 1655070, upload-time = "2025-09-08T23:07:35.205Z" }, + { url = "https://files.pythonhosted.org/packages/47/14/7254be73f7a8edc3587609554fcaa7bfd30649bf89cd260e4487ca70fdaa/pyzmq-27.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:dd2fec2b13137416a1c5648b7009499bcc8fea78154cd888855fa32514f3dad1", size = 2033441, upload-time = "2025-09-08T23:07:37.432Z" }, + { url = "https://files.pythonhosted.org/packages/22/dc/49f2be26c6f86f347e796a4d99b19167fc94503f0af3fd010ad262158822/pyzmq-27.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:08e90bb4b57603b84eab1d0ca05b3bbb10f60c1839dc471fc1c9e1507bef3386", size = 1891529, upload-time = "2025-09-08T23:07:39.047Z" }, + { url = "https://files.pythonhosted.org/packages/a3/3e/154fb963ae25be70c0064ce97776c937ecc7d8b0259f22858154a9999769/pyzmq-27.1.0-cp310-cp310-win32.whl", hash = "sha256:a5b42d7a0658b515319148875fcb782bbf118dd41c671b62dae33666c2213bda", size = 567276, upload-time = "2025-09-08T23:07:40.695Z" }, + { url = "https://files.pythonhosted.org/packages/62/b2/f4ab56c8c595abcb26b2be5fd9fa9e6899c1e5ad54964e93ae8bb35482be/pyzmq-27.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:c0bb87227430ee3aefcc0ade2088100e528d5d3298a0a715a64f3d04c60ba02f", size = 632208, upload-time = "2025-09-08T23:07:42.298Z" }, + { url = "https://files.pythonhosted.org/packages/3b/e3/be2cc7ab8332bdac0522fdb64c17b1b6241a795bee02e0196636ec5beb79/pyzmq-27.1.0-cp310-cp310-win_arm64.whl", hash = "sha256:9a916f76c2ab8d045b19f2286851a38e9ac94ea91faf65bd64735924522a8b32", size = 559766, upload-time = "2025-09-08T23:07:43.869Z" }, + { url = "https://files.pythonhosted.org/packages/06/5d/305323ba86b284e6fcb0d842d6adaa2999035f70f8c38a9b6d21ad28c3d4/pyzmq-27.1.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:226b091818d461a3bef763805e75685e478ac17e9008f49fce2d3e52b3d58b86", size = 1333328, upload-time = "2025-09-08T23:07:45.946Z" }, + { url = "https://files.pythonhosted.org/packages/bd/a0/fc7e78a23748ad5443ac3275943457e8452da67fda347e05260261108cbc/pyzmq-27.1.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:0790a0161c281ca9723f804871b4027f2e8b5a528d357c8952d08cd1a9c15581", size = 908803, upload-time = "2025-09-08T23:07:47.551Z" }, + { url = "https://files.pythonhosted.org/packages/7e/22/37d15eb05f3bdfa4abea6f6d96eb3bb58585fbd3e4e0ded4e743bc650c97/pyzmq-27.1.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c895a6f35476b0c3a54e3eb6ccf41bf3018de937016e6e18748317f25d4e925f", size = 668836, upload-time = "2025-09-08T23:07:49.436Z" }, + { url = "https://files.pythonhosted.org/packages/b1/c4/2a6fe5111a01005fc7af3878259ce17684fabb8852815eda6225620f3c59/pyzmq-27.1.0-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5bbf8d3630bf96550b3be8e1fc0fea5cbdc8d5466c1192887bd94869da17a63e", size = 857038, upload-time = "2025-09-08T23:07:51.234Z" }, + { url = "https://files.pythonhosted.org/packages/cb/eb/bfdcb41d0db9cd233d6fb22dc131583774135505ada800ebf14dfb0a7c40/pyzmq-27.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:15c8bd0fe0dabf808e2d7a681398c4e5ded70a551ab47482067a572c054c8e2e", size = 1657531, upload-time = "2025-09-08T23:07:52.795Z" }, + { url = "https://files.pythonhosted.org/packages/ab/21/e3180ca269ed4a0de5c34417dfe71a8ae80421198be83ee619a8a485b0c7/pyzmq-27.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:bafcb3dd171b4ae9f19ee6380dfc71ce0390fefaf26b504c0e5f628d7c8c54f2", size = 2034786, upload-time = "2025-09-08T23:07:55.047Z" }, + { url = "https://files.pythonhosted.org/packages/3b/b1/5e21d0b517434b7f33588ff76c177c5a167858cc38ef740608898cd329f2/pyzmq-27.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e829529fcaa09937189178115c49c504e69289abd39967cd8a4c215761373394", size = 1894220, upload-time = "2025-09-08T23:07:57.172Z" }, + { url = "https://files.pythonhosted.org/packages/03/f2/44913a6ff6941905efc24a1acf3d3cb6146b636c546c7406c38c49c403d4/pyzmq-27.1.0-cp311-cp311-win32.whl", hash = "sha256:6df079c47d5902af6db298ec92151db82ecb557af663098b92f2508c398bb54f", size = 567155, upload-time = "2025-09-08T23:07:59.05Z" }, + { url = "https://files.pythonhosted.org/packages/23/6d/d8d92a0eb270a925c9b4dd039c0b4dc10abc2fcbc48331788824ef113935/pyzmq-27.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:190cbf120fbc0fc4957b56866830def56628934a9d112aec0e2507aa6a032b97", size = 633428, upload-time = "2025-09-08T23:08:00.663Z" }, + { url = "https://files.pythonhosted.org/packages/ae/14/01afebc96c5abbbd713ecfc7469cfb1bc801c819a74ed5c9fad9a48801cb/pyzmq-27.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:eca6b47df11a132d1745eb3b5b5e557a7dae2c303277aa0e69c6ba91b8736e07", size = 559497, upload-time = "2025-09-08T23:08:02.15Z" }, + { url = "https://files.pythonhosted.org/packages/92/e7/038aab64a946d535901103da16b953c8c9cc9c961dadcbf3609ed6428d23/pyzmq-27.1.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:452631b640340c928fa343801b0d07eb0c3789a5ffa843f6e1a9cee0ba4eb4fc", size = 1306279, upload-time = "2025-09-08T23:08:03.807Z" }, + { url = "https://files.pythonhosted.org/packages/e8/5e/c3c49fdd0f535ef45eefcc16934648e9e59dace4a37ee88fc53f6cd8e641/pyzmq-27.1.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1c179799b118e554b66da67d88ed66cd37a169f1f23b5d9f0a231b4e8d44a113", size = 895645, upload-time = "2025-09-08T23:08:05.301Z" }, + { url = "https://files.pythonhosted.org/packages/f8/e5/b0b2504cb4e903a74dcf1ebae157f9e20ebb6ea76095f6cfffea28c42ecd/pyzmq-27.1.0-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3837439b7f99e60312f0c926a6ad437b067356dc2bc2ec96eb395fd0fe804233", size = 652574, upload-time = "2025-09-08T23:08:06.828Z" }, + { url = "https://files.pythonhosted.org/packages/f8/9b/c108cdb55560eaf253f0cbdb61b29971e9fb34d9c3499b0e96e4e60ed8a5/pyzmq-27.1.0-cp312-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:43ad9a73e3da1fab5b0e7e13402f0b2fb934ae1c876c51d0afff0e7c052eca31", size = 840995, upload-time = "2025-09-08T23:08:08.396Z" }, + { url = "https://files.pythonhosted.org/packages/c2/bb/b79798ca177b9eb0825b4c9998c6af8cd2a7f15a6a1a4272c1d1a21d382f/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:0de3028d69d4cdc475bfe47a6128eb38d8bc0e8f4d69646adfbcd840facbac28", size = 1642070, upload-time = "2025-09-08T23:08:09.989Z" }, + { url = "https://files.pythonhosted.org/packages/9c/80/2df2e7977c4ede24c79ae39dcef3899bfc5f34d1ca7a5b24f182c9b7a9ca/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:cf44a7763aea9298c0aa7dbf859f87ed7012de8bda0f3977b6fb1d96745df856", size = 2021121, upload-time = "2025-09-08T23:08:11.907Z" }, + { url = "https://files.pythonhosted.org/packages/46/bd/2d45ad24f5f5ae7e8d01525eb76786fa7557136555cac7d929880519e33a/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f30f395a9e6fbca195400ce833c731e7b64c3919aa481af4d88c3759e0cb7496", size = 1878550, upload-time = "2025-09-08T23:08:13.513Z" }, + { url = "https://files.pythonhosted.org/packages/e6/2f/104c0a3c778d7c2ab8190e9db4f62f0b6957b53c9d87db77c284b69f33ea/pyzmq-27.1.0-cp312-abi3-win32.whl", hash = "sha256:250e5436a4ba13885494412b3da5d518cd0d3a278a1ae640e113c073a5f88edd", size = 559184, upload-time = "2025-09-08T23:08:15.163Z" }, + { url = "https://files.pythonhosted.org/packages/fc/7f/a21b20d577e4100c6a41795842028235998a643b1ad406a6d4163ea8f53e/pyzmq-27.1.0-cp312-abi3-win_amd64.whl", hash = "sha256:9ce490cf1d2ca2ad84733aa1d69ce6855372cb5ce9223802450c9b2a7cba0ccf", size = 619480, upload-time = "2025-09-08T23:08:17.192Z" }, + { url = "https://files.pythonhosted.org/packages/78/c2/c012beae5f76b72f007a9e91ee9401cb88c51d0f83c6257a03e785c81cc2/pyzmq-27.1.0-cp312-abi3-win_arm64.whl", hash = "sha256:75a2f36223f0d535a0c919e23615fc85a1e23b71f40c7eb43d7b1dedb4d8f15f", size = 552993, upload-time = "2025-09-08T23:08:18.926Z" }, + { url = "https://files.pythonhosted.org/packages/60/cb/84a13459c51da6cec1b7b1dc1a47e6db6da50b77ad7fd9c145842750a011/pyzmq-27.1.0-cp313-cp313-android_24_arm64_v8a.whl", hash = "sha256:93ad4b0855a664229559e45c8d23797ceac03183c7b6f5b4428152a6b06684a5", size = 1122436, upload-time = "2025-09-08T23:08:20.801Z" }, + { url = "https://files.pythonhosted.org/packages/dc/b6/94414759a69a26c3dd674570a81813c46a078767d931a6c70ad29fc585cb/pyzmq-27.1.0-cp313-cp313-android_24_x86_64.whl", hash = "sha256:fbb4f2400bfda24f12f009cba62ad5734148569ff4949b1b6ec3b519444342e6", size = 1156301, upload-time = "2025-09-08T23:08:22.47Z" }, + { url = "https://files.pythonhosted.org/packages/a5/ad/15906493fd40c316377fd8a8f6b1f93104f97a752667763c9b9c1b71d42d/pyzmq-27.1.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:e343d067f7b151cfe4eb3bb796a7752c9d369eed007b91231e817071d2c2fec7", size = 1341197, upload-time = "2025-09-08T23:08:24.286Z" }, + { url = "https://files.pythonhosted.org/packages/14/1d/d343f3ce13db53a54cb8946594e567410b2125394dafcc0268d8dda027e0/pyzmq-27.1.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:08363b2011dec81c354d694bdecaef4770e0ae96b9afea70b3f47b973655cc05", size = 897275, upload-time = "2025-09-08T23:08:26.063Z" }, + { url = "https://files.pythonhosted.org/packages/69/2d/d83dd6d7ca929a2fc67d2c3005415cdf322af7751d773524809f9e585129/pyzmq-27.1.0-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d54530c8c8b5b8ddb3318f481297441af102517602b569146185fa10b63f4fa9", size = 660469, upload-time = "2025-09-08T23:08:27.623Z" }, + { url = "https://files.pythonhosted.org/packages/3e/cd/9822a7af117f4bc0f1952dbe9ef8358eb50a24928efd5edf54210b850259/pyzmq-27.1.0-cp313-cp313t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6f3afa12c392f0a44a2414056d730eebc33ec0926aae92b5ad5cf26ebb6cc128", size = 847961, upload-time = "2025-09-08T23:08:29.672Z" }, + { url = "https://files.pythonhosted.org/packages/9a/12/f003e824a19ed73be15542f172fd0ec4ad0b60cf37436652c93b9df7c585/pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c65047adafe573ff023b3187bb93faa583151627bc9c51fc4fb2c561ed689d39", size = 1650282, upload-time = "2025-09-08T23:08:31.349Z" }, + { url = "https://files.pythonhosted.org/packages/d5/4a/e82d788ed58e9a23995cee70dbc20c9aded3d13a92d30d57ec2291f1e8a3/pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:90e6e9441c946a8b0a667356f7078d96411391a3b8f80980315455574177ec97", size = 2024468, upload-time = "2025-09-08T23:08:33.543Z" }, + { url = "https://files.pythonhosted.org/packages/d9/94/2da0a60841f757481e402b34bf4c8bf57fa54a5466b965de791b1e6f747d/pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:add071b2d25f84e8189aaf0882d39a285b42fa3853016ebab234a5e78c7a43db", size = 1885394, upload-time = "2025-09-08T23:08:35.51Z" }, + { url = "https://files.pythonhosted.org/packages/4f/6f/55c10e2e49ad52d080dc24e37adb215e5b0d64990b57598abc2e3f01725b/pyzmq-27.1.0-cp313-cp313t-win32.whl", hash = "sha256:7ccc0700cfdf7bd487bea8d850ec38f204478681ea02a582a8da8171b7f90a1c", size = 574964, upload-time = "2025-09-08T23:08:37.178Z" }, + { url = "https://files.pythonhosted.org/packages/87/4d/2534970ba63dd7c522d8ca80fb92777f362c0f321900667c615e2067cb29/pyzmq-27.1.0-cp313-cp313t-win_amd64.whl", hash = "sha256:8085a9fba668216b9b4323be338ee5437a235fe275b9d1610e422ccc279733e2", size = 641029, upload-time = "2025-09-08T23:08:40.595Z" }, + { url = "https://files.pythonhosted.org/packages/f6/fa/f8aea7a28b0641f31d40dea42d7ef003fded31e184ef47db696bc74cd610/pyzmq-27.1.0-cp313-cp313t-win_arm64.whl", hash = "sha256:6bb54ca21bcfe361e445256c15eedf083f153811c37be87e0514934d6913061e", size = 561541, upload-time = "2025-09-08T23:08:42.668Z" }, + { url = "https://files.pythonhosted.org/packages/87/45/19efbb3000956e82d0331bafca5d9ac19ea2857722fa2caacefb6042f39d/pyzmq-27.1.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:ce980af330231615756acd5154f29813d553ea555485ae712c491cd483df6b7a", size = 1341197, upload-time = "2025-09-08T23:08:44.973Z" }, + { url = "https://files.pythonhosted.org/packages/48/43/d72ccdbf0d73d1343936296665826350cb1e825f92f2db9db3e61c2162a2/pyzmq-27.1.0-cp314-cp314t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1779be8c549e54a1c38f805e56d2a2e5c009d26de10921d7d51cfd1c8d4632ea", size = 897175, upload-time = "2025-09-08T23:08:46.601Z" }, + { url = "https://files.pythonhosted.org/packages/2f/2e/a483f73a10b65a9ef0161e817321d39a770b2acf8bcf3004a28d90d14a94/pyzmq-27.1.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7200bb0f03345515df50d99d3db206a0a6bee1955fbb8c453c76f5bf0e08fb96", size = 660427, upload-time = "2025-09-08T23:08:48.187Z" }, + { url = "https://files.pythonhosted.org/packages/f5/d2/5f36552c2d3e5685abe60dfa56f91169f7a2d99bbaf67c5271022ab40863/pyzmq-27.1.0-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01c0e07d558b06a60773744ea6251f769cd79a41a97d11b8bf4ab8f034b0424d", size = 847929, upload-time = "2025-09-08T23:08:49.76Z" }, + { url = "https://files.pythonhosted.org/packages/c4/2a/404b331f2b7bf3198e9945f75c4c521f0c6a3a23b51f7a4a401b94a13833/pyzmq-27.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:80d834abee71f65253c91540445d37c4c561e293ba6e741b992f20a105d69146", size = 1650193, upload-time = "2025-09-08T23:08:51.7Z" }, + { url = "https://files.pythonhosted.org/packages/1c/0b/f4107e33f62a5acf60e3ded67ed33d79b4ce18de432625ce2fc5093d6388/pyzmq-27.1.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:544b4e3b7198dde4a62b8ff6685e9802a9a1ebf47e77478a5eb88eca2a82f2fd", size = 2024388, upload-time = "2025-09-08T23:08:53.393Z" }, + { url = "https://files.pythonhosted.org/packages/0d/01/add31fe76512642fd6e40e3a3bd21f4b47e242c8ba33efb6809e37076d9b/pyzmq-27.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:cedc4c68178e59a4046f97eca31b148ddcf51e88677de1ef4e78cf06c5376c9a", size = 1885316, upload-time = "2025-09-08T23:08:55.702Z" }, + { url = "https://files.pythonhosted.org/packages/c4/59/a5f38970f9bf07cee96128de79590bb354917914a9be11272cfc7ff26af0/pyzmq-27.1.0-cp314-cp314t-win32.whl", hash = "sha256:1f0b2a577fd770aa6f053211a55d1c47901f4d537389a034c690291485e5fe92", size = 587472, upload-time = "2025-09-08T23:08:58.18Z" }, + { url = "https://files.pythonhosted.org/packages/70/d8/78b1bad170f93fcf5e3536e70e8fadac55030002275c9a29e8f5719185de/pyzmq-27.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:19c9468ae0437f8074af379e986c5d3d7d7bfe033506af442e8c879732bedbe0", size = 661401, upload-time = "2025-09-08T23:08:59.802Z" }, + { url = "https://files.pythonhosted.org/packages/81/d6/4bfbb40c9a0b42fc53c7cf442f6385db70b40f74a783130c5d0a5aa62228/pyzmq-27.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:dc5dbf68a7857b59473f7df42650c621d7e8923fb03fa74a526890f4d33cc4d7", size = 575170, upload-time = "2025-09-08T23:09:01.418Z" }, + { url = "https://files.pythonhosted.org/packages/f3/81/a65e71c1552f74dec9dff91d95bafb6e0d33338a8dfefbc88aa562a20c92/pyzmq-27.1.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c17e03cbc9312bee223864f1a2b13a99522e0dc9f7c5df0177cd45210ac286e6", size = 836266, upload-time = "2025-09-08T23:09:40.048Z" }, + { url = "https://files.pythonhosted.org/packages/58/ed/0202ca350f4f2b69faa95c6d931e3c05c3a397c184cacb84cb4f8f42f287/pyzmq-27.1.0-pp310-pypy310_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:f328d01128373cb6763823b2b4e7f73bdf767834268c565151eacb3b7a392f90", size = 800206, upload-time = "2025-09-08T23:09:41.902Z" }, + { url = "https://files.pythonhosted.org/packages/47/42/1ff831fa87fe8f0a840ddb399054ca0009605d820e2b44ea43114f5459f4/pyzmq-27.1.0-pp310-pypy310_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9c1790386614232e1b3a40a958454bdd42c6d1811837b15ddbb052a032a43f62", size = 567747, upload-time = "2025-09-08T23:09:43.741Z" }, + { url = "https://files.pythonhosted.org/packages/d1/db/5c4d6807434751e3f21231bee98109aa57b9b9b55e058e450d0aef59b70f/pyzmq-27.1.0-pp310-pypy310_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:448f9cb54eb0cee4732b46584f2710c8bc178b0e5371d9e4fc8125201e413a74", size = 747371, upload-time = "2025-09-08T23:09:45.575Z" }, + { url = "https://files.pythonhosted.org/packages/26/af/78ce193dbf03567eb8c0dc30e3df2b9e56f12a670bf7eb20f9fb532c7e8a/pyzmq-27.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:05b12f2d32112bf8c95ef2e74ec4f1d4beb01f8b5e703b38537f8849f92cb9ba", size = 544862, upload-time = "2025-09-08T23:09:47.448Z" }, + { url = "https://files.pythonhosted.org/packages/4c/c6/c4dcdecdbaa70969ee1fdced6d7b8f60cfabe64d25361f27ac4665a70620/pyzmq-27.1.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:18770c8d3563715387139060d37859c02ce40718d1faf299abddcdcc6a649066", size = 836265, upload-time = "2025-09-08T23:09:49.376Z" }, + { url = "https://files.pythonhosted.org/packages/3e/79/f38c92eeaeb03a2ccc2ba9866f0439593bb08c5e3b714ac1d553e5c96e25/pyzmq-27.1.0-pp311-pypy311_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:ac25465d42f92e990f8d8b0546b01c391ad431c3bf447683fdc40565941d0604", size = 800208, upload-time = "2025-09-08T23:09:51.073Z" }, + { url = "https://files.pythonhosted.org/packages/49/0e/3f0d0d335c6b3abb9b7b723776d0b21fa7f3a6c819a0db6097059aada160/pyzmq-27.1.0-pp311-pypy311_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53b40f8ae006f2734ee7608d59ed661419f087521edbfc2149c3932e9c14808c", size = 567747, upload-time = "2025-09-08T23:09:52.698Z" }, + { url = "https://files.pythonhosted.org/packages/a1/cf/f2b3784d536250ffd4be70e049f3b60981235d70c6e8ce7e3ef21e1adb25/pyzmq-27.1.0-pp311-pypy311_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f605d884e7c8be8fe1aa94e0a783bf3f591b84c24e4bc4f3e7564c82ac25e271", size = 747371, upload-time = "2025-09-08T23:09:54.563Z" }, + { url = "https://files.pythonhosted.org/packages/01/1b/5dbe84eefc86f48473947e2f41711aded97eecef1231f4558f1f02713c12/pyzmq-27.1.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:c9f7f6e13dff2e44a6afeaf2cf54cee5929ad64afaf4d40b50f93c58fc687355", size = 544862, upload-time = "2025-09-08T23:09:56.509Z" }, +] + +[[package]] +name = "readme-renderer" +version = "43.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "docutils" }, + { name = "nh3" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fe/b5/536c775084d239df6345dccf9b043419c7e3308bc31be4c7882196abc62e/readme_renderer-43.0.tar.gz", hash = "sha256:1818dd28140813509eeed8d62687f7cd4f7bad90d4db586001c5dc09d4fde311", size = 31768, upload-time = "2024-02-26T16:10:59.415Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/45/be/3ea20dc38b9db08387cf97997a85a7d51527ea2057d71118feb0aa8afa55/readme_renderer-43.0-py3-none-any.whl", hash = "sha256:19db308d86ecd60e5affa3b2a98f017af384678c63c88e5d4556a380e674f3f9", size = 13301, upload-time = "2024-02-26T16:10:57.945Z" }, +] + +[[package]] +name = "referencing" +version = "0.37.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "rpds-py", version = "0.30.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "rpds-py", version = "2026.5.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "typing-extensions", marker = "python_full_version < '3.13' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/22/f5/df4e9027acead3ecc63e50fe1e36aca1523e1719559c499951bb4b53188f/referencing-0.37.0.tar.gz", hash = "sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8", size = 78036, upload-time = "2025-10-13T15:30:48.871Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl", hash = "sha256:381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231", size = 26766, upload-time = "2025-10-13T15:30:47.625Z" }, +] + +[[package]] +name = "requests" +version = "2.34.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ac/c3/e2a2b89f2d3e2179abd6d00ebd70bff6273f37fb3e0cc209f48b39d00cbf/requests-2.34.2.tar.gz", hash = "sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed", size = 142856, upload-time = "2026-05-14T19:25:27.735Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl", hash = "sha256:2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0", size = 73075, upload-time = "2026-05-14T19:25:26.443Z" }, +] + +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f3/61/d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb/requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6", size = 206888, upload-time = "2023-05-01T04:11:33.229Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06", size = 54481, upload-time = "2023-05-01T04:11:28.427Z" }, +] + +[[package]] +name = "rfc3986" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/85/40/1520d68bfa07ab5a6f065a186815fb6610c86fe957bc065754e47f7b0840/rfc3986-2.0.0.tar.gz", hash = "sha256:97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c", size = 49026, upload-time = "2022-01-10T00:52:30.832Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl", hash = "sha256:50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd", size = 31326, upload-time = "2022-01-10T00:52:29.594Z" }, +] + +[[package]] +name = "rich" +version = "15.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c0/8f/0722ca900cc807c13a6a0c696dacf35430f72e0ec571c4275d2371fca3e9/rich-15.0.0.tar.gz", hash = "sha256:edd07a4824c6b40189fb7ac9bc4c52536e9780fbbfbddf6f1e2502c31b068c36", size = 230680, upload-time = "2026-04-12T08:24:00.75Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/82/3b/64d4899d73f91ba49a8c18a8ff3f0ea8f1c1d75481760df8c68ef5235bf5/rich-15.0.0-py3-none-any.whl", hash = "sha256:33bd4ef74232fb73fe9279a257718407f169c09b78a87ad3d296f548e27de0bb", size = 310654, upload-time = "2026-04-12T08:24:02.83Z" }, +] + +[[package]] +name = "rpds-py" +version = "0.30.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130'", + "python_full_version < '3.11' and extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version < '3.11' and sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version < '3.11' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", +] +sdist = { url = "https://files.pythonhosted.org/packages/20/af/3f2f423103f1113b36230496629986e0ef7e199d2aa8392452b484b38ced/rpds_py-0.30.0.tar.gz", hash = "sha256:dd8ff7cf90014af0c0f787eea34794ebf6415242ee1d6fa91eaba725cc441e84", size = 69469, upload-time = "2025-11-30T20:24:38.837Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/06/0c/0c411a0ec64ccb6d104dcabe0e713e05e153a9a2c3c2bd2b32ce412166fe/rpds_py-0.30.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:679ae98e00c0e8d68a7fda324e16b90fd5260945b45d3b824c892cec9eea3288", size = 370490, upload-time = "2025-11-30T20:21:33.256Z" }, + { url = "https://files.pythonhosted.org/packages/19/6a/4ba3d0fb7297ebae71171822554abe48d7cab29c28b8f9f2c04b79988c05/rpds_py-0.30.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4cc2206b76b4f576934f0ed374b10d7ca5f457858b157ca52064bdfc26b9fc00", size = 359751, upload-time = "2025-11-30T20:21:34.591Z" }, + { url = "https://files.pythonhosted.org/packages/cd/7c/e4933565ef7f7a0818985d87c15d9d273f1a649afa6a52ea35ad011195ea/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:389a2d49eded1896c3d48b0136ead37c48e221b391c052fba3f4055c367f60a6", size = 389696, upload-time = "2025-11-30T20:21:36.122Z" }, + { url = "https://files.pythonhosted.org/packages/5e/01/6271a2511ad0815f00f7ed4390cf2567bec1d4b1da39e2c27a41e6e3b4de/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:32c8528634e1bf7121f3de08fa85b138f4e0dc47657866630611b03967f041d7", size = 403136, upload-time = "2025-11-30T20:21:37.728Z" }, + { url = "https://files.pythonhosted.org/packages/55/64/c857eb7cd7541e9b4eee9d49c196e833128a55b89a9850a9c9ac33ccf897/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f207f69853edd6f6700b86efb84999651baf3789e78a466431df1331608e5324", size = 524699, upload-time = "2025-11-30T20:21:38.92Z" }, + { url = "https://files.pythonhosted.org/packages/9c/ed/94816543404078af9ab26159c44f9e98e20fe47e2126d5d32c9d9948d10a/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:67b02ec25ba7a9e8fa74c63b6ca44cf5707f2fbfadae3ee8e7494297d56aa9df", size = 412022, upload-time = "2025-11-30T20:21:40.407Z" }, + { url = "https://files.pythonhosted.org/packages/61/b5/707f6cf0066a6412aacc11d17920ea2e19e5b2f04081c64526eb35b5c6e7/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c0e95f6819a19965ff420f65578bacb0b00f251fefe2c8b23347c37174271f3", size = 390522, upload-time = "2025-11-30T20:21:42.17Z" }, + { url = "https://files.pythonhosted.org/packages/13/4e/57a85fda37a229ff4226f8cbcf09f2a455d1ed20e802ce5b2b4a7f5ed053/rpds_py-0.30.0-cp310-cp310-manylinux_2_31_riscv64.whl", hash = "sha256:a452763cc5198f2f98898eb98f7569649fe5da666c2dc6b5ddb10fde5a574221", size = 404579, upload-time = "2025-11-30T20:21:43.769Z" }, + { url = "https://files.pythonhosted.org/packages/f9/da/c9339293513ec680a721e0e16bf2bac3db6e5d7e922488de471308349bba/rpds_py-0.30.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e0b65193a413ccc930671c55153a03ee57cecb49e6227204b04fae512eb657a7", size = 421305, upload-time = "2025-11-30T20:21:44.994Z" }, + { url = "https://files.pythonhosted.org/packages/f9/be/522cb84751114f4ad9d822ff5a1aa3c98006341895d5f084779b99596e5c/rpds_py-0.30.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:858738e9c32147f78b3ac24dc0edb6610000e56dc0f700fd5f651d0a0f0eb9ff", size = 572503, upload-time = "2025-11-30T20:21:46.91Z" }, + { url = "https://files.pythonhosted.org/packages/a2/9b/de879f7e7ceddc973ea6e4629e9b380213a6938a249e94b0cdbcc325bb66/rpds_py-0.30.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:da279aa314f00acbb803da1e76fa18666778e8a8f83484fba94526da5de2cba7", size = 598322, upload-time = "2025-11-30T20:21:48.709Z" }, + { url = "https://files.pythonhosted.org/packages/48/ac/f01fc22efec3f37d8a914fc1b2fb9bcafd56a299edbe96406f3053edea5a/rpds_py-0.30.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7c64d38fb49b6cdeda16ab49e35fe0da2e1e9b34bc38bd78386530f218b37139", size = 560792, upload-time = "2025-11-30T20:21:50.024Z" }, + { url = "https://files.pythonhosted.org/packages/e2/da/4e2b19d0f131f35b6146425f846563d0ce036763e38913d917187307a671/rpds_py-0.30.0-cp310-cp310-win32.whl", hash = "sha256:6de2a32a1665b93233cde140ff8b3467bdb9e2af2b91079f0333a0974d12d464", size = 221901, upload-time = "2025-11-30T20:21:51.32Z" }, + { url = "https://files.pythonhosted.org/packages/96/cb/156d7a5cf4f78a7cc571465d8aec7a3c447c94f6749c5123f08438bcf7bc/rpds_py-0.30.0-cp310-cp310-win_amd64.whl", hash = "sha256:1726859cd0de969f88dc8673bdd954185b9104e05806be64bcd87badbe313169", size = 235823, upload-time = "2025-11-30T20:21:52.505Z" }, + { url = "https://files.pythonhosted.org/packages/4d/6e/f964e88b3d2abee2a82c1ac8366da848fce1c6d834dc2132c3fda3970290/rpds_py-0.30.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:a2bffea6a4ca9f01b3f8e548302470306689684e61602aa3d141e34da06cf425", size = 370157, upload-time = "2025-11-30T20:21:53.789Z" }, + { url = "https://files.pythonhosted.org/packages/94/ba/24e5ebb7c1c82e74c4e4f33b2112a5573ddc703915b13a073737b59b86e0/rpds_py-0.30.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dc4f992dfe1e2bc3ebc7444f6c7051b4bc13cd8e33e43511e8ffd13bf407010d", size = 359676, upload-time = "2025-11-30T20:21:55.475Z" }, + { url = "https://files.pythonhosted.org/packages/84/86/04dbba1b087227747d64d80c3b74df946b986c57af0a9f0c98726d4d7a3b/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:422c3cb9856d80b09d30d2eb255d0754b23e090034e1deb4083f8004bd0761e4", size = 389938, upload-time = "2025-11-30T20:21:57.079Z" }, + { url = "https://files.pythonhosted.org/packages/42/bb/1463f0b1722b7f45431bdd468301991d1328b16cffe0b1c2918eba2c4eee/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:07ae8a593e1c3c6b82ca3292efbe73c30b61332fd612e05abee07c79359f292f", size = 402932, upload-time = "2025-11-30T20:21:58.47Z" }, + { url = "https://files.pythonhosted.org/packages/99/ee/2520700a5c1f2d76631f948b0736cdf9b0acb25abd0ca8e889b5c62ac2e3/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:12f90dd7557b6bd57f40abe7747e81e0c0b119bef015ea7726e69fe550e394a4", size = 525830, upload-time = "2025-11-30T20:21:59.699Z" }, + { url = "https://files.pythonhosted.org/packages/e0/ad/bd0331f740f5705cc555a5e17fdf334671262160270962e69a2bdef3bf76/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:99b47d6ad9a6da00bec6aabe5a6279ecd3c06a329d4aa4771034a21e335c3a97", size = 412033, upload-time = "2025-11-30T20:22:00.991Z" }, + { url = "https://files.pythonhosted.org/packages/f8/1e/372195d326549bb51f0ba0f2ecb9874579906b97e08880e7a65c3bef1a99/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33f559f3104504506a44bb666b93a33f5d33133765b0c216a5bf2f1e1503af89", size = 390828, upload-time = "2025-11-30T20:22:02.723Z" }, + { url = "https://files.pythonhosted.org/packages/ab/2b/d88bb33294e3e0c76bc8f351a3721212713629ffca1700fa94979cb3eae8/rpds_py-0.30.0-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:946fe926af6e44f3697abbc305ea168c2c31d3e3ef1058cf68f379bf0335a78d", size = 404683, upload-time = "2025-11-30T20:22:04.367Z" }, + { url = "https://files.pythonhosted.org/packages/50/32/c759a8d42bcb5289c1fac697cd92f6fe01a018dd937e62ae77e0e7f15702/rpds_py-0.30.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:495aeca4b93d465efde585977365187149e75383ad2684f81519f504f5c13038", size = 421583, upload-time = "2025-11-30T20:22:05.814Z" }, + { url = "https://files.pythonhosted.org/packages/2b/81/e729761dbd55ddf5d84ec4ff1f47857f4374b0f19bdabfcf929164da3e24/rpds_py-0.30.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d9a0ca5da0386dee0655b4ccdf46119df60e0f10da268d04fe7cc87886872ba7", size = 572496, upload-time = "2025-11-30T20:22:07.713Z" }, + { url = "https://files.pythonhosted.org/packages/14/f6/69066a924c3557c9c30baa6ec3a0aa07526305684c6f86c696b08860726c/rpds_py-0.30.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8d6d1cc13664ec13c1b84241204ff3b12f9bb82464b8ad6e7a5d3486975c2eed", size = 598669, upload-time = "2025-11-30T20:22:09.312Z" }, + { url = "https://files.pythonhosted.org/packages/5f/48/905896b1eb8a05630d20333d1d8ffd162394127b74ce0b0784ae04498d32/rpds_py-0.30.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3896fa1be39912cf0757753826bc8bdc8ca331a28a7c4ae46b7a21280b06bb85", size = 561011, upload-time = "2025-11-30T20:22:11.309Z" }, + { url = "https://files.pythonhosted.org/packages/22/16/cd3027c7e279d22e5eb431dd3c0fbc677bed58797fe7581e148f3f68818b/rpds_py-0.30.0-cp311-cp311-win32.whl", hash = "sha256:55f66022632205940f1827effeff17c4fa7ae1953d2b74a8581baaefb7d16f8c", size = 221406, upload-time = "2025-11-30T20:22:13.101Z" }, + { url = "https://files.pythonhosted.org/packages/fa/5b/e7b7aa136f28462b344e652ee010d4de26ee9fd16f1bfd5811f5153ccf89/rpds_py-0.30.0-cp311-cp311-win_amd64.whl", hash = "sha256:a51033ff701fca756439d641c0ad09a41d9242fa69121c7d8769604a0a629825", size = 236024, upload-time = "2025-11-30T20:22:14.853Z" }, + { url = "https://files.pythonhosted.org/packages/14/a6/364bba985e4c13658edb156640608f2c9e1d3ea3c81b27aa9d889fff0e31/rpds_py-0.30.0-cp311-cp311-win_arm64.whl", hash = "sha256:47b0ef6231c58f506ef0b74d44e330405caa8428e770fec25329ed2cb971a229", size = 229069, upload-time = "2025-11-30T20:22:16.577Z" }, + { url = "https://files.pythonhosted.org/packages/03/e7/98a2f4ac921d82f33e03f3835f5bf3a4a40aa1bfdc57975e74a97b2b4bdd/rpds_py-0.30.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a161f20d9a43006833cd7068375a94d035714d73a172b681d8881820600abfad", size = 375086, upload-time = "2025-11-30T20:22:17.93Z" }, + { url = "https://files.pythonhosted.org/packages/4d/a1/bca7fd3d452b272e13335db8d6b0b3ecde0f90ad6f16f3328c6fb150c889/rpds_py-0.30.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6abc8880d9d036ecaafe709079969f56e876fcf107f7a8e9920ba6d5a3878d05", size = 359053, upload-time = "2025-11-30T20:22:19.297Z" }, + { url = "https://files.pythonhosted.org/packages/65/1c/ae157e83a6357eceff62ba7e52113e3ec4834a84cfe07fa4b0757a7d105f/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca28829ae5f5d569bb62a79512c842a03a12576375d5ece7d2cadf8abe96ec28", size = 390763, upload-time = "2025-11-30T20:22:21.661Z" }, + { url = "https://files.pythonhosted.org/packages/d4/36/eb2eb8515e2ad24c0bd43c3ee9cd74c33f7ca6430755ccdb240fd3144c44/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a1010ed9524c73b94d15919ca4d41d8780980e1765babf85f9a2f90d247153dd", size = 408951, upload-time = "2025-11-30T20:22:23.408Z" }, + { url = "https://files.pythonhosted.org/packages/d6/65/ad8dc1784a331fabbd740ef6f71ce2198c7ed0890dab595adb9ea2d775a1/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f8d1736cfb49381ba528cd5baa46f82fdc65c06e843dab24dd70b63d09121b3f", size = 514622, upload-time = "2025-11-30T20:22:25.16Z" }, + { url = "https://files.pythonhosted.org/packages/63/8e/0cfa7ae158e15e143fe03993b5bcd743a59f541f5952e1546b1ac1b5fd45/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d948b135c4693daff7bc2dcfc4ec57237a29bd37e60c2fabf5aff2bbacf3e2f1", size = 414492, upload-time = "2025-11-30T20:22:26.505Z" }, + { url = "https://files.pythonhosted.org/packages/60/1b/6f8f29f3f995c7ffdde46a626ddccd7c63aefc0efae881dc13b6e5d5bb16/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47f236970bccb2233267d89173d3ad2703cd36a0e2a6e92d0560d333871a3d23", size = 394080, upload-time = "2025-11-30T20:22:27.934Z" }, + { url = "https://files.pythonhosted.org/packages/6d/d5/a266341051a7a3ca2f4b750a3aa4abc986378431fc2da508c5034d081b70/rpds_py-0.30.0-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:2e6ecb5a5bcacf59c3f912155044479af1d0b6681280048b338b28e364aca1f6", size = 408680, upload-time = "2025-11-30T20:22:29.341Z" }, + { url = "https://files.pythonhosted.org/packages/10/3b/71b725851df9ab7a7a4e33cf36d241933da66040d195a84781f49c50490c/rpds_py-0.30.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a8fa71a2e078c527c3e9dc9fc5a98c9db40bcc8a92b4e8858e36d329f8684b51", size = 423589, upload-time = "2025-11-30T20:22:31.469Z" }, + { url = "https://files.pythonhosted.org/packages/00/2b/e59e58c544dc9bd8bd8384ecdb8ea91f6727f0e37a7131baeff8d6f51661/rpds_py-0.30.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:73c67f2db7bc334e518d097c6d1e6fed021bbc9b7d678d6cc433478365d1d5f5", size = 573289, upload-time = "2025-11-30T20:22:32.997Z" }, + { url = "https://files.pythonhosted.org/packages/da/3e/a18e6f5b460893172a7d6a680e86d3b6bc87a54c1f0b03446a3c8c7b588f/rpds_py-0.30.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5ba103fb455be00f3b1c2076c9d4264bfcb037c976167a6047ed82f23153f02e", size = 599737, upload-time = "2025-11-30T20:22:34.419Z" }, + { url = "https://files.pythonhosted.org/packages/5c/e2/714694e4b87b85a18e2c243614974413c60aa107fd815b8cbc42b873d1d7/rpds_py-0.30.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7cee9c752c0364588353e627da8a7e808a66873672bcb5f52890c33fd965b394", size = 563120, upload-time = "2025-11-30T20:22:35.903Z" }, + { url = "https://files.pythonhosted.org/packages/6f/ab/d5d5e3bcedb0a77f4f613706b750e50a5a3ba1c15ccd3665ecc636c968fd/rpds_py-0.30.0-cp312-cp312-win32.whl", hash = "sha256:1ab5b83dbcf55acc8b08fc62b796ef672c457b17dbd7820a11d6c52c06839bdf", size = 223782, upload-time = "2025-11-30T20:22:37.271Z" }, + { url = "https://files.pythonhosted.org/packages/39/3b/f786af9957306fdc38a74cef405b7b93180f481fb48453a114bb6465744a/rpds_py-0.30.0-cp312-cp312-win_amd64.whl", hash = "sha256:a090322ca841abd453d43456ac34db46e8b05fd9b3b4ac0c78bcde8b089f959b", size = 240463, upload-time = "2025-11-30T20:22:39.021Z" }, + { url = "https://files.pythonhosted.org/packages/f3/d2/b91dc748126c1559042cfe41990deb92c4ee3e2b415f6b5234969ffaf0cc/rpds_py-0.30.0-cp312-cp312-win_arm64.whl", hash = "sha256:669b1805bd639dd2989b281be2cfd951c6121b65e729d9b843e9639ef1fd555e", size = 230868, upload-time = "2025-11-30T20:22:40.493Z" }, + { url = "https://files.pythonhosted.org/packages/ed/dc/d61221eb88ff410de3c49143407f6f3147acf2538c86f2ab7ce65ae7d5f9/rpds_py-0.30.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:f83424d738204d9770830d35290ff3273fbb02b41f919870479fab14b9d303b2", size = 374887, upload-time = "2025-11-30T20:22:41.812Z" }, + { url = "https://files.pythonhosted.org/packages/fd/32/55fb50ae104061dbc564ef15cc43c013dc4a9f4527a1f4d99baddf56fe5f/rpds_py-0.30.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e7536cd91353c5273434b4e003cbda89034d67e7710eab8761fd918ec6c69cf8", size = 358904, upload-time = "2025-11-30T20:22:43.479Z" }, + { url = "https://files.pythonhosted.org/packages/58/70/faed8186300e3b9bdd138d0273109784eea2396c68458ed580f885dfe7ad/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2771c6c15973347f50fece41fc447c054b7ac2ae0502388ce3b6738cd366e3d4", size = 389945, upload-time = "2025-11-30T20:22:44.819Z" }, + { url = "https://files.pythonhosted.org/packages/bd/a8/073cac3ed2c6387df38f71296d002ab43496a96b92c823e76f46b8af0543/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0a59119fc6e3f460315fe9d08149f8102aa322299deaa5cab5b40092345c2136", size = 407783, upload-time = "2025-11-30T20:22:46.103Z" }, + { url = "https://files.pythonhosted.org/packages/77/57/5999eb8c58671f1c11eba084115e77a8899d6e694d2a18f69f0ba471ec8b/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:76fec018282b4ead0364022e3c54b60bf368b9d926877957a8624b58419169b7", size = 515021, upload-time = "2025-11-30T20:22:47.458Z" }, + { url = "https://files.pythonhosted.org/packages/e0/af/5ab4833eadc36c0a8ed2bc5c0de0493c04f6c06de223170bd0798ff98ced/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:692bef75a5525db97318e8cd061542b5a79812d711ea03dbc1f6f8dbb0c5f0d2", size = 414589, upload-time = "2025-11-30T20:22:48.872Z" }, + { url = "https://files.pythonhosted.org/packages/b7/de/f7192e12b21b9e9a68a6d0f249b4af3fdcdff8418be0767a627564afa1f1/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9027da1ce107104c50c81383cae773ef5c24d296dd11c99e2629dbd7967a20c6", size = 394025, upload-time = "2025-11-30T20:22:50.196Z" }, + { url = "https://files.pythonhosted.org/packages/91/c4/fc70cd0249496493500e7cc2de87504f5aa6509de1e88623431fec76d4b6/rpds_py-0.30.0-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:9cf69cdda1f5968a30a359aba2f7f9aa648a9ce4b580d6826437f2b291cfc86e", size = 408895, upload-time = "2025-11-30T20:22:51.87Z" }, + { url = "https://files.pythonhosted.org/packages/58/95/d9275b05ab96556fefff73a385813eb66032e4c99f411d0795372d9abcea/rpds_py-0.30.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a4796a717bf12b9da9d3ad002519a86063dcac8988b030e405704ef7d74d2d9d", size = 422799, upload-time = "2025-11-30T20:22:53.341Z" }, + { url = "https://files.pythonhosted.org/packages/06/c1/3088fc04b6624eb12a57eb814f0d4997a44b0d208d6cace713033ff1a6ba/rpds_py-0.30.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5d4c2aa7c50ad4728a094ebd5eb46c452e9cb7edbfdb18f9e1221f597a73e1e7", size = 572731, upload-time = "2025-11-30T20:22:54.778Z" }, + { url = "https://files.pythonhosted.org/packages/d8/42/c612a833183b39774e8ac8fecae81263a68b9583ee343db33ab571a7ce55/rpds_py-0.30.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ba81a9203d07805435eb06f536d95a266c21e5b2dfbf6517748ca40c98d19e31", size = 599027, upload-time = "2025-11-30T20:22:56.212Z" }, + { url = "https://files.pythonhosted.org/packages/5f/60/525a50f45b01d70005403ae0e25f43c0384369ad24ffe46e8d9068b50086/rpds_py-0.30.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:945dccface01af02675628334f7cf49c2af4c1c904748efc5cf7bbdf0b579f95", size = 563020, upload-time = "2025-11-30T20:22:58.2Z" }, + { url = "https://files.pythonhosted.org/packages/0b/5d/47c4655e9bcd5ca907148535c10e7d489044243cc9941c16ed7cd53be91d/rpds_py-0.30.0-cp313-cp313-win32.whl", hash = "sha256:b40fb160a2db369a194cb27943582b38f79fc4887291417685f3ad693c5a1d5d", size = 223139, upload-time = "2025-11-30T20:23:00.209Z" }, + { url = "https://files.pythonhosted.org/packages/f2/e1/485132437d20aa4d3e1d8b3fb5a5e65aa8139f1e097080c2a8443201742c/rpds_py-0.30.0-cp313-cp313-win_amd64.whl", hash = "sha256:806f36b1b605e2d6a72716f321f20036b9489d29c51c91f4dd29a3e3afb73b15", size = 240224, upload-time = "2025-11-30T20:23:02.008Z" }, + { url = "https://files.pythonhosted.org/packages/24/95/ffd128ed1146a153d928617b0ef673960130be0009c77d8fbf0abe306713/rpds_py-0.30.0-cp313-cp313-win_arm64.whl", hash = "sha256:d96c2086587c7c30d44f31f42eae4eac89b60dabbac18c7669be3700f13c3ce1", size = 230645, upload-time = "2025-11-30T20:23:03.43Z" }, + { url = "https://files.pythonhosted.org/packages/ff/1b/b10de890a0def2a319a2626334a7f0ae388215eb60914dbac8a3bae54435/rpds_py-0.30.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:eb0b93f2e5c2189ee831ee43f156ed34e2a89a78a66b98cadad955972548be5a", size = 364443, upload-time = "2025-11-30T20:23:04.878Z" }, + { url = "https://files.pythonhosted.org/packages/0d/bf/27e39f5971dc4f305a4fb9c672ca06f290f7c4e261c568f3dea16a410d47/rpds_py-0.30.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:922e10f31f303c7c920da8981051ff6d8c1a56207dbdf330d9047f6d30b70e5e", size = 353375, upload-time = "2025-11-30T20:23:06.342Z" }, + { url = "https://files.pythonhosted.org/packages/40/58/442ada3bba6e8e6615fc00483135c14a7538d2ffac30e2d933ccf6852232/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdc62c8286ba9bf7f47befdcea13ea0e26bf294bda99758fd90535cbaf408000", size = 383850, upload-time = "2025-11-30T20:23:07.825Z" }, + { url = "https://files.pythonhosted.org/packages/14/14/f59b0127409a33c6ef6f5c1ebd5ad8e32d7861c9c7adfa9a624fc3889f6c/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:47f9a91efc418b54fb8190a6b4aa7813a23fb79c51f4bb84e418f5476c38b8db", size = 392812, upload-time = "2025-11-30T20:23:09.228Z" }, + { url = "https://files.pythonhosted.org/packages/b3/66/e0be3e162ac299b3a22527e8913767d869e6cc75c46bd844aa43fb81ab62/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f3587eb9b17f3789ad50824084fa6f81921bbf9a795826570bda82cb3ed91f2", size = 517841, upload-time = "2025-11-30T20:23:11.186Z" }, + { url = "https://files.pythonhosted.org/packages/3d/55/fa3b9cf31d0c963ecf1ba777f7cf4b2a2c976795ac430d24a1f43d25a6ba/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39c02563fc592411c2c61d26b6c5fe1e51eaa44a75aa2c8735ca88b0d9599daa", size = 408149, upload-time = "2025-11-30T20:23:12.864Z" }, + { url = "https://files.pythonhosted.org/packages/60/ca/780cf3b1a32b18c0f05c441958d3758f02544f1d613abf9488cd78876378/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51a1234d8febafdfd33a42d97da7a43f5dcb120c1060e352a3fbc0c6d36e2083", size = 383843, upload-time = "2025-11-30T20:23:14.638Z" }, + { url = "https://files.pythonhosted.org/packages/82/86/d5f2e04f2aa6247c613da0c1dd87fcd08fa17107e858193566048a1e2f0a/rpds_py-0.30.0-cp313-cp313t-manylinux_2_31_riscv64.whl", hash = "sha256:eb2c4071ab598733724c08221091e8d80e89064cd472819285a9ab0f24bcedb9", size = 396507, upload-time = "2025-11-30T20:23:16.105Z" }, + { url = "https://files.pythonhosted.org/packages/4b/9a/453255d2f769fe44e07ea9785c8347edaf867f7026872e76c1ad9f7bed92/rpds_py-0.30.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6bdfdb946967d816e6adf9a3d8201bfad269c67efe6cefd7093ef959683c8de0", size = 414949, upload-time = "2025-11-30T20:23:17.539Z" }, + { url = "https://files.pythonhosted.org/packages/a3/31/622a86cdc0c45d6df0e9ccb6becdba5074735e7033c20e401a6d9d0e2ca0/rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c77afbd5f5250bf27bf516c7c4a016813eb2d3e116139aed0096940c5982da94", size = 565790, upload-time = "2025-11-30T20:23:19.029Z" }, + { url = "https://files.pythonhosted.org/packages/1c/5d/15bbf0fb4a3f58a3b1c67855ec1efcc4ceaef4e86644665fff03e1b66d8d/rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:61046904275472a76c8c90c9ccee9013d70a6d0f73eecefd38c1ae7c39045a08", size = 590217, upload-time = "2025-11-30T20:23:20.885Z" }, + { url = "https://files.pythonhosted.org/packages/6d/61/21b8c41f68e60c8cc3b2e25644f0e3681926020f11d06ab0b78e3c6bbff1/rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c5f36a861bc4b7da6516dbdf302c55313afa09b81931e8280361a4f6c9a2d27", size = 555806, upload-time = "2025-11-30T20:23:22.488Z" }, + { url = "https://files.pythonhosted.org/packages/f9/39/7e067bb06c31de48de3eb200f9fc7c58982a4d3db44b07e73963e10d3be9/rpds_py-0.30.0-cp313-cp313t-win32.whl", hash = "sha256:3d4a69de7a3e50ffc214ae16d79d8fbb0922972da0356dcf4d0fdca2878559c6", size = 211341, upload-time = "2025-11-30T20:23:24.449Z" }, + { url = "https://files.pythonhosted.org/packages/0a/4d/222ef0b46443cf4cf46764d9c630f3fe4abaa7245be9417e56e9f52b8f65/rpds_py-0.30.0-cp313-cp313t-win_amd64.whl", hash = "sha256:f14fc5df50a716f7ece6a80b6c78bb35ea2ca47c499e422aa4463455dd96d56d", size = 225768, upload-time = "2025-11-30T20:23:25.908Z" }, + { url = "https://files.pythonhosted.org/packages/86/81/dad16382ebbd3d0e0328776d8fd7ca94220e4fa0798d1dc5e7da48cb3201/rpds_py-0.30.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:68f19c879420aa08f61203801423f6cd5ac5f0ac4ac82a2368a9fcd6a9a075e0", size = 362099, upload-time = "2025-11-30T20:23:27.316Z" }, + { url = "https://files.pythonhosted.org/packages/2b/60/19f7884db5d5603edf3c6bce35408f45ad3e97e10007df0e17dd57af18f8/rpds_py-0.30.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ec7c4490c672c1a0389d319b3a9cfcd098dcdc4783991553c332a15acf7249be", size = 353192, upload-time = "2025-11-30T20:23:29.151Z" }, + { url = "https://files.pythonhosted.org/packages/bf/c4/76eb0e1e72d1a9c4703c69607cec123c29028bff28ce41588792417098ac/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f251c812357a3fed308d684a5079ddfb9d933860fc6de89f2b7ab00da481e65f", size = 384080, upload-time = "2025-11-30T20:23:30.785Z" }, + { url = "https://files.pythonhosted.org/packages/72/87/87ea665e92f3298d1b26d78814721dc39ed8d2c74b86e83348d6b48a6f31/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac98b175585ecf4c0348fd7b29c3864bda53b805c773cbf7bfdaffc8070c976f", size = 394841, upload-time = "2025-11-30T20:23:32.209Z" }, + { url = "https://files.pythonhosted.org/packages/77/ad/7783a89ca0587c15dcbf139b4a8364a872a25f861bdb88ed99f9b0dec985/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3e62880792319dbeb7eb866547f2e35973289e7d5696c6e295476448f5b63c87", size = 516670, upload-time = "2025-11-30T20:23:33.742Z" }, + { url = "https://files.pythonhosted.org/packages/5b/3c/2882bdac942bd2172f3da574eab16f309ae10a3925644e969536553cb4ee/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4e7fc54e0900ab35d041b0601431b0a0eb495f0851a0639b6ef90f7741b39a18", size = 408005, upload-time = "2025-11-30T20:23:35.253Z" }, + { url = "https://files.pythonhosted.org/packages/ce/81/9a91c0111ce1758c92516a3e44776920b579d9a7c09b2b06b642d4de3f0f/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47e77dc9822d3ad616c3d5759ea5631a75e5809d5a28707744ef79d7a1bcfcad", size = 382112, upload-time = "2025-11-30T20:23:36.842Z" }, + { url = "https://files.pythonhosted.org/packages/cf/8e/1da49d4a107027e5fbc64daeab96a0706361a2918da10cb41769244b805d/rpds_py-0.30.0-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:b4dc1a6ff022ff85ecafef7979a2c6eb423430e05f1165d6688234e62ba99a07", size = 399049, upload-time = "2025-11-30T20:23:38.343Z" }, + { url = "https://files.pythonhosted.org/packages/df/5a/7ee239b1aa48a127570ec03becbb29c9d5a9eb092febbd1699d567cae859/rpds_py-0.30.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4559c972db3a360808309e06a74628b95eaccbf961c335c8fe0d590cf587456f", size = 415661, upload-time = "2025-11-30T20:23:40.263Z" }, + { url = "https://files.pythonhosted.org/packages/70/ea/caa143cf6b772f823bc7929a45da1fa83569ee49b11d18d0ada7f5ee6fd6/rpds_py-0.30.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:0ed177ed9bded28f8deb6ab40c183cd1192aa0de40c12f38be4d59cd33cb5c65", size = 565606, upload-time = "2025-11-30T20:23:42.186Z" }, + { url = "https://files.pythonhosted.org/packages/64/91/ac20ba2d69303f961ad8cf55bf7dbdb4763f627291ba3d0d7d67333cced9/rpds_py-0.30.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:ad1fa8db769b76ea911cb4e10f049d80bf518c104f15b3edb2371cc65375c46f", size = 591126, upload-time = "2025-11-30T20:23:44.086Z" }, + { url = "https://files.pythonhosted.org/packages/21/20/7ff5f3c8b00c8a95f75985128c26ba44503fb35b8e0259d812766ea966c7/rpds_py-0.30.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:46e83c697b1f1c72b50e5ee5adb4353eef7406fb3f2043d64c33f20ad1c2fc53", size = 553371, upload-time = "2025-11-30T20:23:46.004Z" }, + { url = "https://files.pythonhosted.org/packages/72/c7/81dadd7b27c8ee391c132a6b192111ca58d866577ce2d9b0ca157552cce0/rpds_py-0.30.0-cp314-cp314-win32.whl", hash = "sha256:ee454b2a007d57363c2dfd5b6ca4a5d7e2c518938f8ed3b706e37e5d470801ed", size = 215298, upload-time = "2025-11-30T20:23:47.696Z" }, + { url = "https://files.pythonhosted.org/packages/3e/d2/1aaac33287e8cfb07aab2e6b8ac1deca62f6f65411344f1433c55e6f3eb8/rpds_py-0.30.0-cp314-cp314-win_amd64.whl", hash = "sha256:95f0802447ac2d10bcc69f6dc28fe95fdf17940367b21d34e34c737870758950", size = 228604, upload-time = "2025-11-30T20:23:49.501Z" }, + { url = "https://files.pythonhosted.org/packages/e8/95/ab005315818cc519ad074cb7784dae60d939163108bd2b394e60dc7b5461/rpds_py-0.30.0-cp314-cp314-win_arm64.whl", hash = "sha256:613aa4771c99f03346e54c3f038e4cc574ac09a3ddfb0e8878487335e96dead6", size = 222391, upload-time = "2025-11-30T20:23:50.96Z" }, + { url = "https://files.pythonhosted.org/packages/9e/68/154fe0194d83b973cdedcdcc88947a2752411165930182ae41d983dcefa6/rpds_py-0.30.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:7e6ecfcb62edfd632e56983964e6884851786443739dbfe3582947e87274f7cb", size = 364868, upload-time = "2025-11-30T20:23:52.494Z" }, + { url = "https://files.pythonhosted.org/packages/83/69/8bbc8b07ec854d92a8b75668c24d2abcb1719ebf890f5604c61c9369a16f/rpds_py-0.30.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:a1d0bc22a7cdc173fedebb73ef81e07faef93692b8c1ad3733b67e31e1b6e1b8", size = 353747, upload-time = "2025-11-30T20:23:54.036Z" }, + { url = "https://files.pythonhosted.org/packages/ab/00/ba2e50183dbd9abcce9497fa5149c62b4ff3e22d338a30d690f9af970561/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d08f00679177226c4cb8c5265012eea897c8ca3b93f429e546600c971bcbae7", size = 383795, upload-time = "2025-11-30T20:23:55.556Z" }, + { url = "https://files.pythonhosted.org/packages/05/6f/86f0272b84926bcb0e4c972262f54223e8ecc556b3224d281e6598fc9268/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5965af57d5848192c13534f90f9dd16464f3c37aaf166cc1da1cae1fd5a34898", size = 393330, upload-time = "2025-11-30T20:23:57.033Z" }, + { url = "https://files.pythonhosted.org/packages/cb/e9/0e02bb2e6dc63d212641da45df2b0bf29699d01715913e0d0f017ee29438/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9a4e86e34e9ab6b667c27f3211ca48f73dba7cd3d90f8d5b11be56e5dbc3fb4e", size = 518194, upload-time = "2025-11-30T20:23:58.637Z" }, + { url = "https://files.pythonhosted.org/packages/ee/ca/be7bca14cf21513bdf9c0606aba17d1f389ea2b6987035eb4f62bd923f25/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5d3e6b26f2c785d65cc25ef1e5267ccbe1b069c5c21b8cc724efee290554419", size = 408340, upload-time = "2025-11-30T20:24:00.2Z" }, + { url = "https://files.pythonhosted.org/packages/c2/c7/736e00ebf39ed81d75544c0da6ef7b0998f8201b369acf842f9a90dc8fce/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:626a7433c34566535b6e56a1b39a7b17ba961e97ce3b80ec62e6f1312c025551", size = 383765, upload-time = "2025-11-30T20:24:01.759Z" }, + { url = "https://files.pythonhosted.org/packages/4a/3f/da50dfde9956aaf365c4adc9533b100008ed31aea635f2b8d7b627e25b49/rpds_py-0.30.0-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:acd7eb3f4471577b9b5a41baf02a978e8bdeb08b4b355273994f8b87032000a8", size = 396834, upload-time = "2025-11-30T20:24:03.687Z" }, + { url = "https://files.pythonhosted.org/packages/4e/00/34bcc2565b6020eab2623349efbdec810676ad571995911f1abdae62a3a0/rpds_py-0.30.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fe5fa731a1fa8a0a56b0977413f8cacac1768dad38d16b3a296712709476fbd5", size = 415470, upload-time = "2025-11-30T20:24:05.232Z" }, + { url = "https://files.pythonhosted.org/packages/8c/28/882e72b5b3e6f718d5453bd4d0d9cf8df36fddeb4ddbbab17869d5868616/rpds_py-0.30.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:74a3243a411126362712ee1524dfc90c650a503502f135d54d1b352bd01f2404", size = 565630, upload-time = "2025-11-30T20:24:06.878Z" }, + { url = "https://files.pythonhosted.org/packages/3b/97/04a65539c17692de5b85c6e293520fd01317fd878ea1995f0367d4532fb1/rpds_py-0.30.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:3e8eeb0544f2eb0d2581774be4c3410356eba189529a6b3e36bbbf9696175856", size = 591148, upload-time = "2025-11-30T20:24:08.445Z" }, + { url = "https://files.pythonhosted.org/packages/85/70/92482ccffb96f5441aab93e26c4d66489eb599efdcf96fad90c14bbfb976/rpds_py-0.30.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:dbd936cde57abfee19ab3213cf9c26be06d60750e60a8e4dd85d1ab12c8b1f40", size = 556030, upload-time = "2025-11-30T20:24:10.956Z" }, + { url = "https://files.pythonhosted.org/packages/20/53/7c7e784abfa500a2b6b583b147ee4bb5a2b3747a9166bab52fec4b5b5e7d/rpds_py-0.30.0-cp314-cp314t-win32.whl", hash = "sha256:dc824125c72246d924f7f796b4f63c1e9dc810c7d9e2355864b3c3a73d59ade0", size = 211570, upload-time = "2025-11-30T20:24:12.735Z" }, + { url = "https://files.pythonhosted.org/packages/d0/02/fa464cdfbe6b26e0600b62c528b72d8608f5cc49f96b8d6e38c95d60c676/rpds_py-0.30.0-cp314-cp314t-win_amd64.whl", hash = "sha256:27f4b0e92de5bfbc6f86e43959e6edd1425c33b5e69aab0984a72047f2bcf1e3", size = 226532, upload-time = "2025-11-30T20:24:14.634Z" }, + { url = "https://files.pythonhosted.org/packages/69/71/3f34339ee70521864411f8b6992e7ab13ac30d8e4e3309e07c7361767d91/rpds_py-0.30.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c2262bdba0ad4fc6fb5545660673925c2d2a5d9e2e0fb603aad545427be0fc58", size = 372292, upload-time = "2025-11-30T20:24:16.537Z" }, + { url = "https://files.pythonhosted.org/packages/57/09/f183df9b8f2d66720d2ef71075c59f7e1b336bec7ee4c48f0a2b06857653/rpds_py-0.30.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ee6af14263f25eedc3bb918a3c04245106a42dfd4f5c2285ea6f997b1fc3f89a", size = 362128, upload-time = "2025-11-30T20:24:18.086Z" }, + { url = "https://files.pythonhosted.org/packages/7a/68/5c2594e937253457342e078f0cc1ded3dd7b2ad59afdbf2d354869110a02/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3adbb8179ce342d235c31ab8ec511e66c73faa27a47e076ccc92421add53e2bb", size = 391542, upload-time = "2025-11-30T20:24:20.092Z" }, + { url = "https://files.pythonhosted.org/packages/49/5c/31ef1afd70b4b4fbdb2800249f34c57c64beb687495b10aec0365f53dfc4/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:250fa00e9543ac9b97ac258bd37367ff5256666122c2d0f2bc97577c60a1818c", size = 404004, upload-time = "2025-11-30T20:24:22.231Z" }, + { url = "https://files.pythonhosted.org/packages/e3/63/0cfbea38d05756f3440ce6534d51a491d26176ac045e2707adc99bb6e60a/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9854cf4f488b3d57b9aaeb105f06d78e5529d3145b1e4a41750167e8c213c6d3", size = 527063, upload-time = "2025-11-30T20:24:24.302Z" }, + { url = "https://files.pythonhosted.org/packages/42/e6/01e1f72a2456678b0f618fc9a1a13f882061690893c192fcad9f2926553a/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:993914b8e560023bc0a8bf742c5f303551992dcb85e247b1e5c7f4a7d145bda5", size = 413099, upload-time = "2025-11-30T20:24:25.916Z" }, + { url = "https://files.pythonhosted.org/packages/b8/25/8df56677f209003dcbb180765520c544525e3ef21ea72279c98b9aa7c7fb/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58edca431fb9b29950807e301826586e5bbf24163677732429770a697ffe6738", size = 392177, upload-time = "2025-11-30T20:24:27.834Z" }, + { url = "https://files.pythonhosted.org/packages/4a/b4/0a771378c5f16f8115f796d1f437950158679bcd2a7c68cf251cfb00ed5b/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_31_riscv64.whl", hash = "sha256:dea5b552272a944763b34394d04577cf0f9bd013207bc32323b5a89a53cf9c2f", size = 406015, upload-time = "2025-11-30T20:24:29.457Z" }, + { url = "https://files.pythonhosted.org/packages/36/d8/456dbba0af75049dc6f63ff295a2f92766b9d521fa00de67a2bd6427d57a/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ba3af48635eb83d03f6c9735dfb21785303e73d22ad03d489e88adae6eab8877", size = 423736, upload-time = "2025-11-30T20:24:31.22Z" }, + { url = "https://files.pythonhosted.org/packages/13/64/b4d76f227d5c45a7e0b796c674fd81b0a6c4fbd48dc29271857d8219571c/rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:dff13836529b921e22f15cb099751209a60009731a68519630a24d61f0b1b30a", size = 573981, upload-time = "2025-11-30T20:24:32.934Z" }, + { url = "https://files.pythonhosted.org/packages/20/91/092bacadeda3edf92bf743cc96a7be133e13a39cdbfd7b5082e7ab638406/rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:1b151685b23929ab7beec71080a8889d4d6d9fa9a983d213f07121205d48e2c4", size = 599782, upload-time = "2025-11-30T20:24:35.169Z" }, + { url = "https://files.pythonhosted.org/packages/d1/b7/b95708304cd49b7b6f82fdd039f1748b66ec2b21d6a45180910802f1abf1/rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ac37f9f516c51e5753f27dfdef11a88330f04de2d564be3991384b2f3535d02e", size = 562191, upload-time = "2025-11-30T20:24:36.853Z" }, +] + +[[package]] +name = "rpds-py" +version = "2026.5.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130'", + "python_full_version == '3.11.*' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130'", + "python_full_version >= '3.12' and extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version == '3.11.*' and extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version >= '3.12' and sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version == '3.11.*' and sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version >= '3.12' and sys_platform == 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version == '3.11.*' and sys_platform == 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version >= '3.12' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", + "python_full_version == '3.11.*' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130'", +] +sdist = { url = "https://files.pythonhosted.org/packages/2e/43/25a8dcd3feedd735039a8f0b5b7e3b118232b5eae288c4fd9ab200d41094/rpds_py-2026.5.1.tar.gz", hash = "sha256:07b24fea40541e28570e5b795a4a38fbdcd12550c06bd0748005ecc8116ca256", size = 64459, upload-time = "2026-05-28T12:02:13.232Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4f/a0/acf8b6fc20bfdcd3a45bd3f57680fb198e157b7e997b9123b10763798bd2/rpds_py-2026.5.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3397a5ed7174dc2786bb214030232fc36fe8e5584fec43a9952cc542b1a12036", size = 355609, upload-time = "2026-05-28T11:58:50.78Z" }, + { url = "https://files.pythonhosted.org/packages/b6/95/f8203fd997484b1690a6869cd0e503b6c3c6be55b0ecc36d1a491fe742f0/rpds_py-2026.5.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:99ab6ba7bfa2cb0f96a04e3652355bf04e3f51aceb1e943b8541dab7ba4828cc", size = 348460, upload-time = "2026-05-28T11:58:52.374Z" }, + { url = "https://files.pythonhosted.org/packages/33/8c/b47326ad2f0be545a5e5c1a55937a12afaea7d392ba2837bb9680f57e6c9/rpds_py-2026.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0efbe45632665e53e3db8fe1e5692db58fc5cb9bab4459d570b83efefe11164", size = 381031, upload-time = "2026-05-28T11:58:53.775Z" }, + { url = "https://files.pythonhosted.org/packages/22/0b/e83bbd97ffac6f6389b605cd4e1c8ac5761dc7e977769c9255d8c5adb7bd/rpds_py-2026.5.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:01d17b29c0c23d82b1f4751147ec49cf451f1fc2554eb9ef5f957e55d2656ead", size = 387121, upload-time = "2026-05-28T11:58:55.243Z" }, + { url = "https://files.pythonhosted.org/packages/fd/0e/d285d1bc8864245919c61e1ca82263e4a66d337759c3a4cef72766ff9afc/rpds_py-2026.5.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7559f72b94ae52659086c595dfa017cde03155f7832071d30959049052cb3ece", size = 501026, upload-time = "2026-05-28T11:58:56.788Z" }, + { url = "https://files.pythonhosted.org/packages/86/06/ccb2109a1e543437b5e43816f2b43b9554cc6783145528a4e3711e05c011/rpds_py-2026.5.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9e25b7088f9ccbfc0dfcaa52bf969300ca229e10ecf758974ebcbb080a4b37bb", size = 391865, upload-time = "2026-05-28T11:58:58.298Z" }, + { url = "https://files.pythonhosted.org/packages/3d/33/237173db1cfef10105b3839a24de00eb8d2a523711add4632447cdf0aedd/rpds_py-2026.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:613fc4ee9eaef26dc5840666214dd6fbcebcf32f46e76f4abc473059f4e13dda", size = 378012, upload-time = "2026-05-28T11:58:59.589Z" }, + { url = "https://files.pythonhosted.org/packages/97/64/1eae54e34d5161f9969295e80bd6b62a55f2b6ac5f2a5b60d02c2140e758/rpds_py-2026.5.1-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:85264a90ff4c05c1568dd65f5921c837614b67c60358fb4c17df3b7f2e90690a", size = 391111, upload-time = "2026-05-28T11:59:01.104Z" }, + { url = "https://files.pythonhosted.org/packages/d8/34/5bb334a5a0f65d77869217c4654f34c78a7d11b93938a3c076a2edeafc52/rpds_py-2026.5.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fe71bca7d547acb17027c7fd1624ff8aae623499c498d3e7011182c4de5c25e0", size = 409225, upload-time = "2026-05-28T11:59:02.433Z" }, + { url = "https://files.pythonhosted.org/packages/16/0f/007ec21283b5b040b4ec3bd95e0402591e22bfa7d5c93dfe01c465c2d2d7/rpds_py-2026.5.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a05fa4f41f37ec97c9c260441a940450a192f78d774d2b097eee1379f1e1246a", size = 556487, upload-time = "2026-05-28T11:59:04.012Z" }, + { url = "https://files.pythonhosted.org/packages/ff/10/5437c94508169b6b22d8418fef7a66e9ffb5f3b9e9c94460f2eedafe06ff/rpds_py-2026.5.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:df1d2a1996755b24b9ecee92cb4d36c28f86f464a6a173349c26bab41e94b8c2", size = 620798, upload-time = "2026-05-28T11:59:05.485Z" }, + { url = "https://files.pythonhosted.org/packages/e0/d5/9937dce4d6bda74157b954e7d1460db05a22f5929dccfeeba1ed27a93df0/rpds_py-2026.5.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:8895840ac4809e5f60c88fd07617cd71326e73d6e5a8aa783c5c0f7c24985de2", size = 584053, upload-time = "2026-05-28T11:59:06.837Z" }, + { url = "https://files.pythonhosted.org/packages/6c/31/750617dd0ae1752471bf43f9e41d263398fae7cde7849d23b8574a70e617/rpds_py-2026.5.1-cp311-cp311-win32.whl", hash = "sha256:3684a59b158a7683aaeb8e25352e9a9dd2122cec78f2d8530266e4f91b4c7b3f", size = 214390, upload-time = "2026-05-28T11:59:08.402Z" }, + { url = "https://files.pythonhosted.org/packages/3c/bb/3dcab0e1d9516303f2eb672a5d6f62eca5a69e2886301e9c8c54b520c39b/rpds_py-2026.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:7bd530e6a530bb3ea892f194fafa455f3516ac25ecf7143fd33c09be62b0470a", size = 231097, upload-time = "2026-05-28T11:59:09.786Z" }, + { url = "https://files.pythonhosted.org/packages/49/d6/c6bbf5cb1cf12b9732df8074b57f6ef8341ba884c95d40632ae8bddb44e4/rpds_py-2026.5.1-cp311-cp311-win_arm64.whl", hash = "sha256:0a5ae4dbe43c1076983b72616496919872ae7bbe7a1e21cc48336bc3154d130b", size = 226361, upload-time = "2026-05-28T11:59:11.079Z" }, + { url = "https://files.pythonhosted.org/packages/d4/e7/a78582dc57caa592dcc7d4fb69b61390561e908eb3d2f5df5928a8e354c0/rpds_py-2026.5.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3abe24a66e57adcfa645d718063a5fa5103ecc71ddbf26d78af8f9368018ff1d", size = 353040, upload-time = "2026-05-28T11:59:12.531Z" }, + { url = "https://files.pythonhosted.org/packages/a3/43/35e3f136343aef451e545ce8c38d36c2f93c0ed88703db8b64ba2b205c68/rpds_py-2026.5.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:58b1d94308ddf0b1982f61f2eb54bf92997c9ece8a8093ef014250f4a517906c", size = 345775, upload-time = "2026-05-28T11:59:13.827Z" }, + { url = "https://files.pythonhosted.org/packages/20/e1/0f2160c5982d3157734d5cb3ed63d8b2d583a73c9864f77b666449f32cf8/rpds_py-2026.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fa92420128dadce7f54bd73ba1825a273e9268fe9e35dbf7e6362890efa4e08", size = 376329, upload-time = "2026-05-28T11:59:15.271Z" }, + { url = "https://files.pythonhosted.org/packages/d0/11/ee0ba42aff83bf4effdbc576673c6be64c5e173978c3f6d537e94482f77d/rpds_py-2026.5.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ca653c6546386227cd9800d1bef6a348099acf8db4250341da6d90f663d6dfcb", size = 383539, upload-time = "2026-05-28T11:59:16.665Z" }, + { url = "https://files.pythonhosted.org/packages/11/df/d94aa6a499d4ac40afe2d7620f2c597fd3c0f182e854ad7cf3f596a81cb6/rpds_py-2026.5.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:66c93681c4729e4e3ecba31b8179fae083ff3118841672835140338b4b9867c1", size = 494674, upload-time = "2026-05-28T11:59:17.991Z" }, + { url = "https://files.pythonhosted.org/packages/1f/75/33d30f43bb2f458de11979486a591b1bf6e5651765ed1704c6197c2dc773/rpds_py-2026.5.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:40ff257542e04796880e011e15cd4dc21c2599975df2aaa8f2c8495ca574e1a5", size = 389268, upload-time = "2026-05-28T11:59:19.434Z" }, + { url = "https://files.pythonhosted.org/packages/f4/1e/2c9096fc19d5fd084b0184ca2b651e659aa0a37e6fdbecf6ece47f147fe1/rpds_py-2026.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6825cc329b290e93c5f6a9be2393118a763f6ccf6abd83704e0c102ca583644", size = 376280, upload-time = "2026-05-28T11:59:21Z" }, + { url = "https://files.pythonhosted.org/packages/b9/e5/61ec9f8be8211ea7f48448195549e4aaf02004083475493b0e137702ecb2/rpds_py-2026.5.1-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:de42116e69cb53b911cc34aee5ab98f36c597b822545045d49e938818b99e5e4", size = 387233, upload-time = "2026-05-28T11:59:22.454Z" }, + { url = "https://files.pythonhosted.org/packages/0d/ca/bcec1005c4f4a234f92a29078631fee49206c7265ccae966f18fd332e80e/rpds_py-2026.5.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c0f920015df2a504bebaba6d4c31ccf3fcf942f92655c086da30b671aad19aa6", size = 405009, upload-time = "2026-05-28T11:59:23.845Z" }, + { url = "https://files.pythonhosted.org/packages/72/e6/4d5718c5cf26c522dc7c9999e238da1e77380b81d0c5d1df11e271ddfeb1/rpds_py-2026.5.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0408a24e44feb919423dc6d9da677cb5cddb894d2ca9e763967d156d9c60fab4", size = 553113, upload-time = "2026-05-28T11:59:25.184Z" }, + { url = "https://files.pythonhosted.org/packages/d4/25/2ee807bdb3e1f0b7eddf7782acd5665a8b5205a331a7d7244a52c4812fd9/rpds_py-2026.5.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:cea68bcd53467561ae2f96a6bdad1544299ba97b5b0ddcd5ac3d376e5c781c24", size = 618838, upload-time = "2026-05-28T11:59:26.749Z" }, + { url = "https://files.pythonhosted.org/packages/6a/c1/7d4c26f167f8c41501cc073d30ee22082b16ce358cf5b00ec97cbc7804ea/rpds_py-2026.5.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4be8b1d2a705cc37d08256004e1d07de143fa0075c8e85a3df020b776f62b732", size = 582436, upload-time = "2026-05-28T11:59:28.11Z" }, + { url = "https://files.pythonhosted.org/packages/04/1d/9d12b0a337bab46f4769f8857f4007e3b2d639e14f9a44a0efe157696e64/rpds_py-2026.5.1-cp312-cp312-win32.whl", hash = "sha256:6736718bd4fc49cbcb538ba30516fdbef161522acefb739657d48b97bd864fed", size = 212734, upload-time = "2026-05-28T11:59:29.689Z" }, + { url = "https://files.pythonhosted.org/packages/c5/93/e4116f2de7f56bc7406a76033dc501811ddeb22b7f056b92d632871ebb0c/rpds_py-2026.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:0a7d1eec967df0e9b22614a5e177622e0c89611d03727fa0cb48e45028907870", size = 229045, upload-time = "2026-05-28T11:59:31.033Z" }, + { url = "https://files.pythonhosted.org/packages/cb/53/6c3419d85eb2ec5938a37627c585b42d76a63bb731d6e42ed4b079ebf486/rpds_py-2026.5.1-cp312-cp312-win_arm64.whl", hash = "sha256:1841d067089e117142d79b98aa0df2f08b52f2ecc1819dd2700636c0db74a473", size = 223967, upload-time = "2026-05-28T11:59:32.318Z" }, + { url = "https://files.pythonhosted.org/packages/6c/32/14c961ad295f490eb0849ada8b79683e93a59b9de3afdd983eaf55fa6867/rpds_py-2026.5.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:efef4ac29c6ff495531eb17ee705b62841ecaa291b7c7077e848ea03e237164d", size = 352787, upload-time = "2026-05-28T11:59:33.655Z" }, + { url = "https://files.pythonhosted.org/packages/ca/bb/d1b85117967c11191441a7274ae616c65d93901d082c588f89a50a8da5ae/rpds_py-2026.5.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c39f5b67a8a2e67179ada2a954227d670fe65fa9098457f698f56ddf248709b3", size = 345179, upload-time = "2026-05-28T11:59:35Z" }, + { url = "https://files.pythonhosted.org/packages/7c/46/d84105f062e626a1b233f863907288a4708c2d833b8b4c6fb2764bc080c0/rpds_py-2026.5.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5c30f3f04eef4fbd362226a6f31d7c8895ca4fbb6e0b790f6890a98d8da8559", size = 376173, upload-time = "2026-05-28T11:59:36.43Z" }, + { url = "https://files.pythonhosted.org/packages/e2/ae/469d7959ce5b1201e1de135dc735b86db3b35dd0d1734f6a44246d5f061c/rpds_py-2026.5.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:277f6c82f0580848796c7ecc8a7173aa3bfb928e4ff831261c2f60a81dc270db", size = 383162, upload-time = "2026-05-28T11:59:37.995Z" }, + { url = "https://files.pythonhosted.org/packages/dc/a2/57853d31a1116a561aa072794602ad3f6341e18d70a8523f1bd5b9fc1e5a/rpds_py-2026.5.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:63c2c4c213f1a4e3f3de28ecab029dbdee976324e729c0d7a55211be72576b02", size = 495093, upload-time = "2026-05-28T11:59:39.453Z" }, + { url = "https://files.pythonhosted.org/packages/99/63/3a8eabcad9314b7daf5c65f451d2c33d989235cd8a5762186cf2c3f5a4f8/rpds_py-2026.5.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3350ec808fb538fe71a1f94dfaa0e29c598dfad805ce49f0caec5ae3183c652b", size = 389829, upload-time = "2026-05-28T11:59:40.896Z" }, + { url = "https://files.pythonhosted.org/packages/4b/25/05678d97fc25e2622df14dc530fb82023174ecfff6733991ed0d78f167bd/rpds_py-2026.5.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1b964e3ab599e718dc46c018d104b1ebc007cbc6567d827c94a687fca56d77e", size = 374786, upload-time = "2026-05-28T11:59:42.626Z" }, + { url = "https://files.pythonhosted.org/packages/88/d1/8c90b6431e80a3b91b284a5c7c8c0c4f9c006444d90477a740d6e0f9c694/rpds_py-2026.5.1-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:19cb09fab7b7fc96b2a6e28f2e34b72a3705ff27b37edb77455316e5d3f3dc9b", size = 386920, upload-time = "2026-05-28T11:59:44.124Z" }, + { url = "https://files.pythonhosted.org/packages/ff/99/4638f672ab356682d633ee0da9255f5b67ce6efd0b85eb94ad3e255e65a5/rpds_py-2026.5.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:abe76bcdba31e576cb83eeb8797aa0d882b738fef6dc65d0601fc753806a5b46", size = 405059, upload-time = "2026-05-28T11:59:47.177Z" }, + { url = "https://files.pythonhosted.org/packages/66/3f/3546524b6eb4cc2e1f363a3d638fa52f6c24faae3500c25fb488b02f1740/rpds_py-2026.5.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:8bff7073db3899158fff55ebf57b113a67030af26f80a18978f9f0aa60250ddf", size = 553030, upload-time = "2026-05-28T11:59:48.603Z" }, + { url = "https://files.pythonhosted.org/packages/c6/c3/7b3388c796fcf471bd17194242d4dc1a7608567c0fa422bcc1c5e79f9c1e/rpds_py-2026.5.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:8ba264fa49be666cd9cc56bf34ec7002fb3d27a4aee5bcb4d43d0d18feb1bb6f", size = 618975, upload-time = "2026-05-28T11:59:50.314Z" }, + { url = "https://files.pythonhosted.org/packages/61/1e/a3cb07f2795075d1d88efddae2f541359fde5f08c81ee114c29c2949c90a/rpds_py-2026.5.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4860b603ddda0475a8885499b3729e90229d480105b42651962a5397d995fa89", size = 581178, upload-time = "2026-05-28T11:59:51.673Z" }, + { url = "https://files.pythonhosted.org/packages/a1/74/e758c03a5ef46f04c37f2651a2893db846d569ba8a7bca469d4b58939bcd/rpds_py-2026.5.1-cp313-cp313-win32.whl", hash = "sha256:7944270ae71383f6e2657dd7d5ce4eeb4ac2d0059a6738f0510583d462ab4842", size = 212481, upload-time = "2026-05-28T11:59:53.148Z" }, + { url = "https://files.pythonhosted.org/packages/70/ec/a2aca432db9c7359b40fa393eeeaa0d166c2f70175be956e75fa24197c44/rpds_py-2026.5.1-cp313-cp313-win_amd64.whl", hash = "sha256:88647f43a73c4e01be19b04ceef0c8d3a1958153604d13c773becd8016f2a0cf", size = 228519, upload-time = "2026-05-28T11:59:54.505Z" }, + { url = "https://files.pythonhosted.org/packages/29/60/a73bfdd45b096574556acf303bbd9fa9eed36ca8a818b514e2a5d5fe2b9d/rpds_py-2026.5.1-cp313-cp313-win_arm64.whl", hash = "sha256:453895624ecf7db7063b1004e44037522bbaef9ff6a945e59bc71662d7a03abd", size = 223446, upload-time = "2026-05-28T11:59:56.081Z" }, + { url = "https://files.pythonhosted.org/packages/18/e2/408105fd611823f00882aea810f3989a30d26b1bab8b6beb20f98c724e0e/rpds_py-2026.5.1-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:b4e4bc98639ec915f512fde3aa7a95e0041d95d9c3cc86eea841fa63cb1e8600", size = 355287, upload-time = "2026-05-28T11:59:57.448Z" }, + { url = "https://files.pythonhosted.org/packages/8d/58/5c4a43436843c90d0f6d19f82c200c80e3843ca9fa07b237623327f6d384/rpds_py-2026.5.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:cacedb7a6e167680acba45ad5716e89067d225dc80da0d7040cae8c81d4572fa", size = 347033, upload-time = "2026-05-28T11:59:58.881Z" }, + { url = "https://files.pythonhosted.org/packages/fb/c2/1a71acdacaf4e259b10278fb87b039ded3cf80041bcd89dd8a3ea702ded6/rpds_py-2026.5.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68700371c5d7ae1412862ddfa719090925c93ecf351c566d66f09d04b136ea00", size = 376891, upload-time = "2026-05-28T12:00:00.516Z" }, + { url = "https://files.pythonhosted.org/packages/c2/c8/535f3d9b65addd8e28aa87b83c6e526799c3717a88273db8ea795beeef7a/rpds_py-2026.5.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:296c799becfa849c779c8725494fe9ed94959ed886787df4364b058465bad7f0", size = 385646, upload-time = "2026-05-28T12:00:02.394Z" }, + { url = "https://files.pythonhosted.org/packages/1c/91/dc033f313345c354ade914dbe73cdb90b615a4409ea02430d5356794f3d8/rpds_py-2026.5.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d3858b908218ee108d0bbfb2095ccc237648053c9bf98affad7cb079acaf1d97", size = 498830, upload-time = "2026-05-28T12:00:04.189Z" }, + { url = "https://files.pythonhosted.org/packages/27/fc/90fcbea459dbb8ddc18a2e0fd1de9412b48bc84ffff2db771cf714bacfd6/rpds_py-2026.5.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4fb8d2e7cb2f850b169806d61d1b991738acec96500a75c30f49caf064ce7cef", size = 392830, upload-time = "2026-05-28T12:00:05.797Z" }, + { url = "https://files.pythonhosted.org/packages/b2/1d/46cd11a228c9750684a798d98f878be6f614aa762438da7378f035e79e35/rpds_py-2026.5.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27b74c10ed6a8f190f4287f53bcfea348b92a84a9c9f70d30183d1e6172d580d", size = 379613, upload-time = "2026-05-28T12:00:07.433Z" }, + { url = "https://files.pythonhosted.org/packages/24/4a/d9b0c6af3a1de03eb93741bbe8be2bdce84d8fda8224f3005451d86df389/rpds_py-2026.5.1-cp313-cp313t-manylinux_2_31_riscv64.whl", hash = "sha256:b9a6528956191c48c52294a592dbd4a8386d7048bdb25c0efcb6b966466c6d83", size = 388183, upload-time = "2026-05-28T12:00:09.227Z" }, + { url = "https://files.pythonhosted.org/packages/c5/b4/db7aaabdda6d020afc87d981bcc2f57a434c7dec60ecfc2ab3dd50b20351/rpds_py-2026.5.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:af03e34e860047bc7a352b842856fcf78798fbb81132cc98bd2f907ab4eb9cd2", size = 408578, upload-time = "2026-05-28T12:00:10.779Z" }, + { url = "https://files.pythonhosted.org/packages/08/d6/070f6a41cbb343e2ac4171859bf3f3623e0ab002f72619d6d505313ec2de/rpds_py-2026.5.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:fea6e836d10abbe191d557d33bd58bd5987725fe63aa1eefe557d230209855bd", size = 553573, upload-time = "2026-05-28T12:00:12.443Z" }, + { url = "https://files.pythonhosted.org/packages/75/ab/1a71ea3589c4345dac0a0518f0e6a031cb42689277851b683c46d27463a5/rpds_py-2026.5.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:fc0c0f878ea770a0a8a462456c5ad36fc9fe6358e6b76fdadc7f17575e0b8bf1", size = 620861, upload-time = "2026-05-28T12:00:14.09Z" }, + { url = "https://files.pythonhosted.org/packages/8a/22/9bf80a56069c0c443fcfefac639a86a744550a2898817a6dfd3e26654924/rpds_py-2026.5.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e0b360f316d966b048b085857630b3cc51f3db2f07b06f440eac8f695374d1e3", size = 585633, upload-time = "2026-05-28T12:00:15.66Z" }, + { url = "https://files.pythonhosted.org/packages/da/68/3b2c0a75c9e04125696f84ebdbbf304acf5a40b58ba4481cdb98a922c3ba/rpds_py-2026.5.1-cp313-cp313t-win32.whl", hash = "sha256:a2999883eedf72fdfb7520b92c7d4ec2572a71ff40239377aa604cc529eecafc", size = 210074, upload-time = "2026-05-28T12:00:17.291Z" }, + { url = "https://files.pythonhosted.org/packages/e7/8b/609157d5a25d37d4f29f92840ba531f416907c34ae5c5739dd21fc2bef98/rpds_py-2026.5.1-cp313-cp313t-win_amd64.whl", hash = "sha256:e07be2a9d7122bd6e82dea89814ef8dc893feb1aae97fec1630f3263bbb30e55", size = 228635, upload-time = "2026-05-28T12:00:18.73Z" }, + { url = "https://files.pythonhosted.org/packages/d4/6f/19c1918a4b590d8de87e712e4abe4b3875771eff60216fb6153cf6665c68/rpds_py-2026.5.1-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:1f2c391c3059798093b65df23aca2cac150460ae9c630d99dec83d703d9485b9", size = 349756, upload-time = "2026-05-28T12:00:20.217Z" }, + { url = "https://files.pythonhosted.org/packages/e5/60/a06fe7da34eca79dacbf958a2ba0c6eea85bc2b29de20080bf40f72f66fa/rpds_py-2026.5.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:413b424f7c4ee65ab5e5be91f5731be0f8b41a1ee2b12dfe810d716312e95a78", size = 343831, upload-time = "2026-05-28T12:00:21.711Z" }, + { url = "https://files.pythonhosted.org/packages/bf/ec/b2333b97b90e2a6ef6ca8ad386ee284968e74bcfe113b3f1a8d9036429a9/rpds_py-2026.5.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c595a1d9255dce0599e13130d1440ab2506654f2b50294226ee06402f8fef63", size = 375127, upload-time = "2026-05-28T12:00:23.326Z" }, + { url = "https://files.pythonhosted.org/packages/14/7f/e00aae54067f2b488c4637961d5f58204d470795fc791085fa3f15060d2e/rpds_py-2026.5.1-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1c27c5f6102eac8c03e7595a00827a53b271ba40a53b59ff8709170e0855ea4a", size = 379034, upload-time = "2026-05-28T12:00:24.89Z" }, + { url = "https://files.pythonhosted.org/packages/be/cc/423999bbb8ae8dc93c77fc1d5e984ade5eb89d237d3bb884ccfa72ae2890/rpds_py-2026.5.1-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6c7fcf61d44cacecaf3aea542b0e053db77972a4573e7ceda16fb2b399161195", size = 490823, upload-time = "2026-05-28T12:00:26.676Z" }, + { url = "https://files.pythonhosted.org/packages/0f/aa/c671bf660f12e68d3c52ff86c7066ed1372df5a0f4f2ff584e419b8207e7/rpds_py-2026.5.1-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2c817a189d4ee14290420e5ff051e4dd6baa13f3edf84685071dee07a6d538ee", size = 388144, upload-time = "2026-05-28T12:00:28.577Z" }, + { url = "https://files.pythonhosted.org/packages/19/c8/d63bb75b68afe77b229e3021c6031bcaf01da5db5b0e69d0d10f9ba679a7/rpds_py-2026.5.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21846aac0ed2e0589f38c12dc44e77bb64e494b771eadbcf169cba00566ba7ba", size = 371959, upload-time = "2026-05-28T12:00:30.304Z" }, + { url = "https://files.pythonhosted.org/packages/82/35/c51122014d8274ff37dc606d60049c3db7d83da02b5b282511e5a906a9a6/rpds_py-2026.5.1-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:b317c87a13f769a4e787819bd508aaa5d69aa09b0880de9af6d3a8a54571cdec", size = 383558, upload-time = "2026-05-28T12:00:31.764Z" }, + { url = "https://files.pythonhosted.org/packages/e3/f9/2790cb99c136a5363acdeacf5c27c56f3de0d4118a1f48fca83404c99c89/rpds_py-2026.5.1-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ce87129d9f2c14fa6c4a8601fb80eb4488c80d38a20cd13758ef11123e14995d", size = 402789, upload-time = "2026-05-28T12:00:33.247Z" }, + { url = "https://files.pythonhosted.org/packages/e5/1b/e4fb584f8c75d35c38150ff6a332cda949e6f97acba1f4fd123b14ab56fe/rpds_py-2026.5.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:9cdddb6c1207d284d94fd1530adf57fbd797fe7c4b8704ba85f49414f2557e7d", size = 551405, upload-time = "2026-05-28T12:00:34.819Z" }, + { url = "https://files.pythonhosted.org/packages/d8/f7/a6731b4216cb3793ea1af5391da240f5683dacc0d13e034fe5fc3503f240/rpds_py-2026.5.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:4e237e139f94d3c036fd28eb9f564c99055476ff4ff05cd42be55ce349b5aa02", size = 616975, upload-time = "2026-05-28T12:00:36.268Z" }, + { url = "https://files.pythonhosted.org/packages/2c/ea/2e051a81d95d8e63f4b35a1c463a87e8766bc3d083c067c5dfb6bf220747/rpds_py-2026.5.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ed0954b524873214369184a9c82b0eaa45a3fbb9a798cd95b17e0d98499e7ea0", size = 578701, upload-time = "2026-05-28T12:00:37.82Z" }, + { url = "https://files.pythonhosted.org/packages/65/56/b5f6fdb2083e32bca8a8993d89e70db114b4756c9e2c38421328126689d2/rpds_py-2026.5.1-cp314-cp314-win32.whl", hash = "sha256:2d88621d6a7d4dfa633d21abe90f280bb205274e16b1d1e61c6ad4640b2453b7", size = 209806, upload-time = "2026-05-28T12:00:39.492Z" }, + { url = "https://files.pythonhosted.org/packages/fb/80/65a5aa96c155e611d1ed844e4e1f57f3e36b021f396d9f8585d756e6b90d/rpds_py-2026.5.1-cp314-cp314-win_amd64.whl", hash = "sha256:cef8ac28d26f4dda3533060c20fbf80a325458fa9fd23ea72a73cdfa8e978838", size = 225985, upload-time = "2026-05-28T12:00:40.94Z" }, + { url = "https://files.pythonhosted.org/packages/27/7c/ad185212e87b05f196daef92bc5f3caf07298eb47c295b5585c3dd3093ac/rpds_py-2026.5.1-cp314-cp314-win_arm64.whl", hash = "sha256:eaaea962c68cdc68d4a533ba985ab8e9484277910bbfaa2ab3ef7732667bfed8", size = 221219, upload-time = "2026-05-28T12:00:43.15Z" }, + { url = "https://files.pythonhosted.org/packages/23/58/e14ae18759020334646b031e708ab4158d653a938822bfb7b95ef2e93aa3/rpds_py-2026.5.1-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:21942f52dbbd5f8758bf021213d28bd45c39e873e65e2407faf5f1846f5761ad", size = 352148, upload-time = "2026-05-28T12:00:44.638Z" }, + { url = "https://files.pythonhosted.org/packages/31/9b/5f4a1e2f960bca3ac5d052b139dd31eed97b259f9d909173821760d542e8/rpds_py-2026.5.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f414556f6e3958300ff941e40c9f97e3dc9774ddd1b3434c475d73dd354bbed3", size = 345196, upload-time = "2026-05-28T12:00:46.14Z" }, + { url = "https://files.pythonhosted.org/packages/1a/71/1d9574d6a2fa20ab60eaa55c7467f5aa20cbc770f341a05f09c0876f59e2/rpds_py-2026.5.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef1013a8625c74043210190b246f5b1551e09757c1f356c6e4160ef96c5bc081", size = 374981, upload-time = "2026-05-28T12:00:47.531Z" }, + { url = "https://files.pythonhosted.org/packages/0c/9a/37e99f4915a80aa71670263c1267f7ae0af95f53a3f61e6c3bdc016d4515/rpds_py-2026.5.1-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cc68e231a77a5f0d774ae278a1f8e55c0456501820847c1e4efb3829f3441df6", size = 379961, upload-time = "2026-05-28T12:00:49.216Z" }, + { url = "https://files.pythonhosted.org/packages/a8/ff/6e73f74b89d2e0715e0fc86b7dde893f9a61ae2f9b256ff3bdfe41ac4e94/rpds_py-2026.5.1-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9baffb505aff33acc69b422a19f77806680f3c8632227d79f48de8a810d1c2c5", size = 495965, upload-time = "2026-05-28T12:00:51.111Z" }, + { url = "https://files.pythonhosted.org/packages/ea/e0/425faba25f59d74d4638b267f7c7a80e8649d2ef4db10a19b0c4a71e6e6f/rpds_py-2026.5.1-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b8d2f912928d426e8cfa396f7f3f8d29a59e6689c86dcca3c420730c1096322b", size = 389526, upload-time = "2026-05-28T12:00:52.77Z" }, + { url = "https://files.pythonhosted.org/packages/c6/76/7a41960e3fddae47fab43a28684d5da981401dffd88253de0944148654cb/rpds_py-2026.5.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90f628283be835db980c941767d41c9a27b5239e54ba0a9c1335247e82406964", size = 376190, upload-time = "2026-05-28T12:00:54.215Z" }, + { url = "https://files.pythonhosted.org/packages/27/60/5f38dc70824fc6951b51d35377e577a3a3a4c81a6769cc5a2de25ebe0ad1/rpds_py-2026.5.1-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:1ebb2f0ab7e16132995a72de805170e0203df0c3dd22e1ef1cd1fdd90bd7a131", size = 383921, upload-time = "2026-05-28T12:00:55.673Z" }, + { url = "https://files.pythonhosted.org/packages/60/1a/d60a38caa1505f4b9483c3fbbde12c94e1079154f4f401a6da96f7e77621/rpds_py-2026.5.1-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f3df3d16ded76f1f8c9cdebd0e1ea55fdf4c23b812de189814da7cf229c22a81", size = 404766, upload-time = "2026-05-28T12:00:57.518Z" }, + { url = "https://files.pythonhosted.org/packages/87/ff/602fd3f174d6425f0bce05ad0dfbec0e96b38d0f7d08a79af5aa20083885/rpds_py-2026.5.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:9af8905b8f854990e40d5206aa5ac58d9b0fe0b7f351ff2bb086c20f6c8c6a47", size = 551343, upload-time = "2026-05-28T12:00:58.978Z" }, + { url = "https://files.pythonhosted.org/packages/b8/c1/1be13327acdbead3eca1fde03b6a34dbb011f1e864e217f0d32cc1779a7f/rpds_py-2026.5.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:036a36a87fb1cd3b214d11c4b3c4f7d2ddad933625dca1c900b56a057c07740a", size = 618502, upload-time = "2026-05-28T12:01:00.656Z" }, + { url = "https://files.pythonhosted.org/packages/f3/d7/afb49b49d7f2be8b7ba1a9f0977fa5168003437b93086726f066544e8351/rpds_py-2026.5.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:62ae3853454fe9ef283a03c96c2d835d39e84b14643a9d62c82ef0fb87d702ca", size = 581916, upload-time = "2026-05-28T12:01:02.22Z" }, + { url = "https://files.pythonhosted.org/packages/25/d1/dbef8c1f8a10f07beb62b5f054e20099fd9924b3ec001b8f0b6ac7813a85/rpds_py-2026.5.1-cp314-cp314t-win32.whl", hash = "sha256:6c3d771a46ec18b12af06ce36243a9a80b07a5d0515236332d90863ca8bb326a", size = 207855, upload-time = "2026-05-28T12:01:03.821Z" }, + { url = "https://files.pythonhosted.org/packages/2a/72/bfa4e61ab8e7dc1c8adf397e05e6cbdd4239357bd72b248d3de662f23915/rpds_py-2026.5.1-cp314-cp314t-win_amd64.whl", hash = "sha256:c93c629be4636cf54337bd5f06c104d55e42ced54d681f6fe21ae510a65116f6", size = 225422, upload-time = "2026-05-28T12:01:05.194Z" }, + { url = "https://files.pythonhosted.org/packages/42/56/3fe0fb34820ff667be791b3a3c22b85e8bcba54e9c832f47438c191fa7be/rpds_py-2026.5.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:edf2765d84e42447f112ad877af8fe1db0089aaec5b28e88d6eab45e7fe99cea", size = 357151, upload-time = "2026-05-28T12:01:53.43Z" }, + { url = "https://files.pythonhosted.org/packages/8b/f2/3eb9ccdb9f143b8c9b003978898cb497f942a324c077401e6b8834238e63/rpds_py-2026.5.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ad3773236e95f7f33991eb125224b7da66f206504d032a253a02da7e134519fb", size = 350195, upload-time = "2026-05-28T12:01:54.901Z" }, + { url = "https://files.pythonhosted.org/packages/a7/24/dbda232bc4f3ed732120692ab0d2c8402cb020516556d8bee622dcef2413/rpds_py-2026.5.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a04df86b3f0fade39ec8fd0e0aab089b1da9fbd2b48df778a57ef96f5e7d38df", size = 381850, upload-time = "2026-05-28T12:01:56.601Z" }, + { url = "https://files.pythonhosted.org/packages/40/30/32e769839a358f78810c234f160f2cc21d1e4e47e1c0e0e0d535be5a0219/rpds_py-2026.5.1-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6142dbd80c4df62a5d899f0d616d417f84e0bc8d32526c8e5589019d75d028a7", size = 387899, upload-time = "2026-05-28T12:01:58.212Z" }, + { url = "https://files.pythonhosted.org/packages/ab/86/ec84d243aadb3b34b71dd26a010d0930b2d284ff5fc9a69fec53810ee6fd/rpds_py-2026.5.1-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0b35217adefe87f2fe4db7e9766cabe84744bfe9616d9667be18988928c7f2dc", size = 501618, upload-time = "2026-05-28T12:01:59.888Z" }, + { url = "https://files.pythonhosted.org/packages/74/25/b60e52686bbff777a64f9e4f4d3dd57980dc846913777177a2c92e4937aa/rpds_py-2026.5.1-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b95d5e11fc712b752081183a55a244c03cd00570489edd7014d8899f8ceb8162", size = 394003, upload-time = "2026-05-28T12:02:01.482Z" }, + { url = "https://files.pythonhosted.org/packages/9b/c7/b3a6a588cc2219510ef3f42e207483a93950bedd1e3a0fd4015c95cff9e5/rpds_py-2026.5.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:141c9498daf2ace9eda35d2b0e376f9ea8b058d84f2aef4f96fccfd449a2f251", size = 379778, upload-time = "2026-05-28T12:02:03.197Z" }, + { url = "https://files.pythonhosted.org/packages/31/00/c7dba3fc8a3da8cb3f6db1eb3386be4d79c2e97c6890d20eb9ac66ae8c43/rpds_py-2026.5.1-pp311-pypy311_pp73-manylinux_2_31_riscv64.whl", hash = "sha256:6f249f8b860a200ad35193af961183ebe9132710484e6f6ce0cf89fd83c63a9a", size = 392359, upload-time = "2026-05-28T12:02:04.817Z" }, + { url = "https://files.pythonhosted.org/packages/93/dd/472ba494c70753f93745992c99855bee0636daf74e6984e5e003f150316f/rpds_py-2026.5.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e4abbf391a70be864920858bf360f4fb380577c9a0f732438a1996726e2c195b", size = 412820, upload-time = "2026-05-28T12:02:06.401Z" }, + { url = "https://files.pythonhosted.org/packages/1d/6f/93831a3bfe789542ed0c1d0d74b78b440f055d6dc3ea4640eba2d95e6e23/rpds_py-2026.5.1-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:c74005a7bb87752acf351c93897ec63ad77a07a0da7ecad9c050e32e7286ba34", size = 557243, upload-time = "2026-05-28T12:02:08.013Z" }, + { url = "https://files.pythonhosted.org/packages/1f/ff/0b3d604614ffc77522c6b288fdbce68957eb583da1002aa65ba38ac0ee40/rpds_py-2026.5.1-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:8213afbe8a3a906fb9acb2014423fe3359ee783d0bf90995f70623a3217bfa6c", size = 623541, upload-time = "2026-05-28T12:02:09.661Z" }, + { url = "https://files.pythonhosted.org/packages/ea/ea/e7b0251441da9adfeaebcf29601d10f2a1455fcf0772fae9e7e19032bd96/rpds_py-2026.5.1-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:8c43a8a973270fd173bf48cdf80bbe66312421cba68d40845034f174f2389049", size = 586326, upload-time = "2026-05-28T12:02:11.47Z" }, +] + +[[package]] +name = "ruff" +version = "0.15.16" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a6/bd/5f7ec371001337d8fa61701c186ff8b613ecac1651848c5950f4c4d5f2e9/ruff-0.15.16.tar.gz", hash = "sha256:d05e78d38c78caf020b03789e25106c93017db5a0cb6e2819885018c61343b78", size = 4714267, upload-time = "2026-06-04T16:33:09.974Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/42/53ef1c3953f157956db9bf7861e3bc50b9b887ce93300aa48cdba8336fe6/ruff-0.15.16-py3-none-linux_armv6l.whl", hash = "sha256:6ac3c0b3969cc6cf6b158c4e2f8f682acb58e7d700d8a44b65ecdc72d66ab0b2", size = 10709025, upload-time = "2026-06-04T16:32:51.935Z" }, + { url = "https://files.pythonhosted.org/packages/93/9a/a79159346f19134a956607754e57d8d128f7a4c00f4ad2f7514d224c172c/ruff-0.15.16-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:197c207ed75ffba54a0dec23db4aa939a27a3053073e085e0042433cbdc58e4a", size = 11063550, upload-time = "2026-06-04T16:32:42.24Z" }, + { url = "https://files.pythonhosted.org/packages/bc/72/3ce2ac000a5299ec238e01f51397b3b653c93b077d9b1bfe8715bb895f20/ruff-0.15.16-py3-none-macosx_11_0_arm64.whl", hash = "sha256:3a39fec45ab316cc23e7558f23fea4a70403ddb5648ea9a4a3854a16973d0071", size = 10421345, upload-time = "2026-06-04T16:32:37.251Z" }, + { url = "https://files.pythonhosted.org/packages/b0/c2/cc7fad3ec9169373f5b6a18f1917b91080feec40c3f9658334a1d28e2f03/ruff-0.15.16-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba93191d79003116b95128c9d306e045200fdbd0bccb782b110f3cd1d4abc5cf", size = 10757217, upload-time = "2026-06-04T16:32:54.722Z" }, + { url = "https://files.pythonhosted.org/packages/69/d2/3474009eaa0a65b31fa7152a2fad5e2f050c640ceb1e6b02ee6922e94c82/ruff-0.15.16-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c6ee4b90520630120ef032aa5cc10db483852dff950e78b1d717e2993a61ac8d", size = 10507035, upload-time = "2026-06-04T16:33:05.343Z" }, + { url = "https://files.pythonhosted.org/packages/ca/81/b7ae6ccbd11f0c8dc3d5d67fc4be9b57ff57ca86ba56152021378e1277f2/ruff-0.15.16-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4e4215bc938bc3c8215c1472c1aa437e310fee20cd427335fec9d7e609563628", size = 11255291, upload-time = "2026-06-04T16:32:49.49Z" }, + { url = "https://files.pythonhosted.org/packages/d9/e1/46e526f1a7cc90857ce6ddf25fbb77eb6568651ac38d71b033af07076dd5/ruff-0.15.16-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7c8d26be963b090f10e29abc8b3e74a2a321f6fa34e02424e30b5af89350ecbb", size = 12124922, upload-time = "2026-06-04T16:33:07.821Z" }, + { url = "https://files.pythonhosted.org/packages/1a/da/5c791b088b596b24d0deb967fa28ae02ad751a140c0b9ea81c5ab915d6c0/ruff-0.15.16-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f198cf4123602a2280ed46c307bcbafe41758d6fee5b456b6b6058ca1514b3b4", size = 11332186, upload-time = "2026-06-04T16:33:02.971Z" }, + { url = "https://files.pythonhosted.org/packages/72/11/5da87abe20047c8962361473923ebb2f62b595250126aadfad8c20649c1e/ruff-0.15.16-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb27515fa6240fb586ae82b901a59e67d24acff86f2190b433dc542fe0435aeb", size = 11373541, upload-time = "2026-06-04T16:32:47.007Z" }, + { url = "https://files.pythonhosted.org/packages/fe/2a/8554754c23a854ae3fd6b507e36ad61ddb121e298c6d5d617dec94ed0f14/ruff-0.15.16-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:a267c46ba1593fc26b8eecbea050b39d40c0b6bb7781ee11c90a02cd10032951", size = 11353014, upload-time = "2026-06-04T16:32:34.795Z" }, + { url = "https://files.pythonhosted.org/packages/62/25/62ea41529ec89f742ea3fed9cb1059c72877ec7cf9b9e99ac9cf3294d1d9/ruff-0.15.16-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:528c68f39a91498a8d50e91ff5985df3d105782bab49cc378e73ac26bff083e8", size = 10737467, upload-time = "2026-06-04T16:32:26.348Z" }, + { url = "https://files.pythonhosted.org/packages/90/17/334d3ad9de4d40f9dd58fdd09e35ce64553bb501e2f19a839e2fb6be14fc/ruff-0.15.16-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:7ed55c58950df60589a9a7a5d2f8fa5f54ebd287163be805adfe6ee95a9de123", size = 10521910, upload-time = "2026-06-04T16:32:32.54Z" }, + { url = "https://files.pythonhosted.org/packages/4d/bd/3ac7c6ae77a885c1004b3dda2446ea401768d24f851c14b4ad4b24f6639c/ruff-0.15.16-py3-none-musllinux_1_2_i686.whl", hash = "sha256:d482feaf51512b50f9790ceb417a56a61dd1e9d9bf967662b9ed27c01b34f53a", size = 10979190, upload-time = "2026-06-04T16:32:57.492Z" }, + { url = "https://files.pythonhosted.org/packages/33/d7/609546e6a413c3f216fbf2a50c928f97c80939154f6a0503114094a86191/ruff-0.15.16-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:1e15bc8c94513dae2a40cc9ef07c94fdd4ecc9e29dabebeebe170f952322c9e3", size = 11477014, upload-time = "2026-06-04T16:32:44.687Z" }, + { url = "https://files.pythonhosted.org/packages/74/0d/f2cd247ad32633a5c36e97141a2c21b11c6279f7957bc2ff360b1e08fddd/ruff-0.15.16-py3-none-win32.whl", hash = "sha256:580378f7bd4aa25f72e74aa54948a9622f142b1e509521dd10902e886681cc1e", size = 10735541, upload-time = "2026-06-04T16:32:30.145Z" }, + { url = "https://files.pythonhosted.org/packages/8b/9e/02e845ef151b1dee585e55c4739f8e1734ae1d9f1221dff65761c162208b/ruff-0.15.16-py3-none-win_amd64.whl", hash = "sha256:408256017284eddf98fff77b29aa4fb30f586042d535b2d9befc6512f400aaec", size = 11843403, upload-time = "2026-06-04T16:32:39.76Z" }, + { url = "https://files.pythonhosted.org/packages/15/19/016553f86f207450aebebc2b2b5088d086b901cc8186c02ac4284db3bd88/ruff-0.15.16-py3-none-win_arm64.whl", hash = "sha256:8cd61783afb39638a7133ef0d2dfb1e91277593962f81b5a8423eb0b888a6121", size = 11134555, upload-time = "2026-06-04T16:33:00.136Z" }, +] + +[[package]] +name = "secretstorage" +version = "3.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cryptography", marker = "sys_platform != 'darwin' or extra != 'extra-13-torchpfaffian-cpu' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "jeepney", marker = "sys_platform != 'darwin' or extra != 'extra-13-torchpfaffian-cpu' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1c/03/e834bcd866f2f8a49a85eaff47340affa3bfa391ee9912a952a1faa68c7b/secretstorage-3.5.0.tar.gz", hash = "sha256:f04b8e4689cbce351744d5537bf6b1329c6fc68f91fa666f60a380edddcd11be", size = 19884, upload-time = "2025-11-23T19:02:53.191Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/46/f5af3402b579fd5e11573ce652019a67074317e18c1935cc0b4ba9b35552/secretstorage-3.5.0-py3-none-any.whl", hash = "sha256:0ce65888c0725fcb2c5bc0fdb8e5438eece02c523557ea40ce0703c266248137", size = 15554, upload-time = "2025-11-23T19:02:51.545Z" }, +] + +[[package]] +name = "setuptools" +version = "82.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4f/db/cfac1baf10650ab4d1c111714410d2fbb77ac5a616db26775db562c8fab2/setuptools-82.0.1.tar.gz", hash = "sha256:7d872682c5d01cfde07da7bccc7b65469d3dca203318515ada1de5eda35efbf9", size = 1152316, upload-time = "2026-03-09T12:47:17.221Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9d/76/f789f7a86709c6b087c5a2f52f911838cad707cc613162401badc665acfe/setuptools-82.0.1-py3-none-any.whl", hash = "sha256:a59e362652f08dcd477c78bb6e7bd9d80a7995bc73ce773050228a348ce2e5bb", size = 1006223, upload-time = "2026-03-09T12:47:15.026Z" }, +] + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, +] + +[[package]] +name = "snowballstemmer" +version = "3.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/f8/0a71edf031f03c40db17503cb8ca78a69a171254e568e7db241b0ab57ea1/snowballstemmer-3.1.1.tar.gz", hash = "sha256:e07bbc54a0d798fe6010a12398422e62a8bfbba95c394fd0956ef58cb4d3e260", size = 123314, upload-time = "2026-06-03T00:56:40.194Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl", hash = "sha256:7e207fa178741da09cdee59d3ecec3827ad5f92b1fc5c9ff3755b639f71f5752", size = 104164, upload-time = "2026-06-03T00:56:38.614Z" }, +] + +[[package]] +name = "soupsieve" +version = "2.8.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/47/2c/0a5f6f8ee0d5589e48c7640213ed5175d52cf540a06725b628cc1a45d6ce/soupsieve-2.8.4.tar.gz", hash = "sha256:e121fd02e975c695e4e9e8774a5ee35d74714b59307868dcc5319ad2d9e3328e", size = 121110, upload-time = "2026-05-24T13:55:57.154Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5e/f5/0c41cb68dcae6b7de4fac4188a3a9589e21fb31df21ea3a2e888db95e6c9/soupsieve-2.8.4-py3-none-any.whl", hash = "sha256:e7e6b0769c8f51ed59acab6e994b00621096cfb1c640a7509295987388fbaf65", size = 37304, upload-time = "2026-05-24T13:55:55.406Z" }, +] + +[[package]] +name = "sphinx" +version = "6.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "alabaster" }, + { name = "babel" }, + { name = "colorama", marker = "sys_platform == 'win32' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "docutils" }, + { name = "imagesize" }, + { name = "jinja2" }, + { name = "packaging" }, + { name = "pygments" }, + { name = "requests" }, + { name = "snowballstemmer" }, + { name = "sphinxcontrib-applehelp" }, + { name = "sphinxcontrib-devhelp" }, + { name = "sphinxcontrib-htmlhelp" }, + { name = "sphinxcontrib-jsmath" }, + { name = "sphinxcontrib-qthelp" }, + { name = "sphinxcontrib-serializinghtml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0f/6d/392defcc95ca48daf62aecb89550143e97a4651275e62a3d7755efe35a3a/Sphinx-6.2.1.tar.gz", hash = "sha256:6d56a34697bb749ffa0152feafc4b19836c755d90a7c59b72bc7dfd371b9cc6b", size = 6681092, upload-time = "2023-04-25T11:01:40.914Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5f/d8/45ba6097c39ba44d9f0e1462fb232e13ca4ddb5aea93a385dcfa964687da/sphinx-6.2.1-py3-none-any.whl", hash = "sha256:97787ff1fa3256a3eef9eda523a63dbf299f7b47e053cfcf684a1c2a8380c912", size = 3024615, upload-time = "2023-04-25T11:01:08.562Z" }, +] + +[[package]] +name = "sphinx-mdinclude" +version = "0.6.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "docutils" }, + { name = "mistune" }, + { name = "pygments" }, + { name = "sphinx" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b6/a7/c9a7888bb2187fdb06955d71e75f6f266b7e179b356ac76138d160a5b7eb/sphinx_mdinclude-0.6.2.tar.gz", hash = "sha256:447462e82cb8be61404a2204227f920769eb923d2f57608e3325f3bb88286b4c", size = 65257, upload-time = "2024-08-03T19:07:37.643Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/42/3d/6b41fe1637cd53c4b10d56e0e6f396546f837973dabf9c4b2a1de44620ac/sphinx_mdinclude-0.6.2-py3-none-any.whl", hash = "sha256:648e78edb067c0e4bffc22943278d49d54a0714494743592032fa3ad82a86984", size = 16911, upload-time = "2024-08-03T19:07:30.406Z" }, +] + +[[package]] +name = "sphinx-rtd-theme" +version = "3.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "docutils" }, + { name = "sphinx" }, + { name = "sphinxcontrib-jquery" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/84/68/a1bfbf38c0f7bccc9b10bbf76b94606f64acb1552ae394f0b8285bfaea25/sphinx_rtd_theme-3.1.0.tar.gz", hash = "sha256:b44276f2c276e909239a4f6c955aa667aaafeb78597923b1c60babc76db78e4c", size = 7620915, upload-time = "2026-01-12T16:03:31.17Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/87/c7/b5c8015d823bfda1a346adb2c634a2101d50bb75d421eb6dcb31acd25ebc/sphinx_rtd_theme-3.1.0-py2.py3-none-any.whl", hash = "sha256:1785824ae8e6632060490f67cf3a72d404a85d2d9fc26bce3619944de5682b89", size = 7655617, upload-time = "2026-01-12T16:03:28.101Z" }, +] + +[[package]] +name = "sphinx-theme" +version = "1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1c/3e/72404596274be91bcf809bf502f4c06c96a78c9c4791f0bb3df0f44b08b8/sphinx_theme-1.0.tar.gz", hash = "sha256:6a763f2568bb320b9296a1694a2e29ad8341930fc54471b19a38b080e644f3a2", size = 3690298, upload-time = "2017-01-05T02:54:24.817Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/99/aa60497585a4fad7a6b46e9493e146217ef7080712aa6141f6903139b027/sphinx_theme-1.0-py2.py3-none-any.whl", hash = "sha256:42691f1fa370b719a9456a484e8d7573259d4d62cc06866885f3988eba9edb70", size = 5549882, upload-time = "2017-01-05T02:54:11.844Z" }, +] + +[[package]] +name = "sphinxcontrib-applehelp" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ba/6e/b837e84a1a704953c62ef8776d45c3e8d759876b4a84fe14eba2859106fe/sphinxcontrib_applehelp-2.0.0.tar.gz", hash = "sha256:2f29ef331735ce958efa4734873f084941970894c6090408b079c61b2e1c06d1", size = 20053, upload-time = "2024-07-29T01:09:00.465Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5d/85/9ebeae2f76e9e77b952f4b274c27238156eae7979c5421fba91a28f4970d/sphinxcontrib_applehelp-2.0.0-py3-none-any.whl", hash = "sha256:4cd3f0ec4ac5dd9c17ec65e9ab272c9b867ea77425228e68ecf08d6b28ddbdb5", size = 119300, upload-time = "2024-07-29T01:08:58.99Z" }, +] + +[[package]] +name = "sphinxcontrib-bibtex" +version = "2.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "docutils" }, + { name = "pybtex" }, + { name = "pybtex-docutils" }, + { name = "sphinx" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/54/94fbcd5eb0532eaa91580d09795c4b6c562b72d5638c2ed5b5cc31d2b1f8/sphinxcontrib-bibtex-2.5.0.tar.gz", hash = "sha256:71b42e5db0e2e284f243875326bf9936aa9a763282277d75048826fef5b00eaa", size = 113310, upload-time = "2022-08-22T13:16:46.025Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b2/17/3be04de2ed752996654895558db01a30d64759b2c7120e7692402b8d4e19/sphinxcontrib_bibtex-2.5.0-py3-none-any.whl", hash = "sha256:748f726eaca6efff7731012103417ef130ecdcc09501b4d0c54283bf5f059f76", size = 39752, upload-time = "2022-08-22T13:16:43.376Z" }, +] + +[[package]] +name = "sphinxcontrib-devhelp" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/d2/5beee64d3e4e747f316bae86b55943f51e82bb86ecd325883ef65741e7da/sphinxcontrib_devhelp-2.0.0.tar.gz", hash = "sha256:411f5d96d445d1d73bb5d52133377b4248ec79db5c793ce7dbe59e074b4dd1ad", size = 12967, upload-time = "2024-07-29T01:09:23.417Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl", hash = "sha256:aefb8b83854e4b0998877524d1029fd3e6879210422ee3780459e28a1f03a8a2", size = 82530, upload-time = "2024-07-29T01:09:21.945Z" }, +] + +[[package]] +name = "sphinxcontrib-htmlhelp" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/93/983afd9aa001e5201eab16b5a444ed5b9b0a7a010541e0ddfbbfd0b2470c/sphinxcontrib_htmlhelp-2.1.0.tar.gz", hash = "sha256:c9e2916ace8aad64cc13a0d233ee22317f2b9025b9cf3295249fa985cc7082e9", size = 22617, upload-time = "2024-07-29T01:09:37.889Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0a/7b/18a8c0bcec9182c05a0b3ec2a776bba4ead82750a55ff798e8d406dae604/sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl", hash = "sha256:166759820b47002d22914d64a075ce08f4c46818e17cfc9470a9786b759b19f8", size = 98705, upload-time = "2024-07-29T01:09:36.407Z" }, +] + +[[package]] +name = "sphinxcontrib-jquery" +version = "4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "sphinx" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/de/f3/aa67467e051df70a6330fe7770894b3e4f09436dea6881ae0b4f3d87cad8/sphinxcontrib-jquery-4.1.tar.gz", hash = "sha256:1620739f04e36a2c779f1a131a2dfd49b2fd07351bf1968ced074365933abc7a", size = 122331, upload-time = "2023-03-14T15:01:01.944Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/85/749bd22d1a68db7291c89e2ebca53f4306c3f205853cf31e9de279034c3c/sphinxcontrib_jquery-4.1-py2.py3-none-any.whl", hash = "sha256:f936030d7d0147dd026a4f2b5a57343d233f1fc7b363f68b3d4f1cb0993878ae", size = 121104, upload-time = "2023-03-14T15:01:00.356Z" }, +] + +[[package]] +name = "sphinxcontrib-jsmath" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/e8/9ed3830aeed71f17c026a07a5097edcf44b692850ef215b161b8ad875729/sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8", size = 5787, upload-time = "2019-01-21T16:10:16.347Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/42/4c8646762ee83602e3fb3fbe774c2fac12f317deb0b5dbeeedd2d3ba4b77/sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178", size = 5071, upload-time = "2019-01-21T16:10:14.333Z" }, +] + +[[package]] +name = "sphinxcontrib-qthelp" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/68/bc/9104308fc285eb3e0b31b67688235db556cd5b0ef31d96f30e45f2e51cae/sphinxcontrib_qthelp-2.0.0.tar.gz", hash = "sha256:4fe7d0ac8fc171045be623aba3e2a8f613f8682731f9153bb2e40ece16b9bbab", size = 17165, upload-time = "2024-07-29T01:09:56.435Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl", hash = "sha256:b18a828cdba941ccd6ee8445dbe72ffa3ef8cbe7505d8cd1fa0d42d3f2d5f3eb", size = 88743, upload-time = "2024-07-29T01:09:54.885Z" }, +] + +[[package]] +name = "sphinxcontrib-serializinghtml" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3b/44/6716b257b0aa6bfd51a1b31665d1c205fb12cb5ad56de752dfa15657de2f/sphinxcontrib_serializinghtml-2.0.0.tar.gz", hash = "sha256:e9d912827f872c029017a53f0ef2180b327c3f7fd23c87229f7a8e8b70031d4d", size = 16080, upload-time = "2024-07-29T01:10:09.332Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl", hash = "sha256:6e2cb0eef194e10c27ec0023bfeb25badbbb5868244cf5bc5bdc04e4464bf331", size = 92072, upload-time = "2024-07-29T01:10:08.203Z" }, +] + +[[package]] +name = "sqlalchemy" +version = "2.0.50" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "greenlet", marker = "platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/57/da/6fbf010c8ebb347679d0d100b22fe9ba5e13fd04046c5df7280d2f0bf706/sqlalchemy-2.0.50.tar.gz", hash = "sha256:af5607d11ef90fd6a5c0549fe0045dce1663d427426bcfb506dcb5346a85a3b9", size = 9907424, upload-time = "2026-05-24T19:20:04.018Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/70/a9/812a775bd8c1af0966d660238d005baf25e9bced1f038c8e71f00aa637a7/sqlalchemy-2.0.50-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7af6eeb84985bf840ba779018ff9424d61ff69b52e66b8789d3c8da7bf5341b2", size = 2161617, upload-time = "2026-05-24T20:00:00.761Z" }, + { url = "https://files.pythonhosted.org/packages/d5/74/5a6bc5496e9be8f740fbf80f9e6bd4ab965c8a80870eb07ab015e360957a/sqlalchemy-2.0.50-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0fe7822866f3a9fc5f3db21a290ce8961a53050115f05edf9402b6a5feb92a9f", size = 3244104, upload-time = "2026-05-24T20:07:38.158Z" }, + { url = "https://files.pythonhosted.org/packages/81/55/b260d8df2adc9bb0bf294f67b5f802ff0d84d99442b536b9efd0ea72d447/sqlalchemy-2.0.50-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e8e1b0f6a4dcd9b4839e2320afb5df37a6981cbc20ff9c423ae11c5537bdbd21", size = 3243039, upload-time = "2026-05-24T20:14:23.765Z" }, + { url = "https://files.pythonhosted.org/packages/e5/6d/58714005cbf370f16c3f30d30324a43be10069efcfe764f7236a2e851947/sqlalchemy-2.0.50-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e195687f1af431c9515416288373b323b6eb599f774409814e89e9d603a56e39", size = 3195017, upload-time = "2026-05-24T20:07:40.086Z" }, + { url = "https://files.pythonhosted.org/packages/30/e8/67527fee039bd3e1a6ce3f03d2b62fd87ab9099c17052810d79496727b66/sqlalchemy-2.0.50-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ea1a8a2db4b2217d456c8d7a873bfc605f06fe3584d315264ea18c2a17585d0b", size = 3215308, upload-time = "2026-05-24T20:14:26.034Z" }, + { url = "https://files.pythonhosted.org/packages/94/b2/dd3155a6a6706cb89adecf5ee6e0512f7b0ee5cf3e6f4cde67d3c20ebfda/sqlalchemy-2.0.50-cp310-cp310-win32.whl", hash = "sha256:68b154b08088b4ec32bb4d2958bfbb50e57549f91a4cd3e7f928e3553ed69031", size = 2121637, upload-time = "2026-05-24T20:08:06.401Z" }, + { url = "https://files.pythonhosted.org/packages/93/a1/a09c463ee3e7764b5ce5bd19a7f0b6eefbde62e637439ab58498cdbd6b47/sqlalchemy-2.0.50-cp310-cp310-win_amd64.whl", hash = "sha256:66e374271ecb7101273f57af1a62446a953d327eec4f8089147de57c591bbacc", size = 2144673, upload-time = "2026-05-24T20:08:07.936Z" }, + { url = "https://files.pythonhosted.org/packages/b6/5d/3172686af1770e4de2805f919a51441085f589ddadf3dd76ec582f84f497/sqlalchemy-2.0.50-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1aa6e403663a9c43c8fef7ce4bdb4cf48bcd8d352e91deda2a99f963270bd508", size = 2161366, upload-time = "2026-05-24T20:00:02.061Z" }, + { url = "https://files.pythonhosted.org/packages/0f/90/e98dedea3c3e663a17afcd003a34ba45efdac2cea3b6f2e4585e2b1e2537/sqlalchemy-2.0.50-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:51b637a84f9fa35ae1f9017e786cb142974a25305085e1b378b3647a67f65ad3", size = 3318926, upload-time = "2026-05-24T20:07:42.369Z" }, + { url = "https://files.pythonhosted.org/packages/3b/4f/501308c2babb62c11753ecb4ee88ba9eef019419a4d6cbf7cb13e2bad353/sqlalchemy-2.0.50-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2dab927761d9108550f0cf8e66ff21af56f907a0ce0a689793db615e2b55f62c", size = 3319199, upload-time = "2026-05-24T20:14:28.551Z" }, + { url = "https://files.pythonhosted.org/packages/ac/39/d88996c5e03ed6248c3a788d20f0b8d8b376b9f8a495e4bab9df7c72d2f8/sqlalchemy-2.0.50-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:545eae198d37bcf837a10ede3684e2af32458d6f35c597c35c2de7502dc38fc4", size = 3270301, upload-time = "2026-05-24T20:07:44.917Z" }, + { url = "https://files.pythonhosted.org/packages/42/1b/1ae0e65161b51cc43e5ca75430ef79d80e23b5042d645586c2c342c3b92e/sqlalchemy-2.0.50-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0fec460e18cdbb4c7773531122ce9a27e96c6ca17af3933941d94da475ad2c86", size = 3293465, upload-time = "2026-05-24T20:14:30.501Z" }, + { url = "https://files.pythonhosted.org/packages/83/29/17c0003f2c0dfa6d1b97672475707e3ec5980db09defd7fa20beb6833bbd/sqlalchemy-2.0.50-cp311-cp311-win32.whl", hash = "sha256:e6e814658818fd165e749e3d8490ef16cc7f379a118c37ada8b0589ffbaaac22", size = 2120694, upload-time = "2026-05-24T20:08:09.237Z" }, + { url = "https://files.pythonhosted.org/packages/c9/18/280d00654cc19d1fccf236fa5070f6dd04b84dde6f1b2e637bde0ff340a7/sqlalchemy-2.0.50-cp311-cp311-win_amd64.whl", hash = "sha256:1c5f858fe79c9f5d8fda065c06186356acb7f8df3cd52dbd5ee3f200e4b144f5", size = 2145315, upload-time = "2026-05-24T20:08:10.952Z" }, + { url = "https://files.pythonhosted.org/packages/be/b0/a9d19b43f38f878b1278bca5b00b909f7540d41494396dd2561f9ad0956d/sqlalchemy-2.0.50-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:23ae23d8b9d344d30d0a92f06d45825024a5790f1c1dd4cf452636a50d3e58cb", size = 2159807, upload-time = "2026-05-24T19:27:53.086Z" }, + { url = "https://files.pythonhosted.org/packages/f5/2c/191dd58a248fd2cfd4780fa82c375c505e4ad98c8b522fa69ec492130d77/sqlalchemy-2.0.50-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:47b71b933e7b4ebad407c8fdfd70d2c4f08b78b3238bb30eebdd6eb32ca51b89", size = 3343358, upload-time = "2026-05-24T20:09:29.279Z" }, + { url = "https://files.pythonhosted.org/packages/8a/2b/514fce8a7df81cf5bad7ff7865de7ac0c5776a38cc043475c4703eb7fe8b/sqlalchemy-2.0.50-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:110fdac56ace278949f00de805edacbd6141e382d992f9ba28238b3a0827a600", size = 3357994, upload-time = "2026-05-24T20:17:13.495Z" }, + { url = "https://files.pythonhosted.org/packages/35/a6/a0e283f5494f92b0d77e319ff77e437b1ffe4a051ba67c81d53234825475/sqlalchemy-2.0.50-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0f5e4ac70e9e757f6b3e87c0491ff034442ecd8dfd36d041a50564c322dafc0e", size = 3289399, upload-time = "2026-05-24T20:09:32.239Z" }, + { url = "https://files.pythonhosted.org/packages/b7/96/1b07325ba71752d6a028b77d07bed1483ad545f794e8b1dc89b3ba3b3c68/sqlalchemy-2.0.50-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:724f3dcbe53dd0151e3cb5e7ec4ba4c620bede579caacd16275dc35ce06e8615", size = 3321216, upload-time = "2026-05-24T20:17:15.581Z" }, + { url = "https://files.pythonhosted.org/packages/ed/8e/bad6ed253e8a99edfc99af02f7173ec48a1d3ed1b9b35a1b8bc1700900cc/sqlalchemy-2.0.50-cp312-cp312-win32.whl", hash = "sha256:1208050441471d003b7c8cb4054fb084f185cf35ac3f0ea270803865bca9939a", size = 2119194, upload-time = "2026-05-24T19:50:04.943Z" }, + { url = "https://files.pythonhosted.org/packages/b6/2d/314a6690dda4b9cfc571eab1a63cf6fe6e1470aa3759ccda6aa016ee0f5a/sqlalchemy-2.0.50-cp312-cp312-win_amd64.whl", hash = "sha256:9d1af51558029a156a70986b7df88f042b3d158d7c8d8fb5072912d4b32d89c7", size = 2146186, upload-time = "2026-05-24T19:50:06.74Z" }, + { url = "https://files.pythonhosted.org/packages/0b/c4/c42356b527296e9862f67990efce31ef78b4cf69cd3f80873a528a060320/sqlalchemy-2.0.50-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:06a9210bdc5f4298cff0781087e2ff45683922252dacc452846373a58761f093", size = 2156697, upload-time = "2026-05-24T19:27:54.764Z" }, + { url = "https://files.pythonhosted.org/packages/60/a1/b1a70e3c4365ac7fe9e347f3710f19b562c866fb96d45e3c891588789a7b/sqlalchemy-2.0.50-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8b53784972ade4f8174b9aa661f31a06f8a936d2cfdd602913ff3c6dd40ae873", size = 3284260, upload-time = "2026-05-24T20:09:34.195Z" }, + { url = "https://files.pythonhosted.org/packages/3f/4a/f3ac3caa19f263d57b0a47f8c91bbf56583dc2d3fc63acfbf644abb24fe0/sqlalchemy-2.0.50-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:31648fa14460537e768a7303b078e4344d208e0d23e06867c1f376a227ed82db", size = 3302280, upload-time = "2026-05-24T20:17:17.825Z" }, + { url = "https://files.pythonhosted.org/packages/66/55/ccada3e3d62254587819749a0bc69f41173eb48a6e385d10e66d32a9c88e/sqlalchemy-2.0.50-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:03f4323c980ad0e918cc9e5369b015f759f4e534db5bbaf4dc36832c10d05064", size = 3231580, upload-time = "2026-05-24T20:09:36.406Z" }, + { url = "https://files.pythonhosted.org/packages/05/f6/6809349130a2de0e109e7f00fd7d431da9565b9b2868b32ee684754f672b/sqlalchemy-2.0.50-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2b9dcc43afef8ac157cd92fce96985d6b8b0cfbd3df4d666f66b4d55a75d202f", size = 3269375, upload-time = "2026-05-24T20:17:20.34Z" }, + { url = "https://files.pythonhosted.org/packages/48/84/278a811ef4e07be9c89dc5cdd7be833268509a66a68c4897cf585e67428f/sqlalchemy-2.0.50-cp313-cp313-win32.whl", hash = "sha256:60922d6599065ddca2c6f376b9aa2f41a6b85a271725e0909490bbc50b1998a5", size = 2117229, upload-time = "2026-05-24T19:50:08.215Z" }, + { url = "https://files.pythonhosted.org/packages/f6/1c/067cc6187ed32d2ec222fe6d2643acc1659a6d0659f8a7cbc5ad3ae83280/sqlalchemy-2.0.50-cp313-cp313-win_amd64.whl", hash = "sha256:287086e67275a212c4582d166a6fb03a65ccc5551d80866270ce0dd9f34eccd3", size = 2143126, upload-time = "2026-05-24T19:50:09.691Z" }, + { url = "https://files.pythonhosted.org/packages/df/32/10ac51b4be7cdecd7e93d069251c86dfbf70b7adbd7c67b48ccea6c49e1c/sqlalchemy-2.0.50-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c966932507a4d7d0a37314927dbfcd89720e3f37d2a1e3352e7ae7939fa8e8a0", size = 2158519, upload-time = "2026-05-24T19:27:56.472Z" }, + { url = "https://files.pythonhosted.org/packages/5a/76/e703d2f7681d7d66c4c891af3f07c7ccf4c76ad7f18351de035b5eda007a/sqlalchemy-2.0.50-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:faffef4bcc20a1892e65e155293d99d60855bbbc79250ab712819cfd56a8e6bb", size = 3282063, upload-time = "2026-05-24T20:09:38.57Z" }, + { url = "https://files.pythonhosted.org/packages/31/26/ef168b184a25701f9995e8fb7e503fafd7a99c1c77cda1bc1a26ea2ed486/sqlalchemy-2.0.50-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6c206aec519a2e7bd08abbfb33436e325fd22c632d9c21a9047e376ce241646e", size = 3287069, upload-time = "2026-05-24T20:17:21.942Z" }, + { url = "https://files.pythonhosted.org/packages/c2/15/765acc2bc693bccc43ca4a95d5b69750da8aaf6db1b5c616536e087f8920/sqlalchemy-2.0.50-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:bef4ac756363227ef6402a75fee025a4bc690f92328e825868939b3b3a446a6d", size = 3230453, upload-time = "2026-05-24T20:09:40.398Z" }, + { url = "https://files.pythonhosted.org/packages/63/61/08e03c3adbf5db0087a0b6816746fec8f3032fb2f7fc899a9bb9b2a48ce4/sqlalchemy-2.0.50-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:96fbee6b19c19cd1556c8bf9419447cf2ec149ffcab7ab64348c23e54ef8547f", size = 3252413, upload-time = "2026-05-24T20:17:24.067Z" }, + { url = "https://files.pythonhosted.org/packages/03/0c/370a1f2db38436c615e10134c8a37de3688e74084792380695f3f5083860/sqlalchemy-2.0.50-cp314-cp314-win32.whl", hash = "sha256:8f00e3eb43ba30eb1b238ee03a8a62309486d1321eda3328bb611e0340033ad8", size = 2120063, upload-time = "2026-05-24T19:50:11.08Z" }, + { url = "https://files.pythonhosted.org/packages/7f/a0/fe92bb9817863bc13ba093bda931979a26cc2ca69f8e8f26d07add3d7c6f/sqlalchemy-2.0.50-cp314-cp314-win_amd64.whl", hash = "sha256:15708c613cd5005b7dffe1f66ee6a63ee8f5e46799f71c70ebad74178c676a39", size = 2145830, upload-time = "2026-05-24T19:50:12.452Z" }, + { url = "https://files.pythonhosted.org/packages/cc/ff/e5640a98a0b2f491eb8fde10fb6c773621a2e44340de231fafcc9370f4a9/sqlalchemy-2.0.50-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:3699dac4be410e97049a1658e9480da9cde956594aa0f3aebc60b88f21c5ba70", size = 2178435, upload-time = "2026-05-24T19:42:58.889Z" }, + { url = "https://files.pythonhosted.org/packages/b7/85/337116e186f1236375b5fb70c21cfac98e8e8ab0d3a47be838dc47a59e08/sqlalchemy-2.0.50-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f96233858e3df43932ac11589e22520da6e8aeb624b03fedfeebb0e8ea213086", size = 3566059, upload-time = "2026-05-24T20:01:20.848Z" }, + { url = "https://files.pythonhosted.org/packages/96/34/bb0e190e161c3c2c24314a65add57218be14a4a9486886b7f5047c1ff7c8/sqlalchemy-2.0.50-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c4e70c46fad30c3bcc6a4708bc0130a3173e11a5b25f0ea4a9d8911b450f1f52", size = 3535366, upload-time = "2026-05-24T20:03:56.768Z" }, + { url = "https://files.pythonhosted.org/packages/df/5a/a7f759f97e4fd499c5d4e4488c760d5a7fbecf3028b465a04274fcd52384/sqlalchemy-2.0.50-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:1918a3cf564d16d95bca7301005f41ab2ad50b07cd3b9da50d3ed986db148d6a", size = 3474879, upload-time = "2026-05-24T20:01:23.058Z" }, + { url = "https://files.pythonhosted.org/packages/9d/d9/2907ea38eb60687d297bf9c39e5ee58053c87b57fe8a9cae97090cecbf10/sqlalchemy-2.0.50-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:b00098cdbdbd38c7be3d568b0c9c3122b8c0ec62b911b57cd5e6e0254d60a76d", size = 3486117, upload-time = "2026-05-24T20:03:59.052Z" }, + { url = "https://files.pythonhosted.org/packages/f2/e3/5aa06f167559f8c0bdae487e297d23ba548150ab016a3418265d617a4985/sqlalchemy-2.0.50-cp314-cp314t-win32.whl", hash = "sha256:1fbd55a969d7ac44a98e3dec75016074f809fa08f871585ace58dde110d1bf3e", size = 2150823, upload-time = "2026-05-24T20:08:58.644Z" }, + { url = "https://files.pythonhosted.org/packages/65/9b/112fb8f977582d7489d036e409e3723948bcf5320b3ac465f3c481bbe8f9/sqlalchemy-2.0.50-cp314-cp314t-win_amd64.whl", hash = "sha256:c5c3cdb753a9004183e1ccb634b41611654c989e61bc68617ce878e46d6f1e51", size = 2185794, upload-time = "2026-05-24T20:09:00.319Z" }, + { url = "https://files.pythonhosted.org/packages/d0/10/f7220e9b784d295d241c86ed99aeb537f92afcd469a64861f2717e9bb077/sqlalchemy-2.0.50-py3-none-any.whl", hash = "sha256:92064363517a3ff8212b5a93b8c62876579d8dfd1ca5b561335f30152d884fa9", size = 1943861, upload-time = "2026-05-24T19:59:01.119Z" }, +] + +[[package]] +name = "stack-data" +version = "0.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asttokens" }, + { name = "executing" }, + { name = "pure-eval" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707, upload-time = "2023-09-30T13:58:05.479Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521, upload-time = "2023-09-30T13:58:03.53Z" }, +] + +[[package]] +name = "sympy" +version = "1.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mpmath" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/83/d3/803453b36afefb7c2bb238361cd4ae6125a569b4db67cd9e79846ba2d68c/sympy-1.14.0.tar.gz", hash = "sha256:d3d3fe8df1e5a0b42f0e7bdf50541697dbe7d23746e894990c030e2b05e72517", size = 7793921, upload-time = "2025-04-27T18:05:01.611Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/09/77d55d46fd61b4a135c444fc97158ef34a095e5681d0a6c10b75bf356191/sympy-1.14.0-py3-none-any.whl", hash = "sha256:e091cc3e99d2141a0ba2847328f5479b05d94a6635cb96148ccb3f34671bd8f5", size = 6299353, upload-time = "2025-04-27T18:04:59.103Z" }, +] + +[[package]] +name = "tabulate" +version = "0.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/46/58/8c37dea7bbf769b20d58e7ace7e5edfe65b849442b00ffcdd56be88697c6/tabulate-0.10.0.tar.gz", hash = "sha256:e2cfde8f79420f6deeffdeda9aaec3b6bc5abce947655d17ac662b126e48a60d", size = 91754, upload-time = "2026-03-04T18:55:34.402Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/99/55/db07de81b5c630da5cbf5c7df646580ca26dfaefa593667fc6f2fe016d2e/tabulate-0.10.0-py3-none-any.whl", hash = "sha256:f0b0622e567335c8fabaaa659f1b33bcb6ddfe2e496071b743aa113f8774f2d3", size = 39814, upload-time = "2026-03-04T18:55:31.284Z" }, +] + +[[package]] +name = "tinycss2" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a3/ae/2ca4913e5c0f09781d75482874c3a95db9105462a92ddd303c7d285d3df2/tinycss2-1.5.1.tar.gz", hash = "sha256:d339d2b616ba90ccce58da8495a78f46e55d4d25f9fd71dfd526f07e7d53f957", size = 88195, upload-time = "2025-11-23T10:29:10.082Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/45/c7b5c3168458db837e8ceab06dc77824e18202679d0463f0e8f002143a97/tinycss2-1.5.1-py3-none-any.whl", hash = "sha256:3415ba0f5839c062696996998176c4a3751d18b7edaaeeb658c9ce21ec150661", size = 28404, upload-time = "2025-11-23T10:29:08.676Z" }, +] + +[[package]] +name = "tomli" +version = "2.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/22/de/48c59722572767841493b26183a0d1cc411d54fd759c5607c4590b6563a6/tomli-2.4.1.tar.gz", hash = "sha256:7c7e1a961a0b2f2472c1ac5b69affa0ae1132c39adcb67aba98568702b9cc23f", size = 17543, upload-time = "2026-03-25T20:22:03.828Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/11/db3d5885d8528263d8adc260bb2d28ebf1270b96e98f0e0268d32b8d9900/tomli-2.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f8f0fc26ec2cc2b965b7a3b87cd19c5c6b8c5e5f436b984e85f486d652285c30", size = 154704, upload-time = "2026-03-25T20:21:10.473Z" }, + { url = "https://files.pythonhosted.org/packages/6d/f7/675db52c7e46064a9aa928885a9b20f4124ecb9bc2e1ce74c9106648d202/tomli-2.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4ab97e64ccda8756376892c53a72bd1f964e519c77236368527f758fbc36a53a", size = 149454, upload-time = "2026-03-25T20:21:12.036Z" }, + { url = "https://files.pythonhosted.org/packages/61/71/81c50943cf953efa35bce7646caab3cf457a7d8c030b27cfb40d7235f9ee/tomli-2.4.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:96481a5786729fd470164b47cdb3e0e58062a496f455ee41b4403be77cb5a076", size = 237561, upload-time = "2026-03-25T20:21:13.098Z" }, + { url = "https://files.pythonhosted.org/packages/48/c1/f41d9cb618acccca7df82aaf682f9b49013c9397212cb9f53219e3abac37/tomli-2.4.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a881ab208c0baf688221f8cecc5401bd291d67e38a1ac884d6736cbcd8247e9", size = 243824, upload-time = "2026-03-25T20:21:14.569Z" }, + { url = "https://files.pythonhosted.org/packages/22/e4/5a816ecdd1f8ca51fb756ef684b90f2780afc52fc67f987e3c61d800a46d/tomli-2.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47149d5bd38761ac8be13a84864bf0b7b70bc051806bc3669ab1cbc56216b23c", size = 242227, upload-time = "2026-03-25T20:21:15.712Z" }, + { url = "https://files.pythonhosted.org/packages/6b/49/2b2a0ef529aa6eec245d25f0c703e020a73955ad7edf73e7f54ddc608aa5/tomli-2.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ec9bfaf3ad2df51ace80688143a6a4ebc09a248f6ff781a9945e51937008fcbc", size = 247859, upload-time = "2026-03-25T20:21:17.001Z" }, + { url = "https://files.pythonhosted.org/packages/83/bd/6c1a630eaca337e1e78c5903104f831bda934c426f9231429396ce3c3467/tomli-2.4.1-cp311-cp311-win32.whl", hash = "sha256:ff2983983d34813c1aeb0fa89091e76c3a22889ee83ab27c5eeb45100560c049", size = 97204, upload-time = "2026-03-25T20:21:18.079Z" }, + { url = "https://files.pythonhosted.org/packages/42/59/71461df1a885647e10b6bb7802d0b8e66480c61f3f43079e0dcd315b3954/tomli-2.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:5ee18d9ebdb417e384b58fe414e8d6af9f4e7a0ae761519fb50f721de398dd4e", size = 108084, upload-time = "2026-03-25T20:21:18.978Z" }, + { url = "https://files.pythonhosted.org/packages/b8/83/dceca96142499c069475b790e7913b1044c1a4337e700751f48ed723f883/tomli-2.4.1-cp311-cp311-win_arm64.whl", hash = "sha256:c2541745709bad0264b7d4705ad453b76ccd191e64aa6f0fc66b69a293a45ece", size = 95285, upload-time = "2026-03-25T20:21:20.309Z" }, + { url = "https://files.pythonhosted.org/packages/c1/ba/42f134a3fe2b370f555f44b1d72feebb94debcab01676bf918d0cb70e9aa/tomli-2.4.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c742f741d58a28940ce01d58f0ab2ea3ced8b12402f162f4d534dfe18ba1cd6a", size = 155924, upload-time = "2026-03-25T20:21:21.626Z" }, + { url = "https://files.pythonhosted.org/packages/dc/c7/62d7a17c26487ade21c5422b646110f2162f1fcc95980ef7f63e73c68f14/tomli-2.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7f86fd587c4ed9dd76f318225e7d9b29cfc5a9d43de44e5754db8d1128487085", size = 150018, upload-time = "2026-03-25T20:21:23.002Z" }, + { url = "https://files.pythonhosted.org/packages/5c/05/79d13d7c15f13bdef410bdd49a6485b1c37d28968314eabee452c22a7fda/tomli-2.4.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ff18e6a727ee0ab0388507b89d1bc6a22b138d1e2fa56d1ad494586d61d2eae9", size = 244948, upload-time = "2026-03-25T20:21:24.04Z" }, + { url = "https://files.pythonhosted.org/packages/10/90/d62ce007a1c80d0b2c93e02cab211224756240884751b94ca72df8a875ca/tomli-2.4.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:136443dbd7e1dee43c68ac2694fde36b2849865fa258d39bf822c10e8068eac5", size = 253341, upload-time = "2026-03-25T20:21:25.177Z" }, + { url = "https://files.pythonhosted.org/packages/1a/7e/caf6496d60152ad4ed09282c1885cca4eea150bfd007da84aea07bcc0a3e/tomli-2.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5e262d41726bc187e69af7825504c933b6794dc3fbd5945e41a79bb14c31f585", size = 248159, upload-time = "2026-03-25T20:21:26.364Z" }, + { url = "https://files.pythonhosted.org/packages/99/e7/c6f69c3120de34bbd882c6fba7975f3d7a746e9218e56ab46a1bc4b42552/tomli-2.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5cb41aa38891e073ee49d55fbc7839cfdb2bc0e600add13874d048c94aadddd1", size = 253290, upload-time = "2026-03-25T20:21:27.46Z" }, + { url = "https://files.pythonhosted.org/packages/d6/2f/4a3c322f22c5c66c4b836ec58211641a4067364f5dcdd7b974b4c5da300c/tomli-2.4.1-cp312-cp312-win32.whl", hash = "sha256:da25dc3563bff5965356133435b757a795a17b17d01dbc0f42fb32447ddfd917", size = 98141, upload-time = "2026-03-25T20:21:28.492Z" }, + { url = "https://files.pythonhosted.org/packages/24/22/4daacd05391b92c55759d55eaee21e1dfaea86ce5c571f10083360adf534/tomli-2.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:52c8ef851d9a240f11a88c003eacb03c31fc1c9c4ec64a99a0f922b93874fda9", size = 108847, upload-time = "2026-03-25T20:21:29.386Z" }, + { url = "https://files.pythonhosted.org/packages/68/fd/70e768887666ddd9e9f5d85129e84910f2db2796f9096aa02b721a53098d/tomli-2.4.1-cp312-cp312-win_arm64.whl", hash = "sha256:f758f1b9299d059cc3f6546ae2af89670cb1c4d48ea29c3cacc4fe7de3058257", size = 95088, upload-time = "2026-03-25T20:21:30.677Z" }, + { url = "https://files.pythonhosted.org/packages/07/06/b823a7e818c756d9a7123ba2cda7d07bc2dd32835648d1a7b7b7a05d848d/tomli-2.4.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:36d2bd2ad5fb9eaddba5226aa02c8ec3fa4f192631e347b3ed28186d43be6b54", size = 155866, upload-time = "2026-03-25T20:21:31.65Z" }, + { url = "https://files.pythonhosted.org/packages/14/6f/12645cf7f08e1a20c7eb8c297c6f11d31c1b50f316a7e7e1e1de6e2e7b7e/tomli-2.4.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:eb0dc4e38e6a1fd579e5d50369aa2e10acfc9cace504579b2faabb478e76941a", size = 149887, upload-time = "2026-03-25T20:21:33.028Z" }, + { url = "https://files.pythonhosted.org/packages/5c/e0/90637574e5e7212c09099c67ad349b04ec4d6020324539297b634a0192b0/tomli-2.4.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c7f2c7f2b9ca6bdeef8f0fa897f8e05085923eb091721675170254cbc5b02897", size = 243704, upload-time = "2026-03-25T20:21:34.51Z" }, + { url = "https://files.pythonhosted.org/packages/10/8f/d3ddb16c5a4befdf31a23307f72828686ab2096f068eaf56631e136c1fdd/tomli-2.4.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f3c6818a1a86dd6dca7ddcaaf76947d5ba31aecc28cb1b67009a5877c9a64f3f", size = 251628, upload-time = "2026-03-25T20:21:36.012Z" }, + { url = "https://files.pythonhosted.org/packages/e3/f1/dbeeb9116715abee2485bf0a12d07a8f31af94d71608c171c45f64c0469d/tomli-2.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d312ef37c91508b0ab2cee7da26ec0b3ed2f03ce12bd87a588d771ae15dcf82d", size = 247180, upload-time = "2026-03-25T20:21:37.136Z" }, + { url = "https://files.pythonhosted.org/packages/d3/74/16336ffd19ed4da28a70959f92f506233bd7cfc2332b20bdb01591e8b1d1/tomli-2.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:51529d40e3ca50046d7606fa99ce3956a617f9b36380da3b7f0dd3dd28e68cb5", size = 251674, upload-time = "2026-03-25T20:21:38.298Z" }, + { url = "https://files.pythonhosted.org/packages/16/f9/229fa3434c590ddf6c0aa9af64d3af4b752540686cace29e6281e3458469/tomli-2.4.1-cp313-cp313-win32.whl", hash = "sha256:2190f2e9dd7508d2a90ded5ed369255980a1bcdd58e52f7fe24b8162bf9fedbd", size = 97976, upload-time = "2026-03-25T20:21:39.316Z" }, + { url = "https://files.pythonhosted.org/packages/6a/1e/71dfd96bcc1c775420cb8befe7a9d35f2e5b1309798f009dca17b7708c1e/tomli-2.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:8d65a2fbf9d2f8352685bc1364177ee3923d6baf5e7f43ea4959d7d8bc326a36", size = 108755, upload-time = "2026-03-25T20:21:40.248Z" }, + { url = "https://files.pythonhosted.org/packages/83/7a/d34f422a021d62420b78f5c538e5b102f62bea616d1d75a13f0a88acb04a/tomli-2.4.1-cp313-cp313-win_arm64.whl", hash = "sha256:4b605484e43cdc43f0954ddae319fb75f04cc10dd80d830540060ee7cd0243cd", size = 95265, upload-time = "2026-03-25T20:21:41.219Z" }, + { url = "https://files.pythonhosted.org/packages/3c/fb/9a5c8d27dbab540869f7c1f8eb0abb3244189ce780ba9cd73f3770662072/tomli-2.4.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:fd0409a3653af6c147209d267a0e4243f0ae46b011aa978b1080359fddc9b6cf", size = 155726, upload-time = "2026-03-25T20:21:42.23Z" }, + { url = "https://files.pythonhosted.org/packages/62/05/d2f816630cc771ad836af54f5001f47a6f611d2d39535364f148b6a92d6b/tomli-2.4.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:a120733b01c45e9a0c34aeef92bf0cf1d56cfe81ed9d47d562f9ed591a9828ac", size = 149859, upload-time = "2026-03-25T20:21:43.386Z" }, + { url = "https://files.pythonhosted.org/packages/ce/48/66341bdb858ad9bd0ceab5a86f90eddab127cf8b046418009f2125630ecb/tomli-2.4.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:559db847dc486944896521f68d8190be1c9e719fced785720d2216fe7022b662", size = 244713, upload-time = "2026-03-25T20:21:44.474Z" }, + { url = "https://files.pythonhosted.org/packages/df/6d/c5fad00d82b3c7a3ab6189bd4b10e60466f22cfe8a08a9394185c8a8111c/tomli-2.4.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01f520d4f53ef97964a240a035ec2a869fe1a37dde002b57ebc4417a27ccd853", size = 252084, upload-time = "2026-03-25T20:21:45.62Z" }, + { url = "https://files.pythonhosted.org/packages/00/71/3a69e86f3eafe8c7a59d008d245888051005bd657760e96d5fbfb0b740c2/tomli-2.4.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7f94b27a62cfad8496c8d2513e1a222dd446f095fca8987fceef261225538a15", size = 247973, upload-time = "2026-03-25T20:21:46.937Z" }, + { url = "https://files.pythonhosted.org/packages/67/50/361e986652847fec4bd5e4a0208752fbe64689c603c7ae5ea7cb16b1c0ca/tomli-2.4.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ede3e6487c5ef5d28634ba3f31f989030ad6af71edfb0055cbbd14189ff240ba", size = 256223, upload-time = "2026-03-25T20:21:48.467Z" }, + { url = "https://files.pythonhosted.org/packages/8c/9a/b4173689a9203472e5467217e0154b00e260621caa227b6fa01feab16998/tomli-2.4.1-cp314-cp314-win32.whl", hash = "sha256:3d48a93ee1c9b79c04bb38772ee1b64dcf18ff43085896ea460ca8dec96f35f6", size = 98973, upload-time = "2026-03-25T20:21:49.526Z" }, + { url = "https://files.pythonhosted.org/packages/14/58/640ac93bf230cd27d002462c9af0d837779f8773bc03dee06b5835208214/tomli-2.4.1-cp314-cp314-win_amd64.whl", hash = "sha256:88dceee75c2c63af144e456745e10101eb67361050196b0b6af5d717254dddf7", size = 109082, upload-time = "2026-03-25T20:21:50.506Z" }, + { url = "https://files.pythonhosted.org/packages/d5/2f/702d5e05b227401c1068f0d386d79a589bb12bf64c3d2c72ce0631e3bc49/tomli-2.4.1-cp314-cp314-win_arm64.whl", hash = "sha256:b8c198f8c1805dc42708689ed6864951fd2494f924149d3e4bce7710f8eb5232", size = 96490, upload-time = "2026-03-25T20:21:51.474Z" }, + { url = "https://files.pythonhosted.org/packages/45/4b/b877b05c8ba62927d9865dd980e34a755de541eb65fffba52b4cc495d4d2/tomli-2.4.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:d4d8fe59808a54658fcc0160ecfb1b30f9089906c50b23bcb4c69eddc19ec2b4", size = 164263, upload-time = "2026-03-25T20:21:52.543Z" }, + { url = "https://files.pythonhosted.org/packages/24/79/6ab420d37a270b89f7195dec5448f79400d9e9c1826df982f3f8e97b24fd/tomli-2.4.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7008df2e7655c495dd12d2a4ad038ff878d4ca4b81fccaf82b714e07eae4402c", size = 160736, upload-time = "2026-03-25T20:21:53.674Z" }, + { url = "https://files.pythonhosted.org/packages/02/e0/3630057d8eb170310785723ed5adcdfb7d50cb7e6455f85ba8a3deed642b/tomli-2.4.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1d8591993e228b0c930c4bb0db464bdad97b3289fb981255d6c9a41aedc84b2d", size = 270717, upload-time = "2026-03-25T20:21:55.129Z" }, + { url = "https://files.pythonhosted.org/packages/7a/b4/1613716072e544d1a7891f548d8f9ec6ce2faf42ca65acae01d76ea06bb0/tomli-2.4.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:734e20b57ba95624ecf1841e72b53f6e186355e216e5412de414e3c51e5e3c41", size = 278461, upload-time = "2026-03-25T20:21:56.228Z" }, + { url = "https://files.pythonhosted.org/packages/05/38/30f541baf6a3f6df77b3df16b01ba319221389e2da59427e221ef417ac0c/tomli-2.4.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8a650c2dbafa08d42e51ba0b62740dae4ecb9338eefa093aa5c78ceb546fcd5c", size = 274855, upload-time = "2026-03-25T20:21:57.653Z" }, + { url = "https://files.pythonhosted.org/packages/77/a3/ec9dd4fd2c38e98de34223b995a3b34813e6bdadf86c75314c928350ed14/tomli-2.4.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:504aa796fe0569bb43171066009ead363de03675276d2d121ac1a4572397870f", size = 283144, upload-time = "2026-03-25T20:21:59.089Z" }, + { url = "https://files.pythonhosted.org/packages/ef/be/605a6261cac79fba2ec0c9827e986e00323a1945700969b8ee0b30d85453/tomli-2.4.1-cp314-cp314t-win32.whl", hash = "sha256:b1d22e6e9387bf4739fbe23bfa80e93f6b0373a7f1b96c6227c32bef95a4d7a8", size = 108683, upload-time = "2026-03-25T20:22:00.214Z" }, + { url = "https://files.pythonhosted.org/packages/12/64/da524626d3b9cc40c168a13da8335fe1c51be12c0a63685cc6db7308daae/tomli-2.4.1-cp314-cp314t-win_amd64.whl", hash = "sha256:2c1c351919aca02858f740c6d33adea0c5deea37f9ecca1cc1ef9e884a619d26", size = 121196, upload-time = "2026-03-25T20:22:01.169Z" }, + { url = "https://files.pythonhosted.org/packages/5a/cd/e80b62269fc78fc36c9af5a6b89c835baa8af28ff5ad28c7028d60860320/tomli-2.4.1-cp314-cp314t-win_arm64.whl", hash = "sha256:eab21f45c7f66c13f2a9e0e1535309cee140182a9cdae1e041d02e47291e8396", size = 100393, upload-time = "2026-03-25T20:22:02.137Z" }, + { url = "https://files.pythonhosted.org/packages/7b/61/cceae43728b7de99d9b847560c262873a1f6c98202171fd5ed62640b494b/tomli-2.4.1-py3-none-any.whl", hash = "sha256:0d85819802132122da43cb86656f8d1f8c6587d54ae7dcaf30e90533028b49fe", size = 14583, upload-time = "2026-03-25T20:22:03.012Z" }, +] + +[[package]] +name = "torch" +version = "2.10.0" +source = { registry = "https://download.pytorch.org/whl/cpu" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version < '3.11' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "filelock", marker = "(sys_platform == 'darwin' and extra == 'extra-13-torchpfaffian-cpu') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "fsspec", marker = "(sys_platform == 'darwin' and extra == 'extra-13-torchpfaffian-cpu') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "jinja2", marker = "(sys_platform == 'darwin' and extra == 'extra-13-torchpfaffian-cpu') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'extra-13-torchpfaffian-cpu') or (python_full_version >= '3.11' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (python_full_version >= '3.11' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "networkx", version = "3.6.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform == 'darwin' and extra == 'extra-13-torchpfaffian-cpu') or (python_full_version < '3.11' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (python_full_version < '3.11' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (python_full_version < '3.11' and extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "setuptools", marker = "(python_full_version >= '3.12' and sys_platform == 'darwin' and extra == 'extra-13-torchpfaffian-cpu') or (python_full_version < '3.12' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (python_full_version < '3.12' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (python_full_version < '3.12' and extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "sympy", marker = "(sys_platform == 'darwin' and extra == 'extra-13-torchpfaffian-cpu') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "typing-extensions", marker = "(sys_platform == 'darwin' and extra == 'extra-13-torchpfaffian-cpu') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, +] +wheels = [ + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0-1-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:4db72a4d257c45c3502f11764ee41460a87312fdc3dff47a8957812efe961725", upload-time = "2026-02-06T16:27:14Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0-1-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:0826ac8e409551e12b2360ac18b4161a838cbd111933e694752f351191331d09", upload-time = "2026-02-06T16:27:14Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0-1-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:7fbbf409143a4fe0812a40c0b46a436030a7e1d14fe8c5234dfbe44df47f617e", upload-time = "2026-02-06T16:27:14Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0-1-cp313-none-macosx_11_0_arm64.whl", hash = "sha256:b39cafff7229699f9d6e172cac74d85fd71b568268e439e08d9c540e54732a3e", upload-time = "2026-02-06T16:27:17Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0-2-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:7417ef370d7c3969dd509dae8d5c7daeb945af335ab76dd38358ba30a91251c1", upload-time = "2026-02-10T19:55:42Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0-2-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:90821a3194b8806d9fa9fdaa9308c1bc73df0c26808274b14129a97c99f35794", upload-time = "2026-02-10T19:55:42Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0-2-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:358bd7125cbec6e692d60618a5eec7f55a51b29e3652a849fd42af021d818023", upload-time = "2026-02-10T19:55:42Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0-2-cp313-none-macosx_11_0_arm64.whl", hash = "sha256:470de4176007c2700735e003a830828a88d27129032a3add07291da07e2a94e8", upload-time = "2026-02-10T19:55:43Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:2d16abfce6c92584ceeb00c3b2665d5798424dd9ed235ea69b72e045cd53ae97", upload-time = "2026-01-23T15:09:55Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:4584ab167995c0479f6821e3dceaf199c8166c811d3adbba5d8eedbbfa6764fd", upload-time = "2026-01-23T15:09:55Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:45a1c5057629444aeb1c452c18298fa7f30f2f7aeadd4dc41f9d340980294407", upload-time = "2026-01-23T15:09:55Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:339e05502b6c839db40e88720cb700f5a3b50cda332284873e851772d41b2c1e", upload-time = "2026-01-23T15:09:57Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0-cp313-none-macosx_11_0_arm64.whl", hash = "sha256:840351da59cedb7bcbc51981880050813c19ef6b898a7fecf73a3afc71aff3fe", upload-time = "2026-01-23T15:09:59Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:c88b1129fd4e14f0f882963c6728315caae35d2f47374d17edeed1edc7697497", upload-time = "2026-01-23T15:09:59Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:f4bea7dc451267c028593751612ad559299589304e68df54ae7672427893ff2c", upload-time = "2026-01-23T15:10:01Z" }, +] + +[[package]] +name = "torch" +version = "2.10.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", + "python_full_version < '3.11'", +] +dependencies = [ + { name = "filelock", marker = "(extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130')" }, + { name = "fsspec", marker = "(extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130')" }, + { name = "jinja2", marker = "(extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130')" }, + { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "networkx", version = "3.6.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "setuptools", marker = "(python_full_version >= '3.12' and extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "sympy", marker = "(extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130')" }, + { name = "typing-extensions", marker = "(extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130')" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/5b/30/bfebdd8ec77db9a79775121789992d6b3b75ee5494971294d7b4b7c999bc/torch-2.10.0-2-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:2b980edd8d7c0a68c4e951ee1856334a43193f98730d97408fbd148c1a933313", size = 79411457, upload-time = "2026-02-10T21:44:59.189Z" }, + { url = "https://files.pythonhosted.org/packages/0f/8b/4b61d6e13f7108f36910df9ab4b58fd389cc2520d54d81b88660804aad99/torch-2.10.0-2-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:418997cb02d0a0f1497cf6a09f63166f9f5df9f3e16c8a716ab76a72127c714f", size = 79423467, upload-time = "2026-02-10T21:44:48.711Z" }, + { url = "https://files.pythonhosted.org/packages/d3/54/a2ba279afcca44bbd320d4e73675b282fcee3d81400ea1b53934efca6462/torch-2.10.0-2-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:13ec4add8c3faaed8d13e0574f5cd4a323c11655546f91fbe6afa77b57423574", size = 79498202, upload-time = "2026-02-10T21:44:52.603Z" }, + { url = "https://files.pythonhosted.org/packages/ec/23/2c9fe0c9c27f7f6cb865abcea8a4568f29f00acaeadfc6a37f6801f84cb4/torch-2.10.0-2-cp313-none-macosx_11_0_arm64.whl", hash = "sha256:e521c9f030a3774ed770a9c011751fb47c4d12029a3d6522116e48431f2ff89e", size = 79498254, upload-time = "2026-02-10T21:44:44.095Z" }, + { url = "https://files.pythonhosted.org/packages/16/ee/efbd56687be60ef9af0c9c0ebe106964c07400eade5b0af8902a1d8cd58c/torch-2.10.0-3-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a1ff626b884f8c4e897c4c33782bdacdff842a165fee79817b1dd549fdda1321", size = 915510070, upload-time = "2026-03-11T14:16:39.386Z" }, + { url = "https://files.pythonhosted.org/packages/36/ab/7b562f1808d3f65414cd80a4f7d4bb00979d9355616c034c171249e1a303/torch-2.10.0-3-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:ac5bdcbb074384c66fa160c15b1ead77839e3fe7ed117d667249afce0acabfac", size = 915518691, upload-time = "2026-03-11T14:15:43.147Z" }, + { url = "https://files.pythonhosted.org/packages/b3/7a/abada41517ce0011775f0f4eacc79659bc9bc6c361e6bfe6f7052a6b9363/torch-2.10.0-3-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:98c01b8bb5e3240426dcde1446eed6f40c778091c8544767ef1168fc663a05a6", size = 915622781, upload-time = "2026-03-11T14:17:11.354Z" }, + { url = "https://files.pythonhosted.org/packages/ab/c6/4dfe238342ffdcec5aef1c96c457548762d33c40b45a1ab7033bb26d2ff2/torch-2.10.0-3-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:80b1b5bfe38eb0e9f5ff09f206dcac0a87aadd084230d4a36eea5ec5232c115b", size = 915627275, upload-time = "2026-03-11T14:16:11.325Z" }, + { url = "https://files.pythonhosted.org/packages/d8/f0/72bf18847f58f877a6a8acf60614b14935e2f156d942483af1ffc081aea0/torch-2.10.0-3-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:46b3574d93a2a8134b3f5475cfb98e2eb46771794c57015f6ad1fb795ec25e49", size = 915523474, upload-time = "2026-03-11T14:17:44.422Z" }, + { url = "https://files.pythonhosted.org/packages/f4/39/590742415c3030551944edc2ddc273ea1fdfe8ffb2780992e824f1ebee98/torch-2.10.0-3-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:b1d5e2aba4eb7f8e87fbe04f86442887f9167a35f092afe4c237dfcaaef6e328", size = 915632474, upload-time = "2026-03-11T14:15:13.666Z" }, + { url = "https://files.pythonhosted.org/packages/b6/8e/34949484f764dde5b222b7fe3fede43e4a6f0da9d7f8c370bb617d629ee2/torch-2.10.0-3-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:0228d20b06701c05a8f978357f657817a4a63984b0c90745def81c18aedfa591", size = 915523882, upload-time = "2026-03-11T14:14:46.311Z" }, + { url = "https://files.pythonhosted.org/packages/0c/1a/c61f36cfd446170ec27b3a4984f072fd06dab6b5d7ce27e11adb35d6c838/torch-2.10.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:5276fa790a666ee8becaffff8acb711922252521b28fbce5db7db5cf9cb2026d", size = 145992962, upload-time = "2026-01-21T16:24:14.04Z" }, + { url = "https://files.pythonhosted.org/packages/b5/60/6662535354191e2d1555296045b63e4279e5a9dbad49acf55a5d38655a39/torch-2.10.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:aaf663927bcd490ae971469a624c322202a2a1e68936eb952535ca4cd3b90444", size = 915599237, upload-time = "2026-01-21T16:23:25.497Z" }, + { url = "https://files.pythonhosted.org/packages/40/b8/66bbe96f0d79be2b5c697b2e0b187ed792a15c6c4b8904613454651db848/torch-2.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:a4be6a2a190b32ff5c8002a0977a25ea60e64f7ba46b1be37093c141d9c49aeb", size = 113720931, upload-time = "2026-01-21T16:24:23.743Z" }, + { url = "https://files.pythonhosted.org/packages/76/bb/d820f90e69cda6c8169b32a0c6a3ab7b17bf7990b8f2c680077c24a3c14c/torch-2.10.0-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:35e407430795c8d3edb07a1d711c41cc1f9eaddc8b2f1cc0a165a6767a8fb73d", size = 79411450, upload-time = "2026-01-21T16:25:30.692Z" }, + { url = "https://files.pythonhosted.org/packages/78/89/f5554b13ebd71e05c0b002f95148033e730d3f7067f67423026cc9c69410/torch-2.10.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:3282d9febd1e4e476630a099692b44fdc214ee9bf8ee5377732d9d9dfe5712e4", size = 145992610, upload-time = "2026-01-21T16:25:26.327Z" }, + { url = "https://files.pythonhosted.org/packages/ae/30/a3a2120621bf9c17779b169fc17e3dc29b230c29d0f8222f499f5e159aa8/torch-2.10.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a2f9edd8dbc99f62bc4dfb78af7bf89499bca3d753423ac1b4e06592e467b763", size = 915607863, upload-time = "2026-01-21T16:25:06.696Z" }, + { url = "https://files.pythonhosted.org/packages/6f/3d/c87b33c5f260a2a8ad68da7147e105f05868c281c63d65ed85aa4da98c66/torch-2.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:29b7009dba4b7a1c960260fc8ac85022c784250af43af9fb0ebafc9883782ebd", size = 113723116, upload-time = "2026-01-21T16:25:21.916Z" }, + { url = "https://files.pythonhosted.org/packages/61/d8/15b9d9d3a6b0c01b883787bd056acbe5cc321090d4b216d3ea89a8fcfdf3/torch-2.10.0-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:b7bd80f3477b830dd166c707c5b0b82a898e7b16f59a7d9d42778dd058272e8b", size = 79423461, upload-time = "2026-01-21T16:24:50.266Z" }, + { url = "https://files.pythonhosted.org/packages/cc/af/758e242e9102e9988969b5e621d41f36b8f258bb4a099109b7a4b4b50ea4/torch-2.10.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:5fd4117d89ffd47e3dcc71e71a22efac24828ad781c7e46aaaf56bf7f2796acf", size = 145996088, upload-time = "2026-01-21T16:24:44.171Z" }, + { url = "https://files.pythonhosted.org/packages/23/8e/3c74db5e53bff7ed9e34c8123e6a8bfef718b2450c35eefab85bb4a7e270/torch-2.10.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:787124e7db3b379d4f1ed54dd12ae7c741c16a4d29b49c0226a89bea50923ffb", size = 915711952, upload-time = "2026-01-21T16:23:53.503Z" }, + { url = "https://files.pythonhosted.org/packages/6e/01/624c4324ca01f66ae4c7cd1b74eb16fb52596dce66dbe51eff95ef9e7a4c/torch-2.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:2c66c61f44c5f903046cc696d088e21062644cbe541c7f1c4eaae88b2ad23547", size = 113757972, upload-time = "2026-01-21T16:24:39.516Z" }, + { url = "https://files.pythonhosted.org/packages/c9/5c/dee910b87c4d5c0fcb41b50839ae04df87c1cfc663cf1b5fca7ea565eeaa/torch-2.10.0-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:6d3707a61863d1c4d6ebba7be4ca320f42b869ee657e9b2c21c736bf17000294", size = 79498198, upload-time = "2026-01-21T16:24:34.704Z" }, + { url = "https://files.pythonhosted.org/packages/c9/6f/f2e91e34e3fcba2e3fc8d8f74e7d6c22e74e480bbd1db7bc8900fdf3e95c/torch-2.10.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:5c4d217b14741e40776dd7074d9006fd28b8a97ef5654db959d8635b2fe5f29b", size = 146004247, upload-time = "2026-01-21T16:24:29.335Z" }, + { url = "https://files.pythonhosted.org/packages/98/fb/5160261aeb5e1ee12ee95fe599d0541f7c976c3701d607d8fc29e623229f/torch-2.10.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:6b71486353fce0f9714ca0c9ef1c850a2ae766b409808acd58e9678a3edb7738", size = 915716445, upload-time = "2026-01-21T16:22:45.353Z" }, + { url = "https://files.pythonhosted.org/packages/6a/16/502fb1b41e6d868e8deb5b0e3ae926bbb36dab8ceb0d1b769b266ad7b0c3/torch-2.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:c2ee399c644dc92ef7bc0d4f7e74b5360c37cdbe7c5ba11318dda49ffac2bc57", size = 113757050, upload-time = "2026-01-21T16:24:19.204Z" }, + { url = "https://files.pythonhosted.org/packages/1a/0b/39929b148f4824bc3ad6f9f72a29d4ad865bcf7ebfc2fa67584773e083d2/torch-2.10.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:3202429f58309b9fa96a614885eace4b7995729f44beb54d3e4a47773649d382", size = 79851305, upload-time = "2026-01-21T16:24:09.209Z" }, + { url = "https://files.pythonhosted.org/packages/d8/14/21fbce63bc452381ba5f74a2c0a959fdf5ad5803ccc0c654e752e0dbe91a/torch-2.10.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:aae1b29cd68e50a9397f5ee897b9c24742e9e306f88a807a27d617f07adb3bd8", size = 146005472, upload-time = "2026-01-21T16:22:29.022Z" }, + { url = "https://files.pythonhosted.org/packages/54/fd/b207d1c525cb570ef47f3e9f836b154685011fce11a2f444ba8a4084d042/torch-2.10.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:6021db85958db2f07ec94e1bc77212721ba4920c12a18dc552d2ae36a3eb163f", size = 915612644, upload-time = "2026-01-21T16:21:47.019Z" }, + { url = "https://files.pythonhosted.org/packages/36/53/0197f868c75f1050b199fe58f9bf3bf3aecac9b4e85cc9c964383d745403/torch-2.10.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ff43db38af76fda183156153983c9a096fc4c78d0cd1e07b14a2314c7f01c2c8", size = 113997015, upload-time = "2026-01-21T16:23:00.767Z" }, + { url = "https://files.pythonhosted.org/packages/0e/13/e76b4d9c160e89fff48bf16b449ea324bda84745d2ab30294c37c2434c0d/torch-2.10.0-cp313-none-macosx_11_0_arm64.whl", hash = "sha256:cdf2a523d699b70d613243211ecaac14fe9c5df8a0b0a9c02add60fb2a413e0f", size = 79498248, upload-time = "2026-01-21T16:23:09.315Z" }, + { url = "https://files.pythonhosted.org/packages/4f/93/716b5ac0155f1be70ed81bacc21269c3ece8dba0c249b9994094110bfc51/torch-2.10.0-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:bf0d9ff448b0218e0433aeb198805192346c4fd659c852370d5cc245f602a06a", size = 79464992, upload-time = "2026-01-21T16:23:05.162Z" }, + { url = "https://files.pythonhosted.org/packages/69/2b/51e663ff190c9d16d4a8271203b71bc73a16aa7619b9f271a69b9d4a936b/torch-2.10.0-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:233aed0659a2503b831d8a67e9da66a62c996204c0bba4f4c442ccc0c68a3f60", size = 146018567, upload-time = "2026-01-21T16:22:23.393Z" }, + { url = "https://files.pythonhosted.org/packages/5e/cd/4b95ef7f293b927c283db0b136c42be91c8ec6845c44de0238c8c23bdc80/torch-2.10.0-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:682497e16bdfa6efeec8cde66531bc8d1fbbbb4d8788ec6173c089ed3cc2bfe5", size = 915721646, upload-time = "2026-01-21T16:21:16.983Z" }, + { url = "https://files.pythonhosted.org/packages/56/97/078a007208f8056d88ae43198833469e61a0a355abc0b070edd2c085eb9a/torch-2.10.0-cp314-cp314-win_amd64.whl", hash = "sha256:6528f13d2a8593a1a412ea07a99812495bec07e9224c28b2a25c0a30c7da025c", size = 113752373, upload-time = "2026-01-21T16:22:13.471Z" }, + { url = "https://files.pythonhosted.org/packages/d8/94/71994e7d0d5238393df9732fdab607e37e2b56d26a746cb59fdb415f8966/torch-2.10.0-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:f5ab4ba32383061be0fb74bda772d470140a12c1c3b58a0cfbf3dae94d164c28", size = 79850324, upload-time = "2026-01-21T16:22:09.494Z" }, + { url = "https://files.pythonhosted.org/packages/e2/65/1a05346b418ea8ccd10360eef4b3e0ce688fba544e76edec26913a8d0ee0/torch-2.10.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:716b01a176c2a5659c98f6b01bf868244abdd896526f1c692712ab36dbaf9b63", size = 146006482, upload-time = "2026-01-21T16:22:18.42Z" }, + { url = "https://files.pythonhosted.org/packages/1d/b9/5f6f9d9e859fc3235f60578fa64f52c9c6e9b4327f0fe0defb6de5c0de31/torch-2.10.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:d8f5912ba938233f86361e891789595ff35ca4b4e2ac8fe3670895e5976731d6", size = 915613050, upload-time = "2026-01-21T16:20:49.035Z" }, + { url = "https://files.pythonhosted.org/packages/66/4d/35352043ee0eaffdeff154fad67cd4a31dbed7ff8e3be1cc4549717d6d51/torch-2.10.0-cp314-cp314t-win_amd64.whl", hash = "sha256:71283a373f0ee2c89e0f0d5f446039bdabe8dbc3c9ccf35f0f784908b0acd185", size = 113995816, upload-time = "2026-01-21T16:22:05.312Z" }, +] + +[[package]] +name = "torch" +version = "2.10.0+cpu" +source = { registry = "https://download.pytorch.org/whl/cpu" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform != 'darwin'", + "python_full_version == '3.11.*' and sys_platform != 'darwin'", + "python_full_version < '3.11' and sys_platform != 'darwin'", +] +dependencies = [ + { name = "filelock", marker = "(sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cpu') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "fsspec", marker = "(sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cpu') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "jinja2", marker = "(sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cpu') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cpu') or (python_full_version >= '3.11' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (python_full_version >= '3.11' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (sys_platform == 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (sys_platform == 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "networkx", version = "3.6.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cpu') or (python_full_version < '3.11' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (python_full_version < '3.11' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (python_full_version < '3.11' and extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (sys_platform == 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (sys_platform == 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "setuptools", marker = "(python_full_version >= '3.12' and sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cpu') or (python_full_version < '3.12' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (python_full_version < '3.12' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (python_full_version < '3.12' and extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (sys_platform == 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (sys_platform == 'darwin' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "sympy", marker = "(sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cpu') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "typing-extensions", marker = "(sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cpu') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, +] +wheels = [ + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp310-cp310-linux_aarch64.whl", hash = "sha256:31ae44836c8b9bbd1a3943d29c7c7457709ddf7c6173aa34aefe9d2203e4c405", upload-time = "2026-01-23T15:10:02Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp310-cp310-linux_s390x.whl", hash = "sha256:beadc2a6a1785b09a46daad378de91ef274b8d3eea7af0bc2d017d97f115afdf", upload-time = "2026-01-23T15:10:03Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:d63ee6a80982fd73fe44bb70d97d2976e010312ff6db81d7bfb9167b06dd45b9", upload-time = "2026-01-23T15:10:05Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a280ffaea7b9c828e0c1b9b3bd502d9b6a649dc9416997b69b84544bd469f215", upload-time = "2026-01-23T15:10:07Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp310-cp310-win_amd64.whl", hash = "sha256:6c6f0df770144907092a0d067048d96ed4f278a6c840376d2ff0e27e7579b925", upload-time = "2026-01-23T15:10:09Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp311-cp311-linux_aarch64.whl", hash = "sha256:ce5c113d1f55f8c1f5af05047a24e50d11d293e0cbbb5bf7a75c6c761edd6eaa", upload-time = "2026-01-23T15:10:11Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp311-cp311-linux_s390x.whl", hash = "sha256:0e286fcf6ce0cc7b204396c9b4ea0d375f1f0c3e752f68ce3d3aeb265511db8c", upload-time = "2026-01-23T15:10:12Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:1cfcb9b1558c6e52dffd0d4effce83b13c5ae5d97338164c372048c21f9cfccb", upload-time = "2026-01-23T15:10:15Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:b7cb1ec66cefb90fd7b676eac72cfda3b8d4e4d0cacd7a531963bc2e0a9710ab", upload-time = "2026-01-23T15:10:15Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp311-cp311-win_amd64.whl", hash = "sha256:17a09465bab2aab8f0f273410297133d8d8fb6dd84dccbd252ca4a4f3a111847", upload-time = "2026-01-23T15:10:19Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp311-cp311-win_arm64.whl", hash = "sha256:c35c0de592941d4944698dbfa87271ab85d3370eca3b694943a2ab307ac34b3f", upload-time = "2026-01-23T15:10:20Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp312-cp312-linux_aarch64.whl", hash = "sha256:8de5a36371b775e2d4881ed12cc7f2de400b1ad3d728aa74a281f649f87c9b8c", upload-time = "2026-01-23T15:10:22Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp312-cp312-linux_s390x.whl", hash = "sha256:9accc30b56cb6756d4a9d04fcb8ebc0bb68c7d55c1ed31a8657397d316d31596", upload-time = "2026-01-23T15:10:24Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:179451716487f8cb09b56459667fa1f5c4c0946c1e75fbeae77cfc40a5768d87", upload-time = "2026-01-23T15:10:25Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ee40b8a4b4b2cf0670c6fd4f35a7ef23871af956fecb238fbf5da15a72650b1d", upload-time = "2026-01-23T15:10:27Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp312-cp312-win_amd64.whl", hash = "sha256:21cb5436978ef47c823b7a813ff0f8c2892e266cfe0f1d944879b5fba81bf4e1", upload-time = "2026-01-23T15:10:30Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp312-cp312-win_arm64.whl", hash = "sha256:3eaa727e6a73affa61564d86b9d03191df45c8650d0666bd3d57c8597ef61e78", upload-time = "2026-01-23T15:10:31Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp313-cp313-linux_aarch64.whl", hash = "sha256:fd215f3d0f681905c5b56b0630a3d666900a37fcc3ca5b937f95275c66f9fd9c", upload-time = "2026-01-23T15:10:34Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp313-cp313-linux_s390x.whl", hash = "sha256:170a0623108055be5199370335cf9b41ba6875b3cb6f086db4aee583331a4899", upload-time = "2026-01-23T15:10:35Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:e51994492cdb76edce29da88de3672a3022f9ef0ffd90345436948d4992be2c7", upload-time = "2026-01-23T15:10:37Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:8d316e5bf121f1eab1147e49ad0511a9d92e4c45cc357d1ab0bee440da71a095", upload-time = "2026-01-23T15:10:38Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp313-cp313-win_amd64.whl", hash = "sha256:b719da5af01b59126ac13eefd6ba3dd12d002dc0e8e79b8b365e55267a8189d3", upload-time = "2026-01-23T15:10:41Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp313-cp313-win_arm64.whl", hash = "sha256:b67d91326e4ed9eccbd6b7d84ed7ffa43f93103aa3f0b24145f3001f3b11b714", upload-time = "2026-01-23T15:10:42Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp313-cp313t-linux_aarch64.whl", hash = "sha256:5af75e5f49de21b0bdf7672bc27139bd285f9e8dbcabe2d617a2eb656514ac36", upload-time = "2026-01-23T15:10:44Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp313-cp313t-linux_s390x.whl", hash = "sha256:ba51ef01a510baf8fff576174f702c47e1aa54389a9f1fba323bb1a5003ff0bf", upload-time = "2026-01-23T15:10:48Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:0fedcb1a77e8f2aaf7bfd21591bf6d1e0b207473268c9be16b17cb7783253969", upload-time = "2026-01-23T15:10:48Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:106dd1930cb30a4a337366ba3f9b25318ebf940f51fd46f789281dd9e736bdc4", upload-time = "2026-01-23T15:10:50Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp313-cp313t-win_amd64.whl", hash = "sha256:eb1bde1ce198f05c8770017de27e001d404499cf552aaaa014569eff56ca25c0", upload-time = "2026-01-23T15:10:50Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp314-cp314-linux_aarch64.whl", hash = "sha256:ea2bcc9d1fca66974a71d4bf9a502539283f35d61fcab5a799b4e120846f1e02", upload-time = "2026-01-23T15:10:53Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp314-cp314-linux_s390x.whl", hash = "sha256:f8294fd2fc6dd8f4435a891a0122307a043b14b21f0dac1bca63c85bfb59e586", upload-time = "2026-01-23T15:10:55Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:a28fdbcfa2fbacffec81300f24dd1bed2b0ccfdbed107a823cff12bc1db070f6", upload-time = "2026-01-23T15:10:56Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:aada8afc068add586464b2a55adb7cc9091eec55caf5320447204741cb6a0604", upload-time = "2026-01-23T15:10:58Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp314-cp314-win_amd64.whl", hash = "sha256:2adc71fe471e98a608723bfc837f7e1929885ebb912c693597711e139c1cda41", upload-time = "2026-01-23T15:11:01Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp314-cp314t-linux_aarch64.whl", hash = "sha256:9412bd37b70f5ebd1205242c4ba4cabae35a605947f2b30806d5c9b467936db9", upload-time = "2026-01-23T15:11:03Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp314-cp314t-linux_s390x.whl", hash = "sha256:e71c476517c33e7db69825a9ff46c7f47a723ec4dac5b2481cff4246d1c632be", upload-time = "2026-01-23T15:11:04Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:23882f8d882460aca809882fc42f5e343bf07585274f929ced00177d1be1eb67", upload-time = "2026-01-23T15:11:07Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:4fcd8b4cc2ae20f2b7749fb275349c55432393868778c2d50a08e81d5ee5591e", upload-time = "2026-01-23T15:11:07Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp314-cp314t-win_amd64.whl", hash = "sha256:ffc8da9a1341092d6a90cb5b1c1a33cd61abf0fb43f0cd88443c27fa372c26ae", upload-time = "2026-01-23T15:11:10Z" }, +] + +[[package]] +name = "torch" +version = "2.10.0+cu128" +source = { registry = "https://download.pytorch.org/whl/cu128" } +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", + "python_full_version < '3.11'", +] +dependencies = [ + { name = "cuda-bindings", version = "12.9.4", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "filelock", marker = "extra == 'extra-13-torchpfaffian-cu128' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "fsspec", marker = "extra == 'extra-13-torchpfaffian-cu128' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "jinja2", marker = "extra == 'extra-13-torchpfaffian-cu128' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "networkx", version = "3.6.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "nvidia-cublas-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "nvidia-cuda-cupti-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "nvidia-cuda-nvrtc-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "nvidia-cuda-runtime-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "nvidia-cudnn-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "nvidia-cufft-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "nvidia-cufile-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "nvidia-curand-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "nvidia-cusolver-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "nvidia-cusparse-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "nvidia-cusparselt-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "nvidia-nccl-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "nvidia-nvjitlink-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "nvidia-nvshmem-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "nvidia-nvtx-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "setuptools", marker = "(python_full_version >= '3.12' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "sympy", marker = "extra == 'extra-13-torchpfaffian-cu128' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "triton", marker = "(sys_platform == 'linux' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "typing-extensions", marker = "extra == 'extra-13-torchpfaffian-cu128' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, +] +wheels = [ + { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.10.0%2Bcu128-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:e186f57ef1de1aa877943259819468fc6f27efb583b4a91f9215ada7b7f4e6cc", upload-time = "2026-01-21T15:21:34Z" }, + { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.10.0%2Bcu128-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:36368507b56eaa51acbd3c96ac8893bb9a86991ffcd0699fea3a1a74a2b8bdcb", upload-time = "2026-01-21T15:21:34Z" }, + { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.10.0%2Bcu128-cp310-cp310-win_amd64.whl", hash = "sha256:14d2831b9292c3a9b0d80116451315a08ffe8db745d403d06000bc47165b1f9e", upload-time = "2026-01-21T15:21:34Z" }, + { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.10.0%2Bcu128-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:85ed7944655ea6fd69377692e9cbfd7bba28d99696ceae79985e7caa99cf0a95", upload-time = "2026-01-21T15:21:36Z" }, + { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.10.0%2Bcu128-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:1d01ffaebf64715c0f507a39463149cb19e596ff702bd4bcf862601f2881dabc", upload-time = "2026-01-21T15:21:40Z" }, + { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.10.0%2Bcu128-cp311-cp311-win_amd64.whl", hash = "sha256:3523fda6e2cfab2b04ae09b1424681358e508bb3faa11ceb67004113d5e7acad", upload-time = "2026-01-21T15:22:00Z" }, + { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.10.0%2Bcu128-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:6f09cdf2415516be028ae82e6b985bcfc3eac37bc52ab401142689f6224516ca", upload-time = "2026-01-21T15:22:03Z" }, + { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.10.0%2Bcu128-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:628e89bd5110ced7debee2a57c69959725b7fbc64eab81a39dd70e46c7e28ba5", upload-time = "2026-01-21T15:22:11Z" }, + { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.10.0%2Bcu128-cp312-cp312-win_amd64.whl", hash = "sha256:fbde8f6a9ec8c76979a0d14df21c10b9e5cab6f0d106a73ca73e2179bc597cae", upload-time = "2026-01-21T15:22:17Z" }, + { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.10.0%2Bcu128-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:bdbcc703382f948e951c063448c9406bf38ce66c41dd698d9e2733fcf96c037a", upload-time = "2026-01-21T15:22:29Z" }, + { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.10.0%2Bcu128-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:7b4bd23ed63de97456fcc81c26fea9f02ee02ce1112111c4dac0d8cfe574b23e", upload-time = "2026-01-21T15:22:51Z" }, + { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.10.0%2Bcu128-cp313-cp313-win_amd64.whl", hash = "sha256:4d1b0b49c54223c7c04050b49eac141d77b6edbc34aea1dfc74a6fdb661baa8c", upload-time = "2026-01-21T15:22:54Z" }, + { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.10.0%2Bcu128-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:f1f8b840c64b645a4bc61a393db48effb9c92b2dc26c8373873911f0750d1ea7", upload-time = "2026-01-21T15:23:28Z" }, + { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.10.0%2Bcu128-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:23f58258012bcf1c349cb22af387e33aadca7f83ea617b080e774eb41e4fe8ff", upload-time = "2026-01-21T15:23:31Z" }, + { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.10.0%2Bcu128-cp313-cp313t-win_amd64.whl", hash = "sha256:01b216e097b17a5277cfb47c383cdcacf06abeadcb0daca0c76b59e72854c3b6", upload-time = "2026-01-21T15:23:53Z" }, + { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.10.0%2Bcu128-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:c42377bc2607e3e1c60da71b792fb507c3938c87fd6edab8b21c59c91473c36d", upload-time = "2026-01-21T15:23:56Z" }, + { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.10.0%2Bcu128-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:37d71feea068776855686a1512058df3f19f6f040a151f055aa746601678744f", upload-time = "2026-01-21T15:24:08Z" }, + { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.10.0%2Bcu128-cp314-cp314-win_amd64.whl", hash = "sha256:c57017ca29e62271e362fdeee7d20070e254755a5148b30b553d8a10fc83c7ef", upload-time = "2026-01-21T15:24:10Z" }, + { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.10.0%2Bcu128-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:777461f50b2daf77e4bdd8e2ad34bdfc5a993bf1bdf2ab9ef39f5edfe4e9c12b", upload-time = "2026-01-21T15:24:20Z" }, + { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.10.0%2Bcu128-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:7bcba6a7c5f0987a13298b1ca843155dcceceac758fa3c7ccd5c7af4059a1080", upload-time = "2026-01-21T15:24:44Z" }, + { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.10.0%2Bcu128-cp314-cp314t-win_amd64.whl", hash = "sha256:70d89143c956389d4806cb4e5fe0b1129fe0db280e1073288d17fa76c101cba4", upload-time = "2026-01-21T15:24:46Z" }, +] + +[[package]] +name = "torch" +version = "2.10.0+cu130" +source = { registry = "https://download.pytorch.org/whl/cu130" } +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", + "python_full_version < '3.11'", +] +dependencies = [ + { name = "cuda-bindings", version = "13.0.3", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "filelock", marker = "(extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra != 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "fsspec", marker = "(extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra != 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "jinja2", marker = "(extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra != 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "networkx", version = "3.6.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "nvidia-cublas", marker = "(sys_platform == 'linux' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "nvidia-cuda-cupti", marker = "(sys_platform == 'linux' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "nvidia-cuda-nvrtc", marker = "(sys_platform == 'linux' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "nvidia-cuda-runtime", marker = "(sys_platform == 'linux' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "nvidia-cudnn-cu13", marker = "(sys_platform == 'linux' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "nvidia-cufft", marker = "(sys_platform == 'linux' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "nvidia-cufile", marker = "(sys_platform == 'linux' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "nvidia-curand", marker = "(sys_platform == 'linux' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "nvidia-cusolver", marker = "(sys_platform == 'linux' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "nvidia-cusparse", marker = "(sys_platform == 'linux' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "nvidia-cusparselt-cu13", marker = "(sys_platform == 'linux' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "nvidia-nccl-cu13", marker = "(sys_platform == 'linux' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "nvidia-nvjitlink", marker = "(sys_platform == 'linux' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "nvidia-nvshmem-cu13", marker = "(sys_platform == 'linux' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "nvidia-nvtx", marker = "(sys_platform == 'linux' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "setuptools", marker = "(python_full_version >= '3.12' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "sympy", marker = "(extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra != 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "triton", marker = "(sys_platform == 'linux' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "typing-extensions", marker = "(extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra != 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, +] +wheels = [ + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.10.0%2Bcu130-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:adfb2bca94f12a5baca6ccf9aa40d6c5b1259748ebb38938be670b07a24d4e15", upload-time = "2026-01-21T19:02:02Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.10.0%2Bcu130-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:0f8566d1b3d8353b7f18d5a15375a00dae89d886bb7d01143bb394f475832286", upload-time = "2026-01-21T19:02:47Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.10.0%2Bcu130-cp310-cp310-win_amd64.whl", hash = "sha256:0de43ec229a78a2e80ae8578252f9eb14f898457d1cf2be81c8c91a4108c6c79", upload-time = "2026-01-21T19:00:26Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.10.0%2Bcu130-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:ea3239d544b2e569a8f47db5c7fa4fd42a2fe96aefb84bb1eda45ce213020fd2", upload-time = "2026-01-21T19:01:56Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.10.0%2Bcu130-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:22cfa45e73f1e8c64f4012737987a727d01d152121b93d196b0ca22f39a3f8e3", upload-time = "2026-01-21T19:02:52Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.10.0%2Bcu130-cp311-cp311-win_amd64.whl", hash = "sha256:218ae0f323d5ebe8f2770e46cbfb7bbff9af2c8d192d5187878d0964d43c8b71", upload-time = "2026-01-21T19:00:26Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.10.0%2Bcu130-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:4fc8f67637f4c92b989a07d80ffe755e79a3510ca02ebf23ce66396fb277c88d", upload-time = "2026-01-21T19:01:36Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.10.0%2Bcu130-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:858f0cbcc78d726fea9499eb3464faa98392fa093845a3262209bd226b7844d6", upload-time = "2026-01-21T19:02:22Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.10.0%2Bcu130-cp312-cp312-win_amd64.whl", hash = "sha256:224649fa0ab181ec483cc368e3303dda1760e4ba31bea806b88979f855436aaa", upload-time = "2026-01-21T19:00:27Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.10.0%2Bcu130-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:75780283308df9fede371eeda01e9607c8862a1803a2f2f31a08a2c0deaed342", upload-time = "2026-01-21T19:01:39Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.10.0%2Bcu130-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:7e0d9922e9e91f780b2761a0c5ebac3c15c9740bab042e1b59149afa6d6474eb", upload-time = "2026-01-21T19:02:26Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.10.0%2Bcu130-cp313-cp313-win_amd64.whl", hash = "sha256:48af94af745a9dd9b42be81ea15b56aba981666bcfe10394dceca6d9476a50fa", upload-time = "2026-01-21T19:00:27Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.10.0%2Bcu130-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:46699da91f0367d8dfa1b606cb0352aaf190b5853f463010e75ff08f15a94e7d", upload-time = "2026-01-21T19:02:20Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.10.0%2Bcu130-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:775d1fff07e302fb669d555a5005f781aa460aa80dff7a512e8e6e723f9def83", upload-time = "2026-01-21T19:02:42Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.10.0%2Bcu130-cp313-cp313t-win_amd64.whl", hash = "sha256:b38e5b505b015903a51c2b3f12e50a9f152f92fe7e3992e79f504138cf90601d", upload-time = "2026-01-21T19:01:32Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.10.0%2Bcu130-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:18f87ae628c02f095f2e97756e4fa249ceef6ed6e87d5a3c79b5338abf842511", upload-time = "2026-01-21T19:01:38Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.10.0%2Bcu130-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:db5a61791b7da3c1aa5a496e64cd72dbd4ef3ef2cbb69680fd45dc255b0da2f3", upload-time = "2026-01-21T19:02:42Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.10.0%2Bcu130-cp314-cp314-win_amd64.whl", hash = "sha256:dda35d473dd34cafa0668be176b9ad2cb69b1ff570d0336715a6541e89e27640", upload-time = "2026-01-21T19:00:26Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.10.0%2Bcu130-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:7781235583ea06b214075c10fa95f83b9805f06af44efc6e9946808413cff94f", upload-time = "2026-01-21T19:01:59Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.10.0%2Bcu130-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:526b737db11d632281795484ec729baae5f193a5a0d76a1f7d822f7897c8b4f5", upload-time = "2026-01-21T19:02:44Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.10.0%2Bcu130-cp314-cp314t-win_amd64.whl", hash = "sha256:d5ea18790a18b660d655f6e75a8ca6e8d6298b55fc338f8c921764b94c886743", upload-time = "2026-01-21T19:01:35Z" }, +] + +[[package]] +name = "torchpfaffian" +version = "0.0.1" +source = { editable = "." } +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "setuptools" }, + { name = "torch", version = "2.10.0", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'darwin' and extra == 'extra-13-torchpfaffian-cpu') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "(extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra != 'extra-13-torchpfaffian-cpu' and extra != 'extra-13-torchpfaffian-cu128' and extra != 'extra-13-torchpfaffian-cu130')" }, + { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cpu') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "torch", version = "2.10.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "extra == 'extra-13-torchpfaffian-cu128' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "torch", version = "2.10.0+cu130", source = { registry = "https://download.pytorch.org/whl/cu130" }, marker = "(extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra != 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (extra != 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130')" }, +] + +[package.optional-dependencies] +cpu = [ + { name = "torch", version = "2.10.0", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'darwin' and extra == 'extra-13-torchpfaffian-cpu') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform != 'darwin' and extra == 'extra-13-torchpfaffian-cpu') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, +] +cu128 = [ + { name = "torch", version = "2.10.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" } }, +] +cu130 = [ + { name = "torch", version = "2.10.0+cu130", source = { registry = "https://download.pytorch.org/whl/cu130" } }, +] + +[package.dev-dependencies] +dev = [ + { name = "build" }, + { name = "mypy" }, + { name = "nbmake" }, + { name = "pip" }, + { name = "pre-commit" }, + { name = "pytest" }, + { name = "pytest-cov" }, + { name = "pytest-json-report" }, + { name = "pytest-timeout" }, + { name = "pytest-xdist" }, + { name = "ruff" }, + { name = "twine" }, + { name = "wheel" }, +] +docs = [ + { name = "build" }, + { name = "docutils" }, + { name = "groundwork-sphinx-theme" }, + { name = "ipykernel" }, + { name = "karma-sphinx-theme" }, + { name = "matplotlib" }, + { name = "myst-nb" }, + { name = "nbconvert" }, + { name = "sphinx" }, + { name = "sphinx-mdinclude" }, + { name = "sphinx-rtd-theme" }, + { name = "sphinx-theme" }, + { name = "sphinxcontrib-bibtex" }, + { name = "twine" }, + { name = "wheel" }, +] + +[package.metadata] +requires-dist = [ + { name = "numpy", specifier = ">=1.23,<3.0.0" }, + { name = "setuptools", specifier = ">=80.10" }, + { name = "torch", specifier = ">=2.1,<3.0.0" }, + { name = "torch", marker = "extra == 'cpu'", specifier = ">=2.1.2,<3.0.0", index = "https://download.pytorch.org/whl/cpu", conflict = { package = "torchpfaffian", extra = "cpu" } }, + { name = "torch", marker = "extra == 'cu128'", specifier = ">=2.1.2,<3.0.0", index = "https://download.pytorch.org/whl/cu128", conflict = { package = "torchpfaffian", extra = "cu128" } }, + { name = "torch", marker = "extra == 'cu130'", specifier = ">=2.1.2,<3.0.0", index = "https://download.pytorch.org/whl/cu130", conflict = { package = "torchpfaffian", extra = "cu130" } }, +] +provides-extras = ["cpu", "cu128", "cu130"] + +[package.metadata.requires-dev] +dev = [ + { name = "build", specifier = ">=1.4,<2" }, + { name = "mypy", specifier = ">=1.15,<2" }, + { name = "nbmake", specifier = ">=1.5,<2" }, + { name = "pip", specifier = ">=25" }, + { name = "pre-commit", specifier = ">=4.5.1" }, + { name = "pytest", specifier = ">=8.4,<9" }, + { name = "pytest-cov", specifier = ">=6.1,<7" }, + { name = "pytest-json-report", specifier = ">=1.5,<2" }, + { name = "pytest-timeout", specifier = ">=2.4" }, + { name = "pytest-xdist", specifier = ">=3.7,<4" }, + { name = "ruff", specifier = ">=0.9,<1" }, + { name = "twine", specifier = ">=6.1,<7" }, + { name = "wheel", specifier = ">=0.45,<0.46" }, +] +docs = [ + { name = "build", specifier = ">=1.4,<2" }, + { name = "docutils", specifier = ">=0.18,<0.20" }, + { name = "groundwork-sphinx-theme", specifier = ">=1.1,<2" }, + { name = "ipykernel", specifier = ">=6.29,<7" }, + { name = "karma-sphinx-theme", specifier = ">=0.0.8,<0.0.9" }, + { name = "matplotlib", specifier = ">=3.8,<4" }, + { name = "myst-nb", specifier = ">=1.1,<2" }, + { name = "nbconvert", specifier = ">=7.16,<8" }, + { name = "sphinx", specifier = ">=6.2,<6.3" }, + { name = "sphinx-mdinclude", specifier = ">=0.6,<0.7" }, + { name = "sphinx-rtd-theme", specifier = ">=3.0,<4" }, + { name = "sphinx-theme", specifier = "~=1.0" }, + { name = "sphinxcontrib-bibtex", specifier = ">=2.5,<2.6" }, + { name = "twine", specifier = ">=6.1,<7" }, + { name = "wheel", specifier = ">=0.45,<0.46" }, +] + +[[package]] +name = "tornado" +version = "6.5.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/64/24/95ec527ad67b76d59299e5465b3935d05e4294b7e0290a3924b7487df30b/tornado-6.5.7.tar.gz", hash = "sha256:66c513a76cda70d53907bc27cf1447557699c2e95aa48ba27a442ff61c3ddfc2", size = 519252, upload-time = "2026-06-08T17:34:51.232Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/02/dc/c7043cab6fed8ae159fc1923ce829ada35c4dbd797d408a43858ffaf9639/tornado-6.5.7-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:148b2eb15c2c765a50796172c1e499649b35f30d2e3c3d3e15913cfa56bfb163", size = 448543, upload-time = "2026-06-08T17:34:38.052Z" }, + { url = "https://files.pythonhosted.org/packages/92/4f/090b1431e5a43df696feceffc268c5383cc079ecb5f08ce58f917109aafe/tornado-6.5.7-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9da38de27f1da3b78a966f0dae12b5a1ea9afe72ca805d84ff06508272ddf100", size = 446707, upload-time = "2026-06-08T17:34:39.594Z" }, + { url = "https://files.pythonhosted.org/packages/37/d8/ef374952fd5da67d4463122c2b8e5a96536ec10b4b339254c6dcde81d01c/tornado-6.5.7-cp39-abi3-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:8d759e71906ee783f8867b93bf26a265743da4c1e2f4a018464c1ba019862972", size = 449774, upload-time = "2026-06-08T17:34:41.204Z" }, + { url = "https://files.pythonhosted.org/packages/35/37/d434c73f4c6e014b745b9b37085f34f40c022f007efff3d7fe65991899f3/tornado-6.5.7-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8a46347a18f23fb92b396beebe0fb78f61dda0cc302445202c16203d8a18848b", size = 450745, upload-time = "2026-06-08T17:34:42.531Z" }, + { url = "https://files.pythonhosted.org/packages/b6/2b/56b9aff361d7f1ab728a805ec7d7ea835f8807afa9f5cc690ea0e630efb9/tornado-6.5.7-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:7778b30bef919231265e91c69963ce0f49a1e9c07ac900bbe75b19ce2575ba92", size = 450578, upload-time = "2026-06-08T17:34:43.787Z" }, + { url = "https://files.pythonhosted.org/packages/02/30/a7444fb23aa76860a14198fab96ac79f1866b0a6e19e26c4381b0938e50f/tornado-6.5.7-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e726f0c75da7726eec023aa62751ff8878bd2737e34fbdd33b1ae5897d2200f5", size = 449985, upload-time = "2026-06-08T17:34:45.326Z" }, + { url = "https://files.pythonhosted.org/packages/5c/42/5f0e56c01e8d9d36f4e23f367b85ae6cae0c1ecddd5e6977d8388ad27488/tornado-6.5.7-cp39-abi3-win32.whl", hash = "sha256:f8de3bf12d3efdd0cbe7c8887868198f8a91415e3f29fcf258d9b8eb7b1d9ae4", size = 451047, upload-time = "2026-06-08T17:34:46.784Z" }, + { url = "https://files.pythonhosted.org/packages/c9/a4/b393076ffb21b469eec5b328a0534cf03a3b90bfc6b1f09507cdd075d938/tornado-6.5.7-cp39-abi3-win_amd64.whl", hash = "sha256:de942f843533a039ef9fa3d9c88c7cd8a7c94553fb5ad0154270989b3d99a2c4", size = 451485, upload-time = "2026-06-08T17:34:48.248Z" }, + { url = "https://files.pythonhosted.org/packages/71/2e/7b1c769803121b809112cf9a00681c472eae1d80e32d7ec0e0bd61d0d0e1/tornado-6.5.7-cp39-abi3-win_arm64.whl", hash = "sha256:ff934fce95643af5f11efdae618eaa73d469dc588641e5c8d19295a0c65c4796", size = 450506, upload-time = "2026-06-08T17:34:49.702Z" }, +] + +[[package]] +name = "traitlets" +version = "5.15.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/57/a9/a2584b8313b89f94869ddb3c4074617a691de1812a614d2d50e32ca5a7a6/traitlets-5.15.1.tar.gz", hash = "sha256:7b1c07854fe25acb39e009bae49f11b79ff6cbb2f27999104e9110e7a6b53722", size = 163344, upload-time = "2026-06-03T12:26:06.181Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/96/8d/1080ee4c231f361b6ce4470d556c8c435b67c7e0753aaa641497ee92f88b/traitlets-5.15.1-py3-none-any.whl", hash = "sha256:770a53705f84b81ac107e83a1b3328ff2dae16094d8fc3cfc004e4b22dfd8e92", size = 85858, upload-time = "2026-06-03T12:26:04.395Z" }, +] + +[[package]] +name = "triton" +version = "3.6.0" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/44/ba/b1b04f4b291a3205d95ebd24465de0e5bf010a2df27a4e58a9b5f039d8f2/triton-3.6.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6c723cfb12f6842a0ae94ac307dba7e7a44741d720a40cf0e270ed4a4e3be781", size = 175972180, upload-time = "2026-01-20T16:15:53.664Z" }, + { url = "https://files.pythonhosted.org/packages/8c/f7/f1c9d3424ab199ac53c2da567b859bcddbb9c9e7154805119f8bd95ec36f/triton-3.6.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a6550fae429e0667e397e5de64b332d1e5695b73650ee75a6146e2e902770bea", size = 188105201, upload-time = "2026-01-20T16:00:29.272Z" }, + { url = "https://files.pythonhosted.org/packages/0f/2c/96f92f3c60387e14cc45aed49487f3486f89ea27106c1b1376913c62abe4/triton-3.6.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:49df5ef37379c0c2b5c0012286f80174fcf0e073e5ade1ca9a86c36814553651", size = 176081190, upload-time = "2026-01-20T16:16:00.523Z" }, + { url = "https://files.pythonhosted.org/packages/e0/12/b05ba554d2c623bffa59922b94b0775673de251f468a9609bc9e45de95e9/triton-3.6.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e8e323d608e3a9bfcc2d9efcc90ceefb764a82b99dea12a86d643c72539ad5d3", size = 188214640, upload-time = "2026-01-20T16:00:35.869Z" }, + { url = "https://files.pythonhosted.org/packages/17/5d/08201db32823bdf77a0e2b9039540080b2e5c23a20706ddba942924ebcd6/triton-3.6.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:374f52c11a711fd062b4bfbb201fd9ac0a5febd28a96fb41b4a0f51dde3157f4", size = 176128243, upload-time = "2026-01-20T16:16:07.857Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a8/cdf8b3e4c98132f965f88c2313a4b493266832ad47fb52f23d14d4f86bb5/triton-3.6.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:74caf5e34b66d9f3a429af689c1c7128daba1d8208df60e81106b115c00d6fca", size = 188266850, upload-time = "2026-01-20T16:00:43.041Z" }, + { url = "https://files.pythonhosted.org/packages/3c/12/34d71b350e89a204c2c7777a9bba0dcf2f19a5bfdd70b57c4dbc5ffd7154/triton-3.6.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:448e02fe6dc898e9e5aa89cf0ee5c371e99df5aa5e8ad976a80b93334f3494fd", size = 176133521, upload-time = "2026-01-20T16:16:13.321Z" }, + { url = "https://files.pythonhosted.org/packages/f9/0b/37d991d8c130ce81a8728ae3c25b6e60935838e9be1b58791f5997b24a54/triton-3.6.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:10c7f76c6e72d2ef08df639e3d0d30729112f47a56b0c81672edc05ee5116ac9", size = 188289450, upload-time = "2026-01-20T16:00:49.136Z" }, + { url = "https://files.pythonhosted.org/packages/ce/4e/41b0c8033b503fd3cfcd12392cdd256945026a91ff02452bef40ec34bee7/triton-3.6.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1722e172d34e32abc3eb7711d0025bb69d7959ebea84e3b7f7a341cd7ed694d6", size = 176276087, upload-time = "2026-01-20T16:16:18.989Z" }, + { url = "https://files.pythonhosted.org/packages/35/f8/9c66bfc55361ec6d0e4040a0337fb5924ceb23de4648b8a81ae9d33b2b38/triton-3.6.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d002e07d7180fd65e622134fbd980c9a3d4211fb85224b56a0a0efbd422ab72f", size = 188400296, upload-time = "2026-01-20T16:00:56.042Z" }, + { url = "https://files.pythonhosted.org/packages/49/55/5ecf0dcaa0f2fbbd4420f7ef227ee3cb172e91e5fede9d0ecaddc43363b4/triton-3.6.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ef5523241e7d1abca00f1d240949eebdd7c673b005edbbce0aca95b8191f1d43", size = 176138577, upload-time = "2026-01-20T16:16:25.426Z" }, + { url = "https://files.pythonhosted.org/packages/df/3d/9e7eee57b37c80cec63322c0231bb6da3cfe535a91d7a4d64896fcb89357/triton-3.6.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a17a5d5985f0ac494ed8a8e54568f092f7057ef60e1b0fa09d3fd1512064e803", size = 188273063, upload-time = "2026-01-20T16:01:07.278Z" }, + { url = "https://files.pythonhosted.org/packages/48/db/56ee649cab5eaff4757541325aca81f52d02d4a7cd3506776cad2451e060/triton-3.6.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0b3a97e8ed304dfa9bd23bb41ca04cdf6b2e617d5e782a8653d616037a5d537d", size = 176274804, upload-time = "2026-01-20T16:16:31.528Z" }, + { url = "https://files.pythonhosted.org/packages/f6/56/6113c23ff46c00aae423333eb58b3e60bdfe9179d542781955a5e1514cb3/triton-3.6.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:46bd1c1af4b6704e554cad2eeb3b0a6513a980d470ccfa63189737340c7746a7", size = 188397994, upload-time = "2026-01-20T16:01:14.236Z" }, +] + +[[package]] +name = "twine" +version = "6.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "id" }, + { name = "keyring", marker = "(platform_machine != 'ppc64le' and platform_machine != 's390x') or (platform_machine == 'ppc64le' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (platform_machine == 'ppc64le' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (platform_machine == 'ppc64le' and extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130') or (platform_machine == 's390x' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (platform_machine == 's390x' and extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (platform_machine == 's390x' and extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, + { name = "packaging" }, + { name = "readme-renderer" }, + { name = "requests" }, + { name = "requests-toolbelt" }, + { name = "rfc3986" }, + { name = "rich" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e0/a8/949edebe3a82774c1ec34f637f5dd82d1cf22c25e963b7d63771083bbee5/twine-6.2.0.tar.gz", hash = "sha256:e5ed0d2fd70c9959770dce51c8f39c8945c574e18173a7b81802dab51b4b75cf", size = 172262, upload-time = "2025-09-04T15:43:17.255Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3a/7a/882d99539b19b1490cac5d77c67338d126e4122c8276bf640e411650c830/twine-6.2.0-py3-none-any.whl", hash = "sha256:418ebf08ccda9a8caaebe414433b0ba5e25eb5e4a927667122fbe8f829f985d8", size = 42727, upload-time = "2025-09-04T15:43:15.994Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, +] + +[[package]] +name = "urllib3" +version = "2.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/53/0c/06f8b233b8fd13b9e5ee11424ef85419ba0d8ba0b3138bf360be2ff56953/urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c", size = 433602, upload-time = "2026-05-07T16:13:18.596Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897", size = 131087, upload-time = "2026-05-07T16:13:17.151Z" }, +] + +[[package]] +name = "virtualenv" +version = "21.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "distlib" }, + { name = "filelock" }, + { name = "platformdirs" }, + { name = "python-discovery" }, + { name = "typing-extensions", marker = "python_full_version < '3.11' or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu128') or (extra == 'extra-13-torchpfaffian-cpu' and extra == 'extra-13-torchpfaffian-cu130') or (extra == 'extra-13-torchpfaffian-cu128' and extra == 'extra-13-torchpfaffian-cu130')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e1/0d/4e93c8e6d1001a75763f87d8f5ecda8ebc7f4aa2153dddfaf4ae8892821a/virtualenv-21.4.2.tar.gz", hash = "sha256:38e6ee0a555615c0ea9da2ac7e9998fe8dc3b911dd33ad8eaad2020957653b0c", size = 7613326, upload-time = "2026-05-31T17:01:22.827Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bf/c4/557dc082be035381b85fdb2b74e21d3d21b57750b74f2b47a32f3a639ff9/virtualenv-21.4.2-py3-none-any.whl", hash = "sha256:854210ca524a1a4d0d744734f4acbc721c3ffe163b85bbf5d56d14d5ae2f0fae", size = 7594079, upload-time = "2026-05-31T17:01:20.735Z" }, +] + +[[package]] +name = "wcwidth" +version = "0.8.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/49/b4/51fe890511f0f242d07cb1ebe6a5b6db417262b9d2568b460347c57d95cc/wcwidth-0.8.1.tar.gz", hash = "sha256:faf5b4a5366a72dc49cad48cdf21f52bdf63bdda995178e483ba247ff79089b9", size = 1466072, upload-time = "2026-06-08T05:57:23.146Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bd/6e/95b0e537de1f4d4301f76f944642c6da50d1511cc7b3d64dc418a66c7509/wcwidth-0.8.1-py3-none-any.whl", hash = "sha256:f453740b1e4a4f3291faa37944c555d71056c4da08d59809b307ef4feba695c8", size = 323092, upload-time = "2026-06-08T05:57:21.413Z" }, +] + +[[package]] +name = "webencodings" +version = "0.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721, upload-time = "2017-04-05T20:21:34.189Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774, upload-time = "2017-04-05T20:21:32.581Z" }, +] + +[[package]] +name = "wheel" +version = "0.45.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8a/98/2d9906746cdc6a6ef809ae6338005b3f21bb568bea3165cfc6a243fdc25c/wheel-0.45.1.tar.gz", hash = "sha256:661e1abd9198507b1409a20c02106d9670b2576e916d58f520316666abca6729", size = 107545, upload-time = "2024-11-23T00:18:23.513Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/2c/87f3254fd8ffd29e4c02732eee68a83a1d3c346ae39bc6822dcbcb697f2b/wheel-0.45.1-py3-none-any.whl", hash = "sha256:708e7481cc80179af0e556bbf0cc00b8444c7321e2700b8d8580231d13017248", size = 72494, upload-time = "2024-11-23T00:18:21.207Z" }, +] + +[[package]] +name = "zipp" +version = "4.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b9/d8/eab98a517c14134c0b2eb4e2387bc5f457334293ec5d2dd3857ec2966802/zipp-4.1.0.tar.gz", hash = "sha256:4cb57381f544315db7688e976e922a2b18cdb513d21cc194eb42232ba2a3e602", size = 26214, upload-time = "2026-05-18T20:08:57.967Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3a/13/547360d81e6d88d58492968ffda9f9542854f11310ee556fef14260cc886/zipp-4.1.0-py3-none-any.whl", hash = "sha256:25ad4e16390cd314347dd8f1de67a2ac538ae658ed4ab9db16029c07c188e97f", size = 10238, upload-time = "2026-05-18T20:08:57.045Z" }, +]