From 065b28969e04db6ad2daed8969ec87831965609b Mon Sep 17 00:00:00 2001 From: d33bs Date: Thu, 23 Jan 2025 11:26:16 -0700 Subject: [PATCH 01/20] initial migration from early prototyping Co-Authored-By: Mike Lippincott <58147848+MikeLippincott@users.noreply.github.com> --- .github/workflows/run-tests.yml | 42 + .gitignore | 11 +- .pre-commit-config.yaml | 61 + CITATION.cff | 520 +++ CODE_OF_CONDUCT.md | 132 + README.md | 9 +- justfile | 58 + pyproject.toml | 74 + src/gff3d_utils/view.py | 73 + .../ometiff_to_avivator.py | 56 + .../ometiff_to_napari.py | 60 + .../randomized_to_omezarr.py | 92 + .../tiff_to_ometiff.py | 226 + .../tiff_to_omezarr.py | 225 + .../zarr_to_napari.py | 55 + .../zarr_to_neuroglancer.py | 65 + tests/test_view.py | 106 + uv.lock | 4058 +++++++++++++++++ 18 files changed, 5914 insertions(+), 9 deletions(-) create mode 100644 .github/workflows/run-tests.yml create mode 100644 .pre-commit-config.yaml create mode 100644 CITATION.cff create mode 100644 CODE_OF_CONDUCT.md create mode 100644 justfile create mode 100644 pyproject.toml create mode 100644 src/gff3d_utils/view.py create mode 100644 src/raw_organoid_images_to_omezarr/ometiff_to_avivator.py create mode 100644 src/raw_organoid_images_to_omezarr/ometiff_to_napari.py create mode 100644 src/raw_organoid_images_to_omezarr/randomized_to_omezarr.py create mode 100644 src/raw_organoid_images_to_omezarr/tiff_to_ometiff.py create mode 100644 src/raw_organoid_images_to_omezarr/tiff_to_omezarr.py create mode 100644 src/raw_organoid_images_to_omezarr/zarr_to_napari.py create mode 100644 src/raw_organoid_images_to_omezarr/zarr_to_neuroglancer.py create mode 100644 tests/test_view.py create mode 100644 uv.lock diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml new file mode 100644 index 0000000..4491fbe --- /dev/null +++ b/.github/workflows/run-tests.yml @@ -0,0 +1,42 @@ +--- +# used for running tests +name: tests + +on: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + pre_commit_checks: + runs-on: ubuntu-22.04 + steps: + # checks out the repo + - uses: actions/checkout@v4 + # run pre-commit + - name: Python setup + uses: actions/setup-python@v5 + with: + python-version: "3.11" + - uses: pre-commit/action@v3.0.1 + run_tests: + strategy: + matrix: + python_version: ["3.11", "3.12"] + os: [ubuntu-22.04, macos-13] + runs-on: ${{ matrix.os }} + env: + OS: ${{ matrix.os }} + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Python setup + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python_version }} + - name: Setup for uv + run: | + python -m pip install uv + - name: Run pytest + run: uv run pytest diff --git a/.gitignore b/.gitignore index 15201ac..b9aeaa6 100644 --- a/.gitignore +++ b/.gitignore @@ -94,12 +94,6 @@ ipython_config.py # install all needed dependencies. #Pipfile.lock -# UV -# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control. -# This is especially recommended for binary packages to ensure reproducibility, and is more -# commonly ignored for libraries. -#uv.lock - # poetry # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. # This is especially recommended for binary packages to ensure reproducibility, and is more @@ -167,5 +161,6 @@ cython_debug/ # option (not recommended) you can uncomment the following to ignore the entire idea folder. #.idea/ -# PyPI configuration file -.pypirc +*.zarr +src/raw_organoid_images_to_omezarr/data/GFF-data +*.tiff diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..e15d5a4 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,61 @@ +# See https://pre-commit.com for more information +# See https://pre-commit.com/hooks.html for more hooks +default_language_version: + python: python3.11 +repos: +- repo: https://github.com/pre-commit/pre-commit-hooks + rev: v5.0.0 + hooks: + - id: trailing-whitespace + - id: end-of-file-fixer + exclude: | + (?x)^( + .*\.zattrs | + .*\.zgroup | + .*\.zarray + )$ + - id: check-yaml + - id: detect-private-key +- repo: https://github.com/tox-dev/pyproject-fmt + rev: "v2.5.0" + hooks: + - id: pyproject-fmt +- repo: https://github.com/citation-file-format/cffconvert + rev: 5295f87c0e261da61a7b919fc754e3a77edd98a7 + hooks: + - id: validate-cff +- repo: https://github.com/codespell-project/codespell + rev: v2.4.0 + hooks: + - id: codespell + exclude: | + (?x)^( + .*\.lock | + .*\.csv | + .*\.cff + )$ +- repo: https://github.com/executablebooks/mdformat + rev: 0.7.21 + hooks: + - id: mdformat + additional_dependencies: + - mdformat-gfm +- repo: https://github.com/adrienverge/yamllint + rev: v1.35.1 + hooks: + - id: yamllint + exclude: pre-commit-config.yaml +- repo: https://github.com/astral-sh/ruff-pre-commit + rev: "v0.9.2" + hooks: + - id: ruff-format + - id: ruff +- repo: https://github.com/rhysd/actionlint + rev: v1.7.7 + hooks: + - id: actionlint +- repo: https://gitlab.com/vojko.pribudic.foss/pre-commit-update + rev: v0.6.0 + hooks: + - id: pre-commit-update + args: ["--keep", "mdformat", "--keep", "pre-commit-update", "--keep", "cffconvert"] diff --git a/CITATION.cff b/CITATION.cff new file mode 100644 index 0000000..a60d47d --- /dev/null +++ b/CITATION.cff @@ -0,0 +1,520 @@ +# This CITATION.cff file was generated with cffinit. +# Visit https://bit.ly/cffinit to generate yours today! +--- +cff-version: 1.2.0 +title: gff-3d-organoid-image-format-prototype +message: >- + If you use this software, please cite it using the + metadata from this file. +type: software +authors: + - given-names: David + family-names: Bunten + orcid: 'https://orcid.org/0000-0001-6041-3665' + - given-names: Jenna + family-names: Tomkinson + orcid: 'https://orcid.org/0000-0003-2676-5813' + - given-names: Michael + family-names: Lippincott + orcid: 'https://orcid.org/0000-0002-8637-1448' + - given-names: Cameron + family-names: Mattson + orcid: 'https://orcid.org/0009-0008-4969-779X' + - given-names: Gregory + family-names: Way + orcid: 'https://orcid.org/0000-0002-0503-9348' +repository-code: 'https://github.com/WayScience/GFF_3D_organoid_image_format_prototype' +abstract: >- + Prototyping image format for GFF 3D organoid project. +keywords: + - python + - microscopy + - profiling + - organoids + - data + - ome-zarr + - napari + - way-lab +license: BSD-3-Clause +references: + - title: >- + OME-Zarr: a cloud-optimized bioimaging file format with international community support + type: article + database: Bioinformatics + url: http://biorxiv.org/lookup/doi/10.1101/2023.02.17.528834 + authors: + - family-names: Moore + given-names: Josh + - family-names: Basurto-Lozada + given-names: Daniela + - family-names: Besson + given-names: Sébastien + - family-names: Bogovic + given-names: John + - family-names: Bragantini + given-names: Jordão + - family-names: Brown + given-names: Eva M. + - family-names: Burel + given-names: Jean-Marie + - family-names: Casas Moreno + given-names: Xavier + - family-names: De Medeiros + given-names: Gustavo + - family-names: Diel + given-names: Erin E. + - family-names: Gault + given-names: David + - family-names: Ghosh + given-names: Satrajit S. + - family-names: Gold + given-names: Ilan + - family-names: Halchenko + given-names: Yaroslav O. + - family-names: Hartley + given-names: Matthew + - family-names: Horsfall + given-names: Dave + - family-names: Keller + given-names: Mark S. + - family-names: Kittisopikul + given-names: Mark + - family-names: Kovacs + given-names: Gabor + - family-names: Küpcü Yoldaş + given-names: Aybüke + - family-names: Kyoda + given-names: Koji + - family-names: Le Tournoulx De La Villegeorges + given-names: Albane + - family-names: Li + given-names: Tong + - family-names: Liberali + given-names: Prisca + - family-names: Lindner + given-names: Dominik + - family-names: Linkert + given-names: Melissa + - family-names: Lüthi + given-names: Joel + - family-names: Maitin-Shepard + given-names: Jeremy + - family-names: Manz + given-names: Trevor + - family-names: Marconato + given-names: Luca + - family-names: McCormick + given-names: Matthew + - family-names: Lange + given-names: Merlin + - family-names: Mohamed + given-names: Khaled + - family-names: Moore + given-names: William + - family-names: Norlin + given-names: Nils + - family-names: Ouyang + given-names: Wei + - family-names: Özdemir + given-names: Bugra + - family-names: Palla + given-names: Giovanni + - family-names: Pape + given-names: Constantin + - family-names: Pelkmans + given-names: Lucas + - family-names: Pietzsch + given-names: Tobias + - family-names: Preibisch + given-names: Stephan + - family-names: Prete + given-names: Martin + - family-names: Rzepka + given-names: Norman + - family-names: Samee + given-names: Sameeul + - family-names: Schaub + given-names: Nicholas + - family-names: Sidky + given-names: Hythem + - family-names: Solak + given-names: Ahmet Can + - family-names: Stirling + given-names: David R. + - family-names: Striebel + given-names: Jonathan + - family-names: Tischer + given-names: Christian + - family-names: Toloudis + given-names: Daniel + - family-names: Virshup + given-names: Isaac + - family-names: Walczysko + given-names: Petr + - family-names: Watson + given-names: Alan M. + - family-names: Weisbart + given-names: Erin + - family-names: Wong + given-names: Frances + - family-names: Yamauchi + given-names: Kevin A. + - family-names: Bayraktar + given-names: Omer + - family-names: Cimini + given-names: Beth A. + - family-names: Gehlenborg + given-names: Nils + - family-names: Haniffa + given-names: Muzlifah + - family-names: Hotaling + given-names: Nathan + - family-names: Onami + given-names: Shuichi + - family-names: Royer + given-names: Loic A. + - family-names: Saalfeld + given-names: Stephan + - family-names: Stegle + given-names: Oliver + - family-names: Theis + given-names: Fabian J. + - family-names: Swedlow + given-names: Jason R. + date-published: 2023-02-21 + identifiers: + - type: doi + value: 10.1101/2023.02.17.528834 + - title: Napari + type: software + identifiers: + - type: doi + value: 10.5281/zenodo.3555620 + authors: + - given-names: Nicholas + family-names: Sofroniew + affiliation: Chan Zuckerberg Initiative + orcid: https://orcid.org/0000-0002-3426-0914 + alias: sofroniewn + - given-names: Talley + family-names: Lambert + affiliation: Harvard Medical School + orcid: https://orcid.org/0000-0002-2409-0181 + alias: tlambert03 + - given-names: Grzegorz + family-names: Bokota + affiliation: University of Warsaw, Faculty of Mathematics, Informatics, and Mechanics + orcid: https://orcid.org/0000-0002-5470-1676 + alias: Czaki + - given-names: Juan + family-names: Nunez-Iglesias + affiliation: Monash eResearch Centre, Monash University + orcid: https://orcid.org/0000-0002-7239-5828 + alias: jni + - given-names: Peter + family-names: Sobolewski + affiliation: The Jackson Laboratory + orcid: https://orcid.org/0000-0002-2097-0990 + alias: psobolewskiPhD + - given-names: Andrew + family-names: Sweet + affiliation: Chan Zuckerberg Initiative + alias: andy-sweet + - given-names: Lorenzo + family-names: Gaifas + affiliation: Gutsche Lab - University of Grenoble + orcid: https://orcid.org/0000-0003-4875-9422 + alias: brisvag + - given-names: Kira + family-names: Evans + affiliation: Chan Zuckerberg Initiative + alias: kne42 + - given-names: Alister + family-names: Burt + affiliation: MRC-LMB + alias: alisterburt + - given-names: Draga + family-names: Doncila Pop + affiliation: Monash University + alias: DragaDoncila + - given-names: Kevin + family-names: Yamauchi + affiliation: Iber Lab - ETH Zürich + alias: kevinyamauchi + - given-names: Melissa + family-names: Weber Mendonça + affiliation: Quansight + orcid: https://orcid.org/0000-0002-3212-402X + alias: melissawm + - given-names: Genevieve + family-names: Buckley + affiliation: Monash University + orcid: https://orcid.org/0000-0003-2763-492X + alias: GenevieveBuckley + - given-names: Wouter-Michiel + family-names: Vierdag + affiliation: European Molecular Biology Laboratory, Genome Biology Unit, Heidelberg, + Germany + orcid: https://orcid.org/0000-0003-1666-5421 + alias: melonora + - given-names: Loic + family-names: Royer + affiliation: Chan Zuckerberg Biohub + alias: royerloic + - given-names: Ahmet + family-names: Can Solak + affiliation: Chan Zuckerberg Biohub + alias: AhmetCanSolak + - given-names: Kyle I. S. + family-names: Harrington + affiliation: Chan Zuckerberg Initiative + orcid: https://orcid.org/0000-0002-7237-1973 + alias: kephale + - given-names: Jannis + family-names: Ahlers + affiliation: Monash University + orcid: https://orcid.org/0000-0003-0630-1819 + alias: jnahlers + - given-names: Daniel + family-names: Althviz Moré + affiliation: Quansight + orcid: https://orcid.org/0000-0003-1759-4194 + alias: dalthviz + - given-names: Oren + family-names: Amsalem + affiliation: Harvard Medical School, BIDMC + orcid: https://orcid.org/0000-0002-8070-0378 + alias: orena1 + - given-names: Ashley + family-names: Anderson + affiliation: Chan Zuckerberg Initiative + orcid: https://orcid.org/0000-0002-3841-8344 + alias: aganders3 + - given-names: Andrew + family-names: Annex + affiliation: SETI Institute/NASA ARC + orcid: https://orcid.org/0000-0002-0253-2313 + alias: AndrewAnnex + - given-names: Peter + family-names: Boone + alias: boonepeter + - given-names: Jordão + family-names: Bragantini + affiliation: Chan Zuckerberg Biohub + alias: JoOkuma + - given-names: Matthias + family-names: Bussonnier + affiliation: Quansight Labs + orcid: https://orcid.org/0000-0002-7636-8632 + alias: Carreau + - given-names: Clément + family-names: Caporal + affiliation: Laboratory for Optics and Biosciences, Ecole Polytechnique, INSERM, + CNRS, Palaiseau, France + orcid: https://orcid.org/0000-0002-9441-9173 + alias: ClementCaporal + - given-names: Jan + family-names: Eglinger + affiliation: Friedrich Miescher Institute for Biomedical Research (FMI), Basel (Switzerland) + orcid: https://orcid.org/0000-0001-7234-1435 + alias: imagejan + - given-names: Andreas + family-names: Eisenbarth + affiliation: EMBL Heidelberg, Germany + orcid: https://orcid.org/0000-0002-1113-9556 + alias: aeisenbarth + - given-names: Jeremy + family-names: Freeman + affiliation: Chan Zuckerberg Initiative + alias: freeman-lab + - given-names: Christoph + family-names: Gohlke + affiliation: University of California, Irvine + alias: cgohlke + - given-names: Kabilar + family-names: Gunalan + alias: kabilar + - given-names: Hagai + family-names: Har-Gil + affiliation: Tel Aviv University, Israel + alias: HagaiHargil + - given-names: Mark + family-names: Harfouche + affiliation: Ramona Optics Inc, Durham, North Carolina, USA + orcid: https://orcid.org/0000-0002-4657-4603 + alias: hmaarrfk + - given-names: Volker + family-names: Hilsenstein + affiliation: EMBL Heidelberg, Germany + orcid: https://orcid.org/0000-0002-2255-2960 + alias: VolkerH + - given-names: Katherine + family-names: Hutchings + affiliation: University College London + alias: katherine-hutchings + - given-names: Jessy + family-names: Lauer + affiliation: Swiss Federal Institute of Technology (EPFL), Lausanne, Switzerland + orcid: https://orcid.org/0000-0002-3656-2449 + alias: jeylau + - given-names: Gregor + family-names: Lichtner + affiliation: Universitätsmedizin Greifswald + orcid: https://orcid.org/0000-0002-5890-1958 + alias: glichtner + - given-names: Ziyang + family-names: Liu + affiliation: Chan Zuckerberg Initiative Foundation + alias: liu-ziyang + - given-names: Lucy + family-names: Liu + affiliation: Quansight + alias: lucyleeow + - given-names: Alan + family-names: Lowe + affiliation: UCL & The Alan Turing Institute + alias: quantumjot + - given-names: Luca + family-names: Marconato + affiliation: EMBL Heidelberg + orcid: https://orcid.org/0000-0003-3198-1326 + alias: LucaMarconato + - given-names: Sean + family-names: Martin + affiliation: MetaCell + orcid: https://orcid.org/0000-0001-7600-0291 + alias: seankmartin + - given-names: Abigail + family-names: McGovern + affiliation: Monash University + alias: AbigailMcGovern + - given-names: Lukasz + family-names: Migas + affiliation: Delft University of Technology + alias: lukasz-migas + - given-names: Nadalyn + family-names: Miller + affiliation: Apex Systems + orcid: https://orcid.org/0009-0007-6993-1267 + alias: Nadalyn-CZI + - given-names: Hector + family-names: Muñoz + affiliation: University of California, Los Angeles + orcid: https://orcid.org/0000-0001-7851-2549 + alias: hectormz + - given-names: Jan-Hendrik + family-names: Müller + affiliation: Georg-August-Universität Göttingen + orcid: https://orcid.org/0009-0007-3670-9969 + alias: kolibril13 + - given-names: Christopher + family-names: Nauroth-Kreß + affiliation: University Hospital Würzburg - Institute of Neuroradiology + alias: Chris-N-K + - given-names: David + family-names: Palecek + affiliation: Algarve Centre of Marine Sciences (CCMAR) + orcid: https://orcid.org/0009-0003-9328-8540 + alias: palec87 + - given-names: Constantin + family-names: Pape + affiliation: Georg-August-Universität Göttingen + orcid: https://orcid.org/0000-0001-6562-7187 + alias: constantinpape + - given-names: Eric + family-names: Perlman + affiliation: Yikes LLC + orcid: https://orcid.org/0000-0001-5542-1302 + alias: perlman + - given-names: Kim + family-names: Pevey + alias: kcpevey + - given-names: Gonzalo + family-names: Peña-Castellanos + affiliation: Quansight + orcid: https://orcid.org/0000-0002-1214-4680 + alias: goanpeca + - given-names: Andrea + family-names: Pierré + affiliation: Brown University + orcid: https://orcid.org/0000-0003-4501-5428 + alias: kir0ul + - given-names: David + family-names: Pinto + alias: MarchisLost + - given-names: Jaime + family-names: Rodríguez-Guerra + affiliation: Quansight Labs + orcid: https://orcid.org/0000-0001-8974-1566 + alias: jaimergp + - given-names: David + family-names: Ross + affiliation: NanoString Technologies, Inc. + orcid: https://orcid.org/0000-0001-9998-3817 + alias: davidpross + - given-names: Craig T. + family-names: Russell + affiliation: European Bioinformatics Institute - European Molecular Biology Laboratory + orcid: https://orcid.org/0000-0002-2447-5911 + alias: ctr26 + - given-names: James + family-names: Ryan + alias: jamesyan-git + - given-names: Gabriel + family-names: Selzer + affiliation: University of Wisconsin-Madison + orcid: https://orcid.org/0009-0002-2400-1940 + alias: gselzer + - given-names: MB + family-names: Smith + affiliation: AI lab for Living Technologies, University Medical Centre Utrecht (The Netherlands) + orcid: https://orcid.org/0000-0002-1405-0100 + alias: odinsbane + - given-names: Paul + family-names: Smith + affiliation: University College London + orcid: https://orcid.org/0000-0002-3676-5318 + alias: p-j-smith + - given-names: Konstantin + family-names: Sofiiuk + alias: ksofiyuk + - given-names: Johannes + family-names: Soltwedel + affiliation: DFG cluster of excellence 'Physics of Life', TU Dresden + orcid: https://orcid.org/0000-0003-1273-2412 + alias: jo-mueller + - given-names: David + family-names: Stansby + affiliation: University College London + orcid: https://orcid.org/0000-0002-1365-1908 + alias: dstansby + - given-names: Jules + family-names: Vanaret + affiliation: Aix Marseille University, CNRS, Fresnel, I2M, IBDM, Turing Centre for Living systems + orcid: https://orcid.org/0009-0004-6070-2263 + alias: jules-vanaret + - given-names: Pam + family-names: Wadhwa + affiliation: Quansight Labs + alias: ppwadhwa + - given-names: Martin + family-names: Weigert + affiliation: TU-Dresden / EPFL + orcid: https://orcid.org/0000-0002-7780-9057 + alias: maweigert + - given-names: Jonas + family-names: Windhager + affiliation: ETH Zurich / University of Zurich + orcid: https://orcid.org/0000-0002-2111-5291 + alias: jwindhager + - given-names: Philip + family-names: Winston + affiliation: Tobeva Software + alias: pwinston + - given-names: Rubin + family-names: Zhao + affiliation: Chinese Academy of Sciences - SIAT, Shenzhen, China + orcid: https://orcid.org/0009-0005-8264-5682 + alias: BeanLi + repository-code: https://github.com/napari/napari + license: BSD-3-Clause diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..bde3cb7 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,132 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socioeconomic status, +nationality, personal appearance, race, caste, color, religion, or sexual +identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +- Demonstrating empathy and kindness toward other people +- Being respectful of differing opinions, viewpoints, and experiences +- Giving and gracefully accepting constructive feedback +- Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +- Focusing on what is best not just for us as individuals, but for the overall + community + +Examples of unacceptable behavior include: + +- The use of sexualized language or imagery, and sexual attention or advances of + any kind +- Trolling, insulting or derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or email address, + without their explicit permission +- Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders 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, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official email address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to community leaders responsible for enforcement. +Please reach out to the maintainers of this repository by using their GitHub profile email address contact information to privately notify us of any incidents of this nature. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series of +actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or permanent +ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the +community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.1, available at +[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. + +Community Impact Guidelines were inspired by +[Mozilla's code of conduct enforcement ladder][mozilla coc]. + +For answers to common questions about this code of conduct, see the FAQ at +[https://www.contributor-covenant.org/faq][faq]. Translations are available at +[https://www.contributor-covenant.org/translations][translations]. + +[faq]: https://www.contributor-covenant.org/faq +[homepage]: https://www.contributor-covenant.org +[mozilla coc]: https://github.com/mozilla/diversity +[translations]: https://www.contributor-covenant.org/translations +[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html diff --git a/README.md b/README.md index 1355844..2d8e846 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,9 @@ # nVis -A tool for creating and visualizing n-dimensional microscopy images + +This project focuses on ingesting a set of [TIFF](https://en.wikipedia.org/wiki/TIFF) images as [OME-Zarr](https://pmc.ncbi.nlm.nih.gov/articles/PMC9980008/) or OME-TIFF () which are organized by channel and z-slices which compose three dimensional microscopy data for biological objects (such as organoids). +We read the output with [Napari](https://napari.org/dev/index.html), which provides a way to analyze and understand the 3D image data. + +## Development + +1. [Install `uv`](https://docs.astral.sh/uv/getting-started/installation/). +1. Install package locally (e.g. `uv pip install -e "."`). diff --git a/justfile b/justfile new file mode 100644 index 0000000..c0d0156 --- /dev/null +++ b/justfile @@ -0,0 +1,58 @@ +# justfile for common project commands +# see here for more information: https://github.com/casey/just + +# find system default shell +hashbang := if os() == 'macos' { + '/usr/bin/env zsh' +} else { + '/usr/bin/env bash' +} + +# show a list of just commands for this project +default: + @just --list + +# install the project for development purposes +@setup: + #!{{hashbang}} + uv pip install '.' + +# run testing on development source +@test: + #!{{hashbang}} + uv run pre-commit run -a + uv run pytest + +# run tiff to omezarr example with real data +@tiff_to_zarr: + #!{{hashbang}} + uv run python src/raw_organoid_images_to_omezarr/tiff_to_omezarr.py + +@tiff_to_ometiff: + #!{{hashbang}} + uv run python src/raw_organoid_images_to_omezarr/tiff_to_ometiff.py + +@tiff_to_ometiff_to_napari: + #!{{hashbang}} + uv run python src/raw_organoid_images_to_omezarr/tiff_to_ometiff.py + uv run python src/raw_organoid_images_to_omezarr/ometiff_to_napari.py + +@tiff_to_ometiff_to_avivator: + #!{{hashbang}} + uv run python src/raw_organoid_images_to_omezarr/tiff_to_ometiff.py + uv run python src/raw_organoid_images_to_omezarr/ometiff_to_avivator.py + +@tiff_to_zarr_napari: + #!{{hashbang}} + uv run python src/raw_organoid_images_to_omezarr/tiff_to_omezarr.py + uv run python src/raw_organoid_images_to_omezarr/zarr_to_napari.py + +@tiff_to_zarr_neuroglancer: + #!{{hashbang}} + uv run python src/raw_organoid_images_to_omezarr/tiff_to_omezarr.py + uv run python src/raw_organoid_images_to_omezarr/zarr_to_neuroglancer.py + +# run tiff to omezarr example with randomized data +@randomized_to_omezarr: + #!{{hashbang}} + uv run python src/raw_organoid_images_to_omezarr/randomized_to_omezarr.py diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..1bdabb8 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,74 @@ +[build-system] +build-backend = "setuptools.build_meta" +requires = [ "setuptools>=64", "setuptools-scm>=8" ] + +[project] +name = "nVis" +description = "A tool for creating and visualizing n-dimensional microscopy images." +readme = "README.md" +requires-python = ">=3.11" +classifiers = [ + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", +] +dynamic = [ "version" ] +dependencies = [ + "napari[all]>=0.5.5", + "napari-ome-zarr>=0.6.1", + "numpy<2.1", + "ome-zarr>=0.10.2", + "tifffile>=2024.12.12", + "xmltodict>=0.14.2", + "zarr>=2.18.4", +] + +[dependency-groups] +# dependency groups for uv +dev = [ + "pre-commit>=4.0.1", + "pytest>=8.3.4", + "setuptools-scm>=8.1", +] + +[tool.setuptools_scm] +root = "." + +[tool.ruff] +target-version = "py38" +line-length = 88 +fix = true +lint.select = [ + # flake8-builtins + "A", + # flake8-annotations + "ANN", + # flake8-comprehensions + "C4", + # mccabe + "C90", + # pycodestyle + "E", + # pyflakes + "F", + # isort + "I", + # pylint + "PL", + # ruff + "RUF", + # flake8-simplify + "SIM", + "W", +] +# Ignore `E402` and `F401` (unused imports) in all `__init__.py` files +lint.per-file-ignores."__init__.py" = [ "F401" ] +# ignore typing rules for tests +lint.per-file-ignores."tests/*" = [ "ANN201", "PLR0913", "PLR2004" ] + +[tool.pytest.ini_options] +pythonpath = [ "." ] + +[tool.jupytext] +formats = "ipynb,py:light" diff --git a/src/gff3d_utils/view.py b/src/gff3d_utils/view.py new file mode 100644 index 0000000..7832f5a --- /dev/null +++ b/src/gff3d_utils/view.py @@ -0,0 +1,73 @@ +""" +Viewing utilities for GFF 3D organoid project +""" + +import re +import xml.etree.ElementTree as ET +from typing import Optional, Tuple + + +def extract_z_slice_number_from_filename(filename: str) -> int: + """ + Extracts a z-slice number from a filename. + Follows conventions from images which are produced + to our knowledge by ZEISS LSM 880 with Airyscan + microscope output. + + Assumes the z-slice number + is a zero-padded number in the filename + with the pattern '_ZS###_'. + + Args: + filename (str): + The name of the file from which to extract the z-slice number. + + Returns: + int: + The extracted z-slice number. Returns 0 if the pattern is not found. + """ + match = re.search(r"_ZS(\d+)_", filename) + return int(match.group(1)) if match else 0 + + +def gather_scaling_info_from_scaninfoxml( + xml_file: str, +) -> Tuple[Optional[float], Optional[float], Optional[float]]: + """ + Reads the scan information from an XML file and + returns the values of ZStackSpacingMicrons, + MicronsPerPixelY, and MicronsPerPixelX. + + This function specifically caters to a file named + ScanInfo.xml which is included to our knowledge within + ZEISS LSM 880 with Airyscan microscope output (and perhaps + others). + + Args: + xml_file (str): + Path to the XML file. + + Returns: + Tuple[Optional[float], Optional[float], Optional[float]]: + A tuple containing the values of + ZStackSpacingMicrons, MicronsPerPixelY, + and MicronsPerPixelX. If a value is not found, + it will be None. + """ + tree = ET.parse(xml_file) + root = tree.getroot() + + microns_per_pixel_y: Optional[float] = None + microns_per_pixel_x: Optional[float] = None + z_stack_spacing_microns: Optional[float] = None + + for setting in root.findall(".//Setting"): + param = setting.get("Parameter") + if param == "MicronsPerPixelY": + microns_per_pixel_y = float(setting.text) + elif param == "MicronsPerPixelX": + microns_per_pixel_x = float(setting.text) + elif param == "ZStackSpacingMicrons": + z_stack_spacing_microns = float(setting.text) + + return (z_stack_spacing_microns, microns_per_pixel_y, microns_per_pixel_x) diff --git a/src/raw_organoid_images_to_omezarr/ometiff_to_avivator.py b/src/raw_organoid_images_to_omezarr/ometiff_to_avivator.py new file mode 100644 index 0000000..cd1254e --- /dev/null +++ b/src/raw_organoid_images_to_omezarr/ometiff_to_avivator.py @@ -0,0 +1,56 @@ +""" +Read OME-TIFF files from this project into Avivator +""" + +import pathlib +import threading +import time +import webbrowser + +from flask import Flask, Response, send_from_directory +from flask_cors import CORS + +# gather relative path for this file +relpath = pathlib.Path(__file__).parent + +# Define the output path for the combined OME-TIFF file +combined_output_path = relpath / "data/example_output.ome.tiff" + +# Create Flask app +app = Flask(__name__) +CORS(app) # Enable CORS for all routes + + +@app.route("/src/raw_organoid_images_to_omezarr/data/") +def serve_file(filename: str) -> Response: + return send_from_directory(relpath / "data", filename) + + +# Function to run the Flask app +def run_flask() -> None: + app.run(port=8005, debug=False) + + +# Start the Flask app in a separate thread +flask_thread = threading.Thread(target=run_flask) +flask_thread.start() + +time.sleep(5) # Wait for the server to start + +# Open Avivator in the web browser with the URL pointing to the served file +avivator_url = "https://avivator.gehlenborglab.org/?image_url=http://localhost:8005/src/raw_organoid_images_to_omezarr/data/example_output.ome.tiff" +print("Opening a web browser to: ", avivator_url) +webbrowser.open(avivator_url) + +# Keep the server running for a specified duration (e.g., 60 seconds) +try: + time.sleep(600) +except KeyboardInterrupt: + print("Interrupted by user") + +# Shut down the Flask server +# Note: Flask does not have a built-in way to +# shut down the server cleanly from another thread. +# You may need to manually stop the script or use a +# more advanced method to stop the Flask server. +print("Server has been shut down.") diff --git a/src/raw_organoid_images_to_omezarr/ometiff_to_napari.py b/src/raw_organoid_images_to_omezarr/ometiff_to_napari.py new file mode 100644 index 0000000..919b72a --- /dev/null +++ b/src/raw_organoid_images_to_omezarr/ometiff_to_napari.py @@ -0,0 +1,60 @@ +""" +Read OME-TIFF files from this project into Napari +""" + +import pathlib +import pprint + +import napari +import tifffile as tiff +import xmltodict + +from gff3d_utils.view import gather_scaling_info_from_scaninfoxml + +# gather relative path for this file +relpath = pathlib.Path(__file__).parent + +# Define the output path for the combined OME-TIFF file +combined_output_path = f"{relpath}/data/example_output.ome.tiff" + +# scaninfo file +scaninfo_file = pathlib.Path( + f"{relpath}/data/GFF-data/originals/NF0014-Thawed 3 (Raw image files)-Combined" + "/C10-1/ScanInfo.xml" +) + +# gather scaling details +scaling_values = gather_scaling_info_from_scaninfoxml(scaninfo_file) + +# Visualize with napari, start in 3d mode +viewer = napari.Viewer(ndisplay=3) + +# Read and add layers from the combined OME-TIFF file +with tiff.TiffFile(combined_output_path) as tif: + combined_data = tif.asarray() + metadata = xmltodict.parse(tif.ome_metadata) + pprint.pprint(metadata) # Print the metadata to understand its structure + channel_names = [ + channel["@Name"] for channel in metadata["OME"]["Image"]["Pixels"]["Channel"] + ] + + # First, add image layers + for i, (channel_data, channel_name) in enumerate(zip(combined_data, channel_names)): + if "(labels)" not in channel_name: + viewer.add_image( + channel_data, + name=channel_name, + scale=scaling_values, + ) + + # Then, add label layers + for i, (channel_data, channel_name) in enumerate(zip(combined_data, channel_names)): + if "(labels)" in channel_name: + viewer.add_labels( + channel_data, + name=channel_name, + scale=scaling_values, + ) + +# Start the Napari event loop +napari.run() diff --git a/src/raw_organoid_images_to_omezarr/randomized_to_omezarr.py b/src/raw_organoid_images_to_omezarr/randomized_to_omezarr.py new file mode 100644 index 0000000..98ac3cb --- /dev/null +++ b/src/raw_organoid_images_to_omezarr/randomized_to_omezarr.py @@ -0,0 +1,92 @@ +""" +Experiment with randomized image zstacks to OME-ZARR with display in Napari. +""" + +import pathlib +import shutil + +import napari +import numpy as np +import zarr +from ome_zarr.io import parse_url +from ome_zarr.writer import write_image + +channels = [ + "Channel A", + "Channel B", + "Channel C", + "Channel D", + "Channel E", +] + +relpath = pathlib.Path(__file__).parent + +# Set common static scaling values +scaling_values = (1.0, 0.1, 0.1) # (z, y, x) in microns + +# Generate random data for z-slices +num_z_slices = 45 +image_shape = (1537, 1540) # Example shape, adjust as needed + +channels = { + channel: [ + np.random.randint(0, 65535, size=image_shape, dtype=np.uint16) + for _ in range(num_z_slices) + ] + for channel in channels +} + +# Debug: show channel keys and file counts +print(channels.keys()) +for channel, files in channels.items(): + print(f"Channel: {channel}, Slices: {len(files)}") + +# Load images into memory via stacks +zstacks = { + channel: np.stack(files, axis=0).astype(np.uint16) + for channel, files in channels.items() +} + +# Debug: show stack shapes +for channel, stack in zstacks.items(): + print(f"Channel: {channel}, Stack shape: {stack.shape}") + +# Define the output path +output_path = f"{relpath}/data/randomized_example_output.zarr" + +# Clean up any previous output +shutil.rmtree(output_path, ignore_errors=True) + +# Parse URL and ensure store is compatible +store = parse_url(output_path, mode="w").store +group = zarr.group(store, overwrite=True) # Ensure we are working with a Zarr group + +# Write each channel separately to the Zarr file with no compression +for channel, stack in zstacks.items(): + write_image( + stack, + group.create_group(channel), + axes="zyx", # Specify the axes order for each channel + dtype="uint16", + scaler=None, # Disable scaler + ) + +print(f"OME-Zarr written to {output_path}") + +# Debug: show shape of input +print(f"Shape of input: {np.array(list(zstacks.values())).shape}") + +# Check Zarr file structure +z = zarr.open(output_path, mode="r") +print(z.tree()) + +# Visualize with napari, start in 3d mode +viewer = napari.Viewer(ndisplay=3) + +# Iterate through each channel in the Zarr file +for channel_name in sorted(z.keys(), reverse=True): + print(f"Opening {channel_name} in Napari...") + viewer.add_image(z[channel_name]["0"][:], name=channel_name, scale=scaling_values) + +# Start the Napari event loop +napari.run() diff --git a/src/raw_organoid_images_to_omezarr/tiff_to_ometiff.py b/src/raw_organoid_images_to_omezarr/tiff_to_ometiff.py new file mode 100644 index 0000000..fc427df --- /dev/null +++ b/src/raw_organoid_images_to_omezarr/tiff_to_ometiff.py @@ -0,0 +1,226 @@ +""" +Experiment with GFF image stacks to OME-ZARR with display in Napari. +""" + +import pathlib +import shutil +from itertools import groupby +from typing import List + +import numpy as np +import tifffile as tiff + +from gff3d_utils.view import ( + extract_z_slice_number_from_filename, + gather_scaling_info_from_scaninfoxml, +) + +# create a filename code to channel name mapping +# (filename codes are found within the filenames provided) +filename_code_channel_map = { + "405": "Hoechst 33342", + "488": "Concanavalin A", + "555": "WGA+ Phalloidin", + "640": "Mitotracker Deep Red", + "TRANS": "Bright Field", +} + +relpath = pathlib.Path(__file__).parent + +# Set paths used below +image_directory = pathlib.Path( + f"{relpath}/data/GFF-data/originals/NF0014-Thawed 3 (Raw image files)-Combined" + "/C10-1/C10-1" +) +scaninfo_file = pathlib.Path( + f"{relpath}/data/GFF-data/originals/NF0014-Thawed 3 (Raw image files)-Combined" + "/C10-1/ScanInfo.xml" +) +mask_directory = pathlib.Path(f"{relpath}/data/GFF-data/masks/C10-1") + +# gather scaling details +scaling_values = gather_scaling_info_from_scaninfoxml(scaninfo_file) + +# build a reference to the observations +frame_files = { + # gather data from original images + "images": { + # images include a channel code which is mentioned + # above in the filename_code_channel_map + filename_code_channel_map[filename_code]: sorted( + files, key=lambda x: extract_z_slice_number_from_filename(x.name) + ) + for filename_code, files in groupby( + sorted( + [ + file + for file in image_directory.glob("*.tif") + # ignore the files with "Merge" in the name + if file.name.split("_")[1] != "Merge" + ], + key=lambda x: x.name.split("_")[1], + ), + key=lambda x: x.name.split("_")[1], + ) + }, + "labels": { + # the masks include a compartment name which is mentioned + # in the mask_channel_map + label_name: next(iter(file)) + for label_name, file in groupby( + sorted( + mask_directory.glob("*.tiff"), + key=lambda x: x.name.split("_")[0], + ), + key=lambda x: x.name.split("_")[0], + ) + }, +} + +# Debug: show channel keys and file counts +print(frame_files["images"].keys()) +for channel, files in frame_files["images"].items(): + print(f"Channel: {channel}, Files: {len(files)}") + for file in files: + print(f" {file.name}") + +# Debug: show channel keys and file counts +print(frame_files["images"].keys()) +for channel, files in frame_files["images"].items(): + print(f"Channel: {channel}, Files: {len(files)}") + +# Load images into memory via stacks +frame_zstacks = { + "images": { + channel: np.stack([tiff.imread(file) for file in files], axis=0).astype( + np.uint16 + ) + for channel, files in frame_files["images"].items() + }, + "labels": { + channel: tiff.imread(tiff_file).astype(np.uint16) + for channel, tiff_file in frame_files["labels"].items() + }, +} + +# Debug: show stack shapes +for channel, stack in frame_zstacks["images"].items(): + print(f"Channel: {channel}, Stack shape: {stack.shape}") + + +# Define the output path +output_path = f"{relpath}/data/example_output.ome.tiff" + +# Clean up any previous output +shutil.rmtree(output_path, ignore_errors=True) + + +# Function to write OME-TIFF +def write_ome_tiff( + output_path: str, + data: np.ndarray, + axes: str, + resolution: List[float], + channel_names: List[str], +) -> None: + """ + Write data to an OME-TIFF file with specified metadata. + + Args: + output_path (str): + The path where the OME-TIFF file will be saved. + data (np.ndarray): + The image data to be written to the OME-TIFF file. + axes (str): + The axes of the image data (e.g., 'ZYX', 'CZYX'). + resolution (List[float]): + The physical size of each pixel in micrometers (µm) for each axis. + The order should be [Z, Y, X]. + channel_names (List[str]): + The names of the channels in the image data. + + Returns: + None + """ + + with tiff.TiffWriter(output_path, bigtiff=True) as tif: + options = { + "photometric": "minisblack", + "metadata": { + "axes": axes, + "PhysicalSizeX": resolution[2], # X resolution + "PhysicalSizeY": resolution[1], # Y resolution + "PhysicalSizeZ": resolution[0], # Z resolution + "PhysicalSizeXUnit": "µm", + "PhysicalSizeYUnit": "µm", + "PhysicalSizeZUnit": "µm", + "Channel": [{"Name": name} for name in channel_names], + }, + } + + tif.write(data, **options) + + +# Prepare the data for writing +images_data = [] +labels_data = [] +channel_names = [] +label_names = [] + +# Collect image data +for channel, stack in frame_zstacks["images"].items(): + images_data.append(stack) + channel_names.append(channel) + +# Collect label data +for compartment_name, stack in frame_zstacks["labels"].items(): + labels_data.append(stack) + # note: we add the labels distinction to help + # differentiate between channels and labels + label_names.append(f"{compartment_name} (labels)") + +# Stack the images and labels along a new axis for channels +images_data = np.stack(images_data, axis=0) +labels_data = np.stack(labels_data, axis=0) + +# Combine images and labels into a single array +combined_data = np.concatenate((images_data, labels_data), axis=0) + +# Combine channel names and label names into a single list +combined_channel_names = channel_names + label_names + +# Write the combined data to a single OME-TIFF +write_ome_tiff( + output_path, + combined_data, + "CZYX", + [scaling_values[0], scaling_values[1], scaling_values[2]], + combined_channel_names, +) + +print(f"OME-TIFF written to {output_path}") + + +# Verify that the file is an OME-TIFF +def verify_ome_tiff(file_path: str) -> None: + """Verify that the file is an OME-TIFF. + + Args: + file_path (str): + The path to the file to be verified. + + Raises: + ValueError: + If the file is not an OME-TIFF. + """ + try: + with tiff.TiffFile(file_path) as tif: + is_ome = tif.is_ome + print(f"{file_path} is OME-TIFF: {is_ome}") + if not is_ome: + raise ValueError(f"{file_path} is not an OME-TIFF file.") + except Exception as e: + raise ValueError(f"Error verifying OME-TIFF file: {e}") + + +verify_ome_tiff(output_path) diff --git a/src/raw_organoid_images_to_omezarr/tiff_to_omezarr.py b/src/raw_organoid_images_to_omezarr/tiff_to_omezarr.py new file mode 100644 index 0000000..055d923 --- /dev/null +++ b/src/raw_organoid_images_to_omezarr/tiff_to_omezarr.py @@ -0,0 +1,225 @@ +""" +Experiment with GFF image stacks to OME-ZARR with display in Napari. +""" + +import pathlib +import shutil +from itertools import groupby + +import numpy as np +import tifffile as tiff +import zarr +from ome_zarr.io import parse_url +from ome_zarr.writer import write_image + +from gff3d_utils.view import ( + extract_z_slice_number_from_filename, + gather_scaling_info_from_scaninfoxml, +) + +# create a filename code to channel name mapping +# (filename codes are found within the filenames provided) +filename_code_channel_map = { + "405": "Hoechst 33342", + "488": "Concanavalin A", + "555": "WGA+ Phalloidin", + "640": "Mitotracker Deep Red", + "TRANS": "Bright Field", +} + +relpath = pathlib.Path(__file__).parent + +# Set paths used below +image_directory = pathlib.Path( + f"{relpath}/data/GFF-data/originals/NF0014-Thawed 3 (Raw image files)-Combined" + "/C10-1/C10-1" +) +scaninfo_file = pathlib.Path( + f"{relpath}/data/GFF-data/originals/NF0014-Thawed 3 (Raw image files)-Combined" + "/C10-1/ScanInfo.xml" +) +mask_directory = pathlib.Path(f"{relpath}/data/GFF-data/masks/C10-1") + +# gather scaling details +scaling_values = gather_scaling_info_from_scaninfoxml(scaninfo_file) + +# build a reference to the observations +frame_files = { + # gather data from original images + "images": { + # images include a channel code which is mentioned + # above in the filename_code_channel_map + filename_code_channel_map[filename_code]: sorted( + files, key=lambda x: extract_z_slice_number_from_filename(x.name) + ) + for filename_code, files in groupby( + sorted( + [ + file + for file in image_directory.glob("*.tif") + # ignore the files with "Merge" in the name + if file.name.split("_")[1] != "Merge" + ], + key=lambda x: x.name.split("_")[1], + ), + key=lambda x: x.name.split("_")[1], + ) + }, + "labels": { + # the masks include a compartment name which is mentioned + # in the mask_channel_map + label_name: next(iter(file)) + for label_name, file in groupby( + sorted( + mask_directory.glob("*.tiff"), + key=lambda x: x.name.split("_")[0], + ), + key=lambda x: x.name.split("_")[0], + ) + }, +} + +# Debug: show channel keys and file counts +print(frame_files["images"].keys()) +for channel, files in frame_files["images"].items(): + print(f"Channel: {channel}, Files: {len(files)}") + for file in files: + print(f" {file.name}") + +# Debug: show channel keys and file counts +print(frame_files["images"].keys()) +for channel, files in frame_files["images"].items(): + print(f"Channel: {channel}, Files: {len(files)}") + +# Load images into memory via stacks +frame_zstacks = { + "images": { + channel: np.stack([tiff.imread(file) for file in files], axis=0).astype( + np.uint16 + ) + for channel, files in frame_files["images"].items() + }, + "labels": { + channel: tiff.imread(tiff_file).astype(np.uint16) + for channel, tiff_file in frame_files["labels"].items() + }, +} + +# Debug: show stack shapes +for channel, stack in frame_zstacks["images"].items(): + print(f"Channel: {channel}, Stack shape: {stack.shape}") + +# Define the output path +output_path = f"{relpath}/data/example_output.zarr" + +# Clean up any previous output +shutil.rmtree(output_path, ignore_errors=True) + +# Parse URL and ensure store is compatible +store = parse_url(output_path, mode="w").store +# Ensure we are working with a Zarr group +root = zarr.group(store, overwrite=True) + +# Write each channel separately to the Zarr file with no compression +# Save images to OME-Zarr format +images_group = root.create_group("images") +for channel, stack in frame_zstacks["images"].items(): + write_image( + image=stack, + group=(group := images_group.create_group(channel)), + axes="zyx", # Specify the axes order for each channel + dtype="uint16", # Ensure the dtype is set correctly + scaler=None, # Disable scaler + ) + # Set the units attribute for the group to "micrometers" + group.attrs["units"] = "micrometers" + + # Define the multiscales metadata for the group + group.attrs["multiscales"] = [ + { + "datasets": [ + { + "path": "0", # Path to the dataset + "coordinateTransformations": [ + { + "type": "scale", + "scale": list(scaling_values), + } # Apply scaling values + ], + } + ], + "axes": [ + { + "name": "z", + "unit": "micrometer", + "type": "space", + }, # Define the z-axis + { + "name": "y", + "unit": "micrometer", + "type": "space", + }, # Define the y-axis + { + "name": "x", + "unit": "micrometer", + "type": "space", + }, # Define the x-axis + ], + } + ] + +# Save masks to OME-Zarr format +labels_group = root.create_group("labels") +for compartment_name, stack in frame_zstacks["labels"].items(): + write_image( + image=stack, + group=(group := labels_group.create_group(compartment_name)), + axes="zyx", # Specify the axes order for each mask + dtype="uint16", # Ensure the dtype is set correctly + scaler=None, # Disable scaler + ) + # Set the units attribute for the group to "micrometers" + group.attrs["units"] = "micrometers" + + # Define the multiscales metadata for the group + group.attrs["multiscales"] = [ + { + "datasets": [ + { + "path": "0", # Path to the dataset + "coordinateTransformations": [ + { + "type": "scale", + "scale": list(scaling_values), + } # Apply scaling values + ], + } + ], + "axes": [ + { + "name": "z", + "unit": "micrometer", + "type": "space", + }, # Define the z-axis + { + "name": "y", + "unit": "micrometer", + "type": "space", + }, # Define the y-axis + { + "name": "x", + "unit": "micrometer", + "type": "space", + }, # Define the x-axis + ], + } + ] + +print(f"OME-Zarr written to {output_path}") + +# Debug: show shape of input +print(f"Shape of input: {np.array(frame_zstacks['images'].values()).shape}") + +# Check Zarr file structure +frame_zarr = zarr.open(output_path, mode="r") +print(frame_zarr.tree()) diff --git a/src/raw_organoid_images_to_omezarr/zarr_to_napari.py b/src/raw_organoid_images_to_omezarr/zarr_to_napari.py new file mode 100644 index 0000000..ff20f75 --- /dev/null +++ b/src/raw_organoid_images_to_omezarr/zarr_to_napari.py @@ -0,0 +1,55 @@ +""" +Read a Zarr file from this project into Napari +""" + +import pathlib + +import napari +import zarr + +from gff3d_utils.view import ( + gather_scaling_info_from_scaninfoxml, +) + +# gather relative path for this file +relpath = pathlib.Path(__file__).parent + +# Define the output path +output_path = f"{relpath}/data/example_output.zarr" + +# scaninfo file +scaninfo_file = pathlib.Path( + f"{relpath}/data/GFF-data/originals/NF0014-Thawed 3 (Raw image files)-Combined" + "/C10-1/ScanInfo.xml" +) + +# gather scaling details +scaling_values = gather_scaling_info_from_scaninfoxml(scaninfo_file) + +# Check Zarr file structure +frame_zarr = zarr.open(output_path, mode="r") +print(frame_zarr.tree()) + +# Visualize with napari, start in 3d mode +viewer = napari.Viewer(ndisplay=3) + +# Iterate through each channel in the Zarr file +for channel_name in sorted(frame_zarr["images"].keys(), reverse=True): + print(f"Opening {channel_name} in Napari...") + viewer.add_image( + frame_zarr["images"][channel_name]["0"][:], + name=channel_name, + scale=scaling_values, + ) + +# Iterate through each compartment in the Zarr file and add labels to Napari +for label_name in sorted(frame_zarr["labels"].keys(), reverse=True): + print(f"Opening {label_name} in Napari...") + viewer.add_labels( + frame_zarr["labels"][label_name]["0"][:], + name=f"{label_name} (label)", + scale=scaling_values, + ) + +# Start the Napari event loop +napari.run() diff --git a/src/raw_organoid_images_to_omezarr/zarr_to_neuroglancer.py b/src/raw_organoid_images_to_omezarr/zarr_to_neuroglancer.py new file mode 100644 index 0000000..5207887 --- /dev/null +++ b/src/raw_organoid_images_to_omezarr/zarr_to_neuroglancer.py @@ -0,0 +1,65 @@ +""" +Viewing data from a Zarr store in Neuroglancer +""" + +import pathlib +import time +import webbrowser + +import neuroglancer +from cloudvolume import CloudVolume + +# Set up Neuroglancer +neuroglancer.set_server_bind_address("localhost") + +relpath = pathlib.Path(__file__).parent + +# Define the path to the Zarr store +zarr_path = f"{relpath}/data/example_output.zarr" + +# Create a CloudVolume instance +vol = CloudVolume( + f"file://{zarr_path}/images/Concanavalin A", mip=0, bounded=True, fill_missing=True +) + +# Ensure the volume is correctly set up +vol.info["scales"][0]["resolution"] = [ + 0.1006, + 0.1006, + 1, +] # Example resolution in micrometers +vol.info["scales"][0]["voxel_offset"] = [ + 0, + 0, + 0, + 0, +] # Adjusted to match the rank of the data +vol.info["scales"][0]["size"] = vol.shape +vol.info["type"] = "uint16" +vol.info["data_type"] = "uint16" +vol.commit_info() + +# Check the shape of the data +data_shape = vol.shape +print(f"Data shape: {data_shape}") + +# Adjust the coordinate space to match the data dimensions +coordinate_space = neuroglancer.CoordinateSpace( + names=["c", "z", "y", "x"], units="mm", scales=[1, 0.1006, 0.1006, 0.1006] +) + +# Open the volume in Neuroglancer +viewer = neuroglancer.Viewer() +with viewer.txn() as s: + s.layers.append( + name="Concanavalin A", + layer=neuroglancer.LocalVolume( + data=vol, dimensions=coordinate_space, voxel_offset=(0, 0, 0, 0) + ), + ) + +# Print the Neuroglancer viewer URL +print(f"Neuroglancer viewer URL: {viewer.get_viewer_url()}") +webbrowser.open_new_tab(viewer.get_viewer_url()) + +time.sleep(500) diff --git a/tests/test_view.py b/tests/test_view.py new file mode 100644 index 0000000..190152e --- /dev/null +++ b/tests/test_view.py @@ -0,0 +1,106 @@ +""" +Tests for gff3d_utils/view.py +""" + +import pathlib +from typing import Optional, Tuple + +import pytest + +from gff3d_utils.view import ( + extract_z_slice_number_from_filename, + gather_scaling_info_from_scaninfoxml, +) + + +@pytest.mark.parametrize( + "filename, expected", + [ + ("C10-1_405_ZS034_FOV-1.tif", 34), + ("C10-1_405_ZS018_FOV-1.tif", 18), + ("C10-1_405_ZS039_FOV-1.tif", 39), + ("C10-1_405_ZS043_FOV-1.tif", 43), + ("C10-1_405_ZS033_FOV-1.tif", 33), + ("C10-1_405_ZS027_FOV-1.tif", 27), + ("C10-1_405_ZS006_FOV-1.tif", 6), + ("C10-1_405_FOV-1.tif", 0), # No ZS pattern + ("C10-1_405_ZS_FOV-1.tif", 0), # Incomplete ZS pattern + ], +) +def test_extract_z_slice_number_from_filename(filename: str, expected: int): + """ + Tests extract_z_slice_number_from_filename + """ + assert extract_z_slice_number_from_filename(filename) == expected + + +@pytest.mark.parametrize( + "xml_content, expected", + [ + ( + """ + + + + 0.1006 + 0.1006 + + + + + 1.000 + + + """, + (1.000, 0.1006, 0.1006), + ), + ( + """ + + + + 0.200 + 0.200 + + + + + 2.000 + + + """, + (2.000, 0.200, 0.200), + ), + ( + """ + + + + 0.300 + + + + + 3.000 + + + """, + (3.000, None, 0.300), + ), + ], +) +def test_gather_scaling_info_from_scaninfoxml( + xml_content: str, + expected: Tuple[Optional[float], Optional[float], Optional[float]], + tmp_path: pathlib.Path, +): + """ + Tests gather_scaling_info_from_scaninfoxml + """ + + # write a temp file + xml_file = tmp_path / "temp_scaninfo.xml" + xml_file.write_text(xml_content) + + # check the results + assert gather_scaling_info_from_scaninfoxml(xml_file) == expected diff --git a/uv.lock b/uv.lock new file mode 100644 index 0000000..a306f6e --- /dev/null +++ b/uv.lock @@ -0,0 +1,4058 @@ +version = 1 +requires-python = ">=3.11" +resolution-markers = [ + "python_full_version < '3.12' and sys_platform != 'win32'", + "python_full_version < '3.12' and sys_platform == 'win32'", + "python_full_version >= '3.13' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and sys_platform != 'win32'", + "python_full_version >= '3.13' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and sys_platform == 'win32'", +] + +[[package]] +name = "aiohappyeyeballs" +version = "2.4.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7f/55/e4373e888fdacb15563ef6fa9fa8c8252476ea071e96fb46defac9f18bf2/aiohappyeyeballs-2.4.4.tar.gz", hash = "sha256:5fdd7d87889c63183afc18ce9271f9b0a7d32c2303e394468dd45d514a757745", size = 21977 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/74/fbb6559de3607b3300b9be3cc64e97548d55678e44623db17820dbd20002/aiohappyeyeballs-2.4.4-py3-none-any.whl", hash = "sha256:a980909d50efcd44795c4afeca523296716d50cd756ddca6af8c65b996e27de8", size = 14756 }, +] + +[[package]] +name = "aiohttp" +version = "3.11.10" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiohappyeyeballs" }, + { name = "aiosignal" }, + { name = "attrs" }, + { name = "frozenlist" }, + { name = "multidict" }, + { name = "propcache" }, + { name = "yarl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/94/c4/3b5a937b16f6c2a0ada842a9066aad0b7a5708427d4a202a07bf09c67cbb/aiohttp-3.11.10.tar.gz", hash = "sha256:b1fc6b45010a8d0ff9e88f9f2418c6fd408c99c211257334aff41597ebece42e", size = 7668832 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/db/7c/584d5ca19343c9462d054337828f72628e6dc204424f525df59ebfe75d1e/aiohttp-3.11.10-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:77c4aa15a89847b9891abf97f3d4048f3c2d667e00f8a623c89ad2dccee6771b", size = 708395 }, + { url = "https://files.pythonhosted.org/packages/cd/2d/61c33e01baeb23aebd07620ee4d780ff40f4c17c42289bf02a405f2ac312/aiohttp-3.11.10-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:909af95a72cedbefe5596f0bdf3055740f96c1a4baa0dd11fd74ca4de0b4e3f1", size = 468281 }, + { url = "https://files.pythonhosted.org/packages/ab/70/0ddb3a61b835068eb0badbe8016b4b65b966bad5f8af0f2d63998ff4cfa4/aiohttp-3.11.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:386fbe79863eb564e9f3615b959e28b222259da0c48fd1be5929ac838bc65683", size = 455345 }, + { url = "https://files.pythonhosted.org/packages/44/8c/4e14e9c1767d9a6ab1af1fbad9df9c77e050b39b6afe9e8343ec1ba96508/aiohttp-3.11.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3de34936eb1a647aa919655ff8d38b618e9f6b7f250cc19a57a4bf7fd2062b6d", size = 1685464 }, + { url = "https://files.pythonhosted.org/packages/ef/6e/1bab78ebb4f5a1c54f0fc10f8d52abc06816a9cb1db52b9c908e3d69f9a8/aiohttp-3.11.10-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0c9527819b29cd2b9f52033e7fb9ff08073df49b4799c89cb5754624ecd98299", size = 1743427 }, + { url = "https://files.pythonhosted.org/packages/5d/5e/c1b03bef621a8cc51ff551ef223c6ac606fabe0e35c950f56d01423ec2aa/aiohttp-3.11.10-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65a96e3e03300b41f261bbfd40dfdbf1c301e87eab7cd61c054b1f2e7c89b9e8", size = 1785188 }, + { url = "https://files.pythonhosted.org/packages/7c/b8/df6d76a149cbd969a58da478baec0be617287c496c842ddf21fe6bce07b3/aiohttp-3.11.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98f5635f7b74bcd4f6f72fcd85bea2154b323a9f05226a80bc7398d0c90763b0", size = 1674911 }, + { url = "https://files.pythonhosted.org/packages/ee/8e/e460e7bb820a08cec399971fc3176afc8090dc32fb941f386e0c68bc4ecc/aiohttp-3.11.10-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:03b6002e20938fc6ee0918c81d9e776bebccc84690e2b03ed132331cca065ee5", size = 1619570 }, + { url = "https://files.pythonhosted.org/packages/c2/ae/3b597e09eae4e75b77ee6c65443593d245bfa067ae6a5d895abaf27cce6c/aiohttp-3.11.10-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6362cc6c23c08d18ddbf0e8c4d5159b5df74fea1a5278ff4f2c79aed3f4e9f46", size = 1653772 }, + { url = "https://files.pythonhosted.org/packages/b8/d1/99852f2925992c4d7004e590344e5398eb163750de2a7c1fbe07f182d3c8/aiohttp-3.11.10-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:3691ed7726fef54e928fe26344d930c0c8575bc968c3e239c2e1a04bd8cf7838", size = 1649787 }, + { url = "https://files.pythonhosted.org/packages/39/c0/ea24627e08d722d5a6a00b3f6c9763fe3ad4650b8485f7a7a56ff932e3af/aiohttp-3.11.10-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:31d5093d3acd02b31c649d3a69bb072d539d4c7659b87caa4f6d2bcf57c2fa2b", size = 1732666 }, + { url = "https://files.pythonhosted.org/packages/f1/27/ab52dee4443ef8bdb26473b53c841caafd2bb637a8d85751694e089913bb/aiohttp-3.11.10-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:8b3cf2dc0f0690a33f2d2b2cb15db87a65f1c609f53c37e226f84edb08d10f52", size = 1754910 }, + { url = "https://files.pythonhosted.org/packages/cd/08/57c919d6b1f3b70bc14433c080a6152bf99454b636eb8a88552de8baaca9/aiohttp-3.11.10-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:fbbaea811a2bba171197b08eea288b9402faa2bab2ba0858eecdd0a4105753a3", size = 1692502 }, + { url = "https://files.pythonhosted.org/packages/ae/37/015006f669275735049e0549c37cb79c7a4a9350cbee070bbccb5a5b4b8a/aiohttp-3.11.10-cp311-cp311-win32.whl", hash = "sha256:4b2c7ac59c5698a7a8207ba72d9e9c15b0fc484a560be0788b31312c2c5504e4", size = 416178 }, + { url = "https://files.pythonhosted.org/packages/cf/8d/7bb48ae503989b15114baf9f9b19398c86ae93d30959065bc061b31331ee/aiohttp-3.11.10-cp311-cp311-win_amd64.whl", hash = "sha256:974d3a2cce5fcfa32f06b13ccc8f20c6ad9c51802bb7f829eae8a1845c4019ec", size = 442269 }, + { url = "https://files.pythonhosted.org/packages/25/17/1dbe2f619f77795409c1a13ab395b98ed1b215d3e938cacde9b8ffdac53d/aiohttp-3.11.10-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:b78f053a7ecfc35f0451d961dacdc671f4bcbc2f58241a7c820e9d82559844cf", size = 704448 }, + { url = "https://files.pythonhosted.org/packages/e3/9b/112247ad47e9d7f6640889c6e42cc0ded8c8345dd0033c66bcede799b051/aiohttp-3.11.10-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ab7485222db0959a87fbe8125e233b5a6f01f4400785b36e8a7878170d8c3138", size = 463829 }, + { url = "https://files.pythonhosted.org/packages/8a/36/a64b583771fc673062a7a1374728a6241d49e2eda5a9041fbf248e18c804/aiohttp-3.11.10-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cf14627232dfa8730453752e9cdc210966490992234d77ff90bc8dc0dce361d5", size = 455774 }, + { url = "https://files.pythonhosted.org/packages/e5/75/ee1b8f510978b3de5f185c62535b135e4fc3f5a247ca0c2245137a02d800/aiohttp-3.11.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:076bc454a7e6fd646bc82ea7f98296be0b1219b5e3ef8a488afbdd8e81fbac50", size = 1682134 }, + { url = "https://files.pythonhosted.org/packages/87/46/65e8259432d5f73ca9ebf5edb645ef90e5303724e4e52477516cb4042240/aiohttp-3.11.10-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:482cafb7dc886bebeb6c9ba7925e03591a62ab34298ee70d3dd47ba966370d2c", size = 1736757 }, + { url = "https://files.pythonhosted.org/packages/03/f6/a6d1e791b7153fb2d101278f7146c0771b0e1569c547f8a8bc3035651984/aiohttp-3.11.10-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf3d1a519a324af764a46da4115bdbd566b3c73fb793ffb97f9111dbc684fc4d", size = 1793033 }, + { url = "https://files.pythonhosted.org/packages/a8/e9/1ac90733e36e7848693aece522936a13bf17eeb617da662f94adfafc1c25/aiohttp-3.11.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24213ba85a419103e641e55c27dc7ff03536c4873470c2478cce3311ba1eee7b", size = 1691609 }, + { url = "https://files.pythonhosted.org/packages/6d/a6/77b33da5a0bc04566c7ddcca94500f2c2a2334eecab4885387fffd1fc600/aiohttp-3.11.10-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b99acd4730ad1b196bfb03ee0803e4adac371ae8efa7e1cbc820200fc5ded109", size = 1619082 }, + { url = "https://files.pythonhosted.org/packages/48/94/5bf5f927d9a2fedd2c978adfb70a3680e16f46d178361685b56244eb52ed/aiohttp-3.11.10-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:14cdb5a9570be5a04eec2ace174a48ae85833c2aadc86de68f55541f66ce42ab", size = 1641186 }, + { url = "https://files.pythonhosted.org/packages/99/2d/e85103aa01d1064e51bc50cb51e7b40150a8ff5d34e5a3173a46b241860b/aiohttp-3.11.10-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:7e97d622cb083e86f18317282084bc9fbf261801b0192c34fe4b1febd9f7ae69", size = 1646280 }, + { url = "https://files.pythonhosted.org/packages/7b/e0/44651fda8c1d865a51b3a81f1956ea55ce16fc568fe7a3e05db7fc22f139/aiohttp-3.11.10-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:012f176945af138abc10c4a48743327a92b4ca9adc7a0e078077cdb5dbab7be0", size = 1701862 }, + { url = "https://files.pythonhosted.org/packages/4e/1e/0804459ae325a5b95f6f349778fb465f29d2b863e522b6a349db0aaad54c/aiohttp-3.11.10-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44224d815853962f48fe124748227773acd9686eba6dc102578defd6fc99e8d9", size = 1734373 }, + { url = "https://files.pythonhosted.org/packages/07/87/b8f6721668cad74bcc9c7cfe6d0230b304d1250196b221e54294a0d78dbe/aiohttp-3.11.10-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c87bf31b7fdab94ae3adbe4a48e711bfc5f89d21cf4c197e75561def39e223bc", size = 1694343 }, + { url = "https://files.pythonhosted.org/packages/4b/20/42813fc60d9178ba9b1b86c58a5441ddb6cf8ffdfe66387345bff173bcff/aiohttp-3.11.10-cp312-cp312-win32.whl", hash = "sha256:06a8e2ee1cbac16fe61e51e0b0c269400e781b13bcfc33f5425912391a542985", size = 411118 }, + { url = "https://files.pythonhosted.org/packages/3a/51/df9c263c861ce93998b5ad2ba3212caab2112d5b66dbe91ddbe90c41ded4/aiohttp-3.11.10-cp312-cp312-win_amd64.whl", hash = "sha256:be2b516f56ea883a3e14dda17059716593526e10fb6303189aaf5503937db408", size = 437424 }, + { url = "https://files.pythonhosted.org/packages/8c/1d/88bfdbe28a3d1ba5b94a235f188f27726caf8ade9a0e13574848f44fe0fe/aiohttp-3.11.10-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8cc5203b817b748adccb07f36390feb730b1bc5f56683445bfe924fc270b8816", size = 697755 }, + { url = "https://files.pythonhosted.org/packages/86/00/4c4619d6fe5c5be32f74d1422fc719b3e6cd7097af0c9e03877ca9bd4ebc/aiohttp-3.11.10-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5ef359ebc6949e3a34c65ce20230fae70920714367c63afd80ea0c2702902ccf", size = 460440 }, + { url = "https://files.pythonhosted.org/packages/aa/1c/2f927408f50593a29465d198ec3c57c835c8602330233163e8d89c1093db/aiohttp-3.11.10-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9bca390cb247dbfaec3c664326e034ef23882c3f3bfa5fbf0b56cad0320aaca5", size = 452726 }, + { url = "https://files.pythonhosted.org/packages/06/6a/ff00ed0a2ba45c34b3c366aa5b0004b1a4adcec5a9b5f67dd0648ee1c88a/aiohttp-3.11.10-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:811f23b3351ca532af598405db1093f018edf81368e689d1b508c57dcc6b6a32", size = 1664944 }, + { url = "https://files.pythonhosted.org/packages/02/c2/61923f2a7c2e14d7424b3a526e054f0358f57ccdf5573d4d3d033b01921a/aiohttp-3.11.10-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ddf5f7d877615f6a1e75971bfa5ac88609af3b74796ff3e06879e8422729fd01", size = 1717707 }, + { url = "https://files.pythonhosted.org/packages/8a/08/0d3d074b24d377569ec89d476a95ca918443099c0401bb31b331104e35d1/aiohttp-3.11.10-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6ab29b8a0beb6f8eaf1e5049252cfe74adbaafd39ba91e10f18caeb0e99ffb34", size = 1774890 }, + { url = "https://files.pythonhosted.org/packages/e8/49/052ada2b6e90ed65f0e6a7e548614621b5f8dcd193cb9415d2e6bcecc94a/aiohttp-3.11.10-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c49a76c1038c2dd116fa443eba26bbb8e6c37e924e2513574856de3b6516be99", size = 1676945 }, + { url = "https://files.pythonhosted.org/packages/7c/9e/0c48e1a48e072a869b8b5e3920c9f6a8092861524a4a6f159cd7e6fda939/aiohttp-3.11.10-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7f3dc0e330575f5b134918976a645e79adf333c0a1439dcf6899a80776c9ab39", size = 1602959 }, + { url = "https://files.pythonhosted.org/packages/ab/98/791f979093ff7f67f80344c182cb0ca4c2c60daed397ecaf454cc8d7a5cd/aiohttp-3.11.10-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:efb15a17a12497685304b2d976cb4939e55137df7b09fa53f1b6a023f01fcb4e", size = 1618058 }, + { url = "https://files.pythonhosted.org/packages/7b/5d/2d4b05feb3fd68eb7c8335f73c81079b56e582633b91002da695ccb439ef/aiohttp-3.11.10-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:db1d0b28fcb7f1d35600150c3e4b490775251dea70f894bf15c678fdd84eda6a", size = 1616289 }, + { url = "https://files.pythonhosted.org/packages/50/83/68cc28c00fe681dce6150614f105efe98282da19252cd6e32dfa893bb328/aiohttp-3.11.10-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:15fccaf62a4889527539ecb86834084ecf6e9ea70588efde86e8bc775e0e7542", size = 1685239 }, + { url = "https://files.pythonhosted.org/packages/16/f9/68fc5c8928f63238ce9314f04f3f59d9190a4db924998bb9be99c7aacce8/aiohttp-3.11.10-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:593c114a2221444f30749cc5e5f4012488f56bd14de2af44fe23e1e9894a9c60", size = 1715078 }, + { url = "https://files.pythonhosted.org/packages/3f/e0/3dd3f0451c532c77e35780bafb2b6469a046bc15a6ec2e039475a1d2f161/aiohttp-3.11.10-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7852bbcb4d0d2f0c4d583f40c3bc750ee033265d80598d0f9cb6f372baa6b836", size = 1672544 }, + { url = "https://files.pythonhosted.org/packages/a5/b1/3530ab040dd5d7fb016b47115016f9b3a07ea29593b0e07e53dbe06a380c/aiohttp-3.11.10-cp313-cp313-win32.whl", hash = "sha256:65e55ca7debae8faaffee0ebb4b47a51b4075f01e9b641c31e554fd376595c6c", size = 409984 }, + { url = "https://files.pythonhosted.org/packages/49/1f/deed34e9fca639a7f873d01150d46925d3e1312051eaa591c1aa1f2e6ddc/aiohttp-3.11.10-cp313-cp313-win_amd64.whl", hash = "sha256:beb39a6d60a709ae3fb3516a1581777e7e8b76933bb88c8f4420d875bb0267c6", size = 435837 }, +] + +[[package]] +name = "aiosignal" +version = "1.3.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "frozenlist" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ba/b5/6d55e80f6d8a08ce22b982eafa278d823b541c925f11ee774b0b9c43473d/aiosignal-1.3.2.tar.gz", hash = "sha256:a8c255c66fafb1e499c9351d0bf32ff2d8a0321595ebac3b93713656d2436f54", size = 19424 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/6a/bc7e17a3e87a2985d3e8f4da4cd0f481060eb78fb08596c42be62c90a4d9/aiosignal-1.3.2-py2.py3-none-any.whl", hash = "sha256:45cde58e409a301715980c2b01d0c28bdde3770d8290b5eb2173759d9acb31a5", size = 7597 }, +] + +[[package]] +name = "alabaster" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a6/f8/d9c74d0daf3f742840fd818d69cfae176fa332022fd44e3469487d5a9420/alabaster-1.0.0.tar.gz", hash = "sha256:c00dca57bca26fa62a6d7d0a9fcce65f3e026e9bfe33e9c538fd3fbb2144fd9e", size = 24210 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl", hash = "sha256:fc6786402dc3fcb2de3cabd5fe455a2db534b371124f1f21de8731783dec828b", size = 13929 }, +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, +] + +[[package]] +name = "app-model" +version = "0.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "in-n-out" }, + { name = "psygnal" }, + { name = "pydantic" }, + { name = "pydantic-compat" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/30/c0/8bb00044aa76b487f6140e0b7e538ddfee4825a3c7944657a0a00a36ea1b/app_model-0.3.1.tar.gz", hash = "sha256:2c883fc2a229a23f7f6697fa4ca6fa981fdafca05f76812bfe71a1de9c229c7b", size = 116810 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/75/09/bc782455821f8c8f656b5c87d774997e4b25c8e4894f388981afcd66f276/app_model-0.3.1-py3-none-any.whl", hash = "sha256:06686965c9beb463fae8058a8e1eb5ada22baa1a518ceea2d7702e140b86d64e", size = 64484 }, +] + +[[package]] +name = "appdirs" +version = "1.4.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/d8/05696357e0311f5b5c316d7b95f46c669dd9c15aaeecbb48c7d0aeb88c40/appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41", size = 13470 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/00/2344469e2084fb287c2e0b57b72910309874c3245463acd6cf5e3db69324/appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128", size = 9566 }, +] + +[[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 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321 }, +] + +[[package]] +name = "asciitree" +version = "0.3.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2d/6a/885bc91484e1aa8f618f6f0228d76d0e67000b0fdd6090673b777e311913/asciitree-0.3.3.tar.gz", hash = "sha256:4aa4b9b649f85e3fcb343363d97564aa1fb62e249677f2e18a96765145cc0f6e", size = 3951 } + +[[package]] +name = "asttokens" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4a/e7/82da0a03e7ba5141f05cce0d302e6eed121ae055e0456ca228bf693984bc/asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7", size = 61978 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918 }, +] + +[[package]] +name = "atomicwrites" +version = "1.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/87/c6/53da25344e3e3a9c01095a89f16dbcda021c609ddb42dd6d7c0528236fb2/atomicwrites-1.4.1.tar.gz", hash = "sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11", size = 14227 } + +[[package]] +name = "attrs" +version = "24.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/48/c8/6260f8ccc11f0917360fc0da435c5c9c7504e3db174d5a12a1494887b045/attrs-24.3.0.tar.gz", hash = "sha256:8f5c07333d543103541ba7be0e2ce16eeee8130cb0b3f9238ab904ce1e85baff", size = 805984 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/89/aa/ab0f7891a01eeb2d2e338ae8fecbe57fcebea1a24dbb64d45801bfab481d/attrs-24.3.0-py3-none-any.whl", hash = "sha256:ac96cd038792094f438ad1f6ff80837353805ac950cd2aa0e0625ef19850c308", size = 63397 }, +] + +[[package]] +name = "babel" +version = "2.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2a/74/f1bc80f23eeba13393b7222b11d95ca3af2c1e28edca18af487137eefed9/babel-2.16.0.tar.gz", hash = "sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316", size = 9348104 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/20/bc79bc575ba2e2a7f70e8a1155618bb1301eaa5132a8271373a6903f73f8/babel-2.16.0-py3-none-any.whl", hash = "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b", size = 9587599 }, +] + +[[package]] +name = "blinker" +version = "1.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/21/28/9b3f50ce0e048515135495f198351908d99540d69bfdc8c1d15b73dc55ce/blinker-1.9.0.tar.gz", hash = "sha256:b4ce2265a7abece45e7cc896e98dbebe6cead56bcf805a3d23136d145f5445bf", size = 22460 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/cb/f2ad4230dc2eb1a74edf38f1a38b9b52277f75bef262d8908e60d957e13c/blinker-1.9.0-py3-none-any.whl", hash = "sha256:ba0efaa9080b619ff2f3459d1d500c57bddea4a6b424b60a91141db6fd2f08bc", size = 8458 }, +] + +[[package]] +name = "blosc" +version = "1.11.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/11/c684c09ac3f4e75691bfc7827dd23743bcf30b35751697278c614332700e/blosc-1.11.2.tar.gz", hash = "sha256:ac5e7c1bfc1c7232b900be94cddb5ffcf9ea49f313c8ae98a7ca0dd87b872bf4", size = 1434010 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/20/a8ae5f21ca36195a231683a4d1b2710bec5895d7b98653d5f4f76368da67/blosc-1.11.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0c7505e61049456b587c513a78432810c99944b0045842053b9a76348ae29848", size = 2251455 }, + { url = "https://files.pythonhosted.org/packages/26/65/93370408733e5d7f864a416befd233d37e8e4aa5674413c33ba79cf1ce2d/blosc-1.11.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:add97363136192343fbebbf5660abbf90438e45436a4d7764b66b5baa7d8efb5", size = 1779775 }, + { url = "https://files.pythonhosted.org/packages/50/95/15127a626811d477c6c469d43cb5cf2972299aeaf4804991875ff06ca2ab/blosc-1.11.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1199acf412662a3040156194c0b8204defe75b982ac93cc02aea2285221c633", size = 2457656 }, + { url = "https://files.pythonhosted.org/packages/15/b1/3e17b5c6cba02eafbb5622b087454356dee6d6abf6d1b5fb0258b2a9f22b/blosc-1.11.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff82238e7f028b3f8a3745210f165067ea60f8b693f082a77d740c971acf3813", size = 2600664 }, + { url = "https://files.pythonhosted.org/packages/b9/6c/c33a5660d9f11c2b1c46178af20d813db9548a9e628ddb9d83504a967c3b/blosc-1.11.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:649803ca91da799d7e367bc3c5535a649502c53e7c21168d811ae16ec45bc0b4", size = 2590777 }, + { url = "https://files.pythonhosted.org/packages/78/85/7b9e637103a80a2277ad95cd4c49094d4473e2dc445269135f243f576727/blosc-1.11.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9c554d9e4e434ed14b8e298ac5a49166e9df13e28a94b38174540cf4e417909a", size = 2736652 }, + { url = "https://files.pythonhosted.org/packages/87/3d/90f7aff0dd2af6fceef7df73dee725c67aaa829e48d2736ba2ab9dfbb6e0/blosc-1.11.2-cp311-cp311-win32.whl", hash = "sha256:888f1cb535f55fce4490d9d7cc6037faa6c324050ce5f51b7459789d79a87d89", size = 1502144 }, + { url = "https://files.pythonhosted.org/packages/2f/63/3db535d924a7dd776826f10305feebd828b8fcb7cc0425299ee4c0d99603/blosc-1.11.2-cp311-cp311-win_amd64.whl", hash = "sha256:907e59c69f7dfc4151ad912aae0948f0aa6d072ae05785dcc1c5b94f65999df7", size = 1802504 }, + { url = "https://files.pythonhosted.org/packages/a0/da/5a43f76d7becf9b4beafe8a4bea8760ea1598e91dd2e24dd60409aa14d59/blosc-1.11.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:587d0bae031e894af6e1f9b3f3d31bc63e958ea5d3d11f4e77d0c167a89294f2", size = 2251470 }, + { url = "https://files.pythonhosted.org/packages/d7/8a/416d2ad12489f831cdea55aa280100a94df41ad8320594d9a094b2248bd0/blosc-1.11.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a49e6d7361c28dd13e3101864ec582f926f1a0412d4d35866fede92538564f63", size = 1779774 }, + { url = "https://files.pythonhosted.org/packages/04/f8/a846c5e795ed8c14123b5aeec7a29503be5ca5ea725a0f63748a640e51d3/blosc-1.11.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1be3ae38210d7a68594328d7704202ebd326829668f378e8ef00d2e34dbee086", size = 2457654 }, + { url = "https://files.pythonhosted.org/packages/7a/bd/2d1cb4d1f04a8060678f57a784cba0ff381c685f6df87b272ec496c860ac/blosc-1.11.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24985254eb33199473e2960e56cea7c6642cd45635ba4944a3a0fafca75b3e23", size = 2600658 }, + { url = "https://files.pythonhosted.org/packages/77/d9/b221c460d86b66dc7ad639378764034f5f254d03b45fd87c3cf787091407/blosc-1.11.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f94643c27e96141615d345a37f4ff6ab048340c7e5ebaced4e8c205bbb12b15f", size = 2590743 }, + { url = "https://files.pythonhosted.org/packages/ef/9d/8319e2c48e81d11248c7631df49d8d0dbf347c20a3899919a32341f44a44/blosc-1.11.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c84d4509d1a22e9cd8c8a48d86310cb808949ea06cde143b62042ba8bd3156b9", size = 2736724 }, + { url = "https://files.pythonhosted.org/packages/0b/65/800174d48904ab344d72bfe527b622444fe11e52590ec6a24163dcf73444/blosc-1.11.2-cp312-cp312-win32.whl", hash = "sha256:9d52f7b24ef99d18c6bfa6b766b69ea0488a3947ed2e6136c85952e866140ca4", size = 1502180 }, + { url = "https://files.pythonhosted.org/packages/6d/e5/7d708485c4698f8da4a8b15dbeedb4181301fc51ee0b253005a33808effb/blosc-1.11.2-cp312-cp312-win_amd64.whl", hash = "sha256:f6cbafa32ce0435f755d8e785e836df21f4e061a92bb0966ce49c36f19e8f57c", size = 1802537 }, +] + +[[package]] +name = "boto3" +version = "1.36.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "botocore" }, + { name = "jmespath" }, + { name = "s3transfer" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3a/e9/c0b2fa75efc4007ea1af21bc2fcbedf6e545c517fb90904d7f59850e02bf/boto3-1.36.2.tar.gz", hash = "sha256:fde1c29996b77274a60b7bc9f741525afa6267bb1716eb644a764fb7c124a0d2", size = 110998 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/17/c2/72a92794237b43f64141e156bc3a58bc36d18631f1a614e1e97a48b56447/boto3-1.36.2-py3-none-any.whl", hash = "sha256:76cfc9a705be46e8d22607efacc8d688c064f923d785a01c00b28e9a96425d1a", size = 139166 }, +] + +[[package]] +name = "botocore" +version = "1.36.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jmespath" }, + { name = "python-dateutil" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c6/93/353b70cea6447e37789fc2d6f761fc12ae36fb4adb6f558055de8cdf655f/botocore-1.36.2.tar.gz", hash = "sha256:a1fe6610983f0214b0c7655fe6990b6a731746baf305b182976fc7b568fc3cb0", size = 13505440 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/fe/c066e8cb069027c12dbcf9066a7a4f3e9d2a31b10c7b174a8455ef1d0f46/botocore-1.36.2-py3-none-any.whl", hash = "sha256:bc3b7e3b573a48af2bd7116b80fe24f9a335b0b67314dcb2697a327d009abf29", size = 13302324 }, +] + +[[package]] +name = "brotli" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2f/c2/f9e977608bdf958650638c3f1e28f85a1b075f075ebbe77db8555463787b/Brotli-1.1.0.tar.gz", hash = "sha256:81de08ac11bcb85841e440c13611c00b67d3bf82698314928d0b676362546724", size = 7372270 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/96/12/ad41e7fadd5db55459c4c401842b47f7fee51068f86dd2894dd0dcfc2d2a/Brotli-1.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a3daabb76a78f829cafc365531c972016e4aa8d5b4bf60660ad8ecee19df7ccc", size = 873068 }, + { url = "https://files.pythonhosted.org/packages/95/4e/5afab7b2b4b61a84e9c75b17814198ce515343a44e2ed4488fac314cd0a9/Brotli-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c8146669223164fc87a7e3de9f81e9423c67a79d6b3447994dfb9c95da16e2d6", size = 446244 }, + { url = "https://files.pythonhosted.org/packages/9d/e6/f305eb61fb9a8580c525478a4a34c5ae1a9bcb12c3aee619114940bc513d/Brotli-1.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30924eb4c57903d5a7526b08ef4a584acc22ab1ffa085faceb521521d2de32dd", size = 2906500 }, + { url = "https://files.pythonhosted.org/packages/3e/4f/af6846cfbc1550a3024e5d3775ede1e00474c40882c7bf5b37a43ca35e91/Brotli-1.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ceb64bbc6eac5a140ca649003756940f8d6a7c444a68af170b3187623b43bebf", size = 2943950 }, + { url = "https://files.pythonhosted.org/packages/b3/e7/ca2993c7682d8629b62630ebf0d1f3bb3d579e667ce8e7ca03a0a0576a2d/Brotli-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a469274ad18dc0e4d316eefa616d1d0c2ff9da369af19fa6f3daa4f09671fd61", size = 2918527 }, + { url = "https://files.pythonhosted.org/packages/b3/96/da98e7bedc4c51104d29cc61e5f449a502dd3dbc211944546a4cc65500d3/Brotli-1.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:524f35912131cc2cabb00edfd8d573b07f2d9f21fa824bd3fb19725a9cf06327", size = 2845489 }, + { url = "https://files.pythonhosted.org/packages/e8/ef/ccbc16947d6ce943a7f57e1a40596c75859eeb6d279c6994eddd69615265/Brotli-1.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5b3cc074004d968722f51e550b41a27be656ec48f8afaeeb45ebf65b561481dd", size = 2914080 }, + { url = "https://files.pythonhosted.org/packages/80/d6/0bd38d758d1afa62a5524172f0b18626bb2392d717ff94806f741fcd5ee9/Brotli-1.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:19c116e796420b0cee3da1ccec3b764ed2952ccfcc298b55a10e5610ad7885f9", size = 2813051 }, + { url = "https://files.pythonhosted.org/packages/14/56/48859dd5d129d7519e001f06dcfbb6e2cf6db92b2702c0c2ce7d97e086c1/Brotli-1.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:510b5b1bfbe20e1a7b3baf5fed9e9451873559a976c1a78eebaa3b86c57b4265", size = 2938172 }, + { url = "https://files.pythonhosted.org/packages/3d/77/a236d5f8cd9e9f4348da5acc75ab032ab1ab2c03cc8f430d24eea2672888/Brotli-1.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a1fd8a29719ccce974d523580987b7f8229aeace506952fa9ce1d53a033873c8", size = 2933023 }, + { url = "https://files.pythonhosted.org/packages/f1/87/3b283efc0f5cb35f7f84c0c240b1e1a1003a5e47141a4881bf87c86d0ce2/Brotli-1.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c247dd99d39e0338a604f8c2b3bc7061d5c2e9e2ac7ba9cc1be5a69cb6cd832f", size = 2935871 }, + { url = "https://files.pythonhosted.org/packages/f3/eb/2be4cc3e2141dc1a43ad4ca1875a72088229de38c68e842746b342667b2a/Brotli-1.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1b2c248cd517c222d89e74669a4adfa5577e06ab68771a529060cf5a156e9757", size = 2847784 }, + { url = "https://files.pythonhosted.org/packages/66/13/b58ddebfd35edde572ccefe6890cf7c493f0c319aad2a5badee134b4d8ec/Brotli-1.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:2a24c50840d89ded6c9a8fdc7b6ed3692ed4e86f1c4a4a938e1e92def92933e0", size = 3034905 }, + { url = "https://files.pythonhosted.org/packages/84/9c/bc96b6c7db824998a49ed3b38e441a2cae9234da6fa11f6ed17e8cf4f147/Brotli-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f31859074d57b4639318523d6ffdca586ace54271a73ad23ad021acd807eb14b", size = 2929467 }, + { url = "https://files.pythonhosted.org/packages/e7/71/8f161dee223c7ff7fea9d44893fba953ce97cf2c3c33f78ba260a91bcff5/Brotli-1.1.0-cp311-cp311-win32.whl", hash = "sha256:39da8adedf6942d76dc3e46653e52df937a3c4d6d18fdc94a7c29d263b1f5b50", size = 333169 }, + { url = "https://files.pythonhosted.org/packages/02/8a/fece0ee1057643cb2a5bbf59682de13f1725f8482b2c057d4e799d7ade75/Brotli-1.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:aac0411d20e345dc0920bdec5548e438e999ff68d77564d5e9463a7ca9d3e7b1", size = 357253 }, + { url = "https://files.pythonhosted.org/packages/5c/d0/5373ae13b93fe00095a58efcbce837fd470ca39f703a235d2a999baadfbc/Brotli-1.1.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:32d95b80260d79926f5fab3c41701dbb818fde1c9da590e77e571eefd14abe28", size = 815693 }, + { url = "https://files.pythonhosted.org/packages/8e/48/f6e1cdf86751300c288c1459724bfa6917a80e30dbfc326f92cea5d3683a/Brotli-1.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b760c65308ff1e462f65d69c12e4ae085cff3b332d894637f6273a12a482d09f", size = 422489 }, + { url = "https://files.pythonhosted.org/packages/06/88/564958cedce636d0f1bed313381dfc4b4e3d3f6015a63dae6146e1b8c65c/Brotli-1.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:316cc9b17edf613ac76b1f1f305d2a748f1b976b033b049a6ecdfd5612c70409", size = 873081 }, + { url = "https://files.pythonhosted.org/packages/58/79/b7026a8bb65da9a6bb7d14329fd2bd48d2b7f86d7329d5cc8ddc6a90526f/Brotli-1.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:caf9ee9a5775f3111642d33b86237b05808dafcd6268faa492250e9b78046eb2", size = 446244 }, + { url = "https://files.pythonhosted.org/packages/e5/18/c18c32ecea41b6c0004e15606e274006366fe19436b6adccc1ae7b2e50c2/Brotli-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70051525001750221daa10907c77830bc889cb6d865cc0b813d9db7fefc21451", size = 2906505 }, + { url = "https://files.pythonhosted.org/packages/08/c8/69ec0496b1ada7569b62d85893d928e865df29b90736558d6c98c2031208/Brotli-1.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7f4bf76817c14aa98cc6697ac02f3972cb8c3da93e9ef16b9c66573a68014f91", size = 2944152 }, + { url = "https://files.pythonhosted.org/packages/ab/fb/0517cea182219d6768113a38167ef6d4eb157a033178cc938033a552ed6d/Brotli-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0c5516f0aed654134a2fc936325cc2e642f8a0e096d075209672eb321cff408", size = 2919252 }, + { url = "https://files.pythonhosted.org/packages/c7/53/73a3431662e33ae61a5c80b1b9d2d18f58dfa910ae8dd696e57d39f1a2f5/Brotli-1.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c3020404e0b5eefd7c9485ccf8393cfb75ec38ce75586e046573c9dc29967a0", size = 2845955 }, + { url = "https://files.pythonhosted.org/packages/55/ac/bd280708d9c5ebdbf9de01459e625a3e3803cce0784f47d633562cf40e83/Brotli-1.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4ed11165dd45ce798d99a136808a794a748d5dc38511303239d4e2363c0695dc", size = 2914304 }, + { url = "https://files.pythonhosted.org/packages/76/58/5c391b41ecfc4527d2cc3350719b02e87cb424ef8ba2023fb662f9bf743c/Brotli-1.1.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4093c631e96fdd49e0377a9c167bfd75b6d0bad2ace734c6eb20b348bc3ea180", size = 2814452 }, + { url = "https://files.pythonhosted.org/packages/c7/4e/91b8256dfe99c407f174924b65a01f5305e303f486cc7a2e8a5d43c8bec3/Brotli-1.1.0-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:7e4c4629ddad63006efa0ef968c8e4751c5868ff0b1c5c40f76524e894c50248", size = 2938751 }, + { url = "https://files.pythonhosted.org/packages/5a/a6/e2a39a5d3b412938362bbbeba5af904092bf3f95b867b4a3eb856104074e/Brotli-1.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:861bf317735688269936f755fa136a99d1ed526883859f86e41a5d43c61d8966", size = 2933757 }, + { url = "https://files.pythonhosted.org/packages/13/f0/358354786280a509482e0e77c1a5459e439766597d280f28cb097642fc26/Brotli-1.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:87a3044c3a35055527ac75e419dfa9f4f3667a1e887ee80360589eb8c90aabb9", size = 2936146 }, + { url = "https://files.pythonhosted.org/packages/80/f7/daf538c1060d3a88266b80ecc1d1c98b79553b3f117a485653f17070ea2a/Brotli-1.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c5529b34c1c9d937168297f2c1fde7ebe9ebdd5e121297ff9c043bdb2ae3d6fb", size = 2848055 }, + { url = "https://files.pythonhosted.org/packages/ad/cf/0eaa0585c4077d3c2d1edf322d8e97aabf317941d3a72d7b3ad8bce004b0/Brotli-1.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:ca63e1890ede90b2e4454f9a65135a4d387a4585ff8282bb72964fab893f2111", size = 3035102 }, + { url = "https://files.pythonhosted.org/packages/d8/63/1c1585b2aa554fe6dbce30f0c18bdbc877fa9a1bf5ff17677d9cca0ac122/Brotli-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e79e6520141d792237c70bcd7a3b122d00f2613769ae0cb61c52e89fd3443839", size = 2930029 }, + { url = "https://files.pythonhosted.org/packages/5f/3b/4e3fd1893eb3bbfef8e5a80d4508bec17a57bb92d586c85c12d28666bb13/Brotli-1.1.0-cp312-cp312-win32.whl", hash = "sha256:5f4d5ea15c9382135076d2fb28dde923352fe02951e66935a9efaac8f10e81b0", size = 333276 }, + { url = "https://files.pythonhosted.org/packages/3d/d5/942051b45a9e883b5b6e98c041698b1eb2012d25e5948c58d6bf85b1bb43/Brotli-1.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:906bc3a79de8c4ae5b86d3d75a8b77e44404b0f4261714306e3ad248d8ab0951", size = 357255 }, + { url = "https://files.pythonhosted.org/packages/0a/9f/fb37bb8ffc52a8da37b1c03c459a8cd55df7a57bdccd8831d500e994a0ca/Brotli-1.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8bf32b98b75c13ec7cf774164172683d6e7891088f6316e54425fde1efc276d5", size = 815681 }, + { url = "https://files.pythonhosted.org/packages/06/b3/dbd332a988586fefb0aa49c779f59f47cae76855c2d00f450364bb574cac/Brotli-1.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7bc37c4d6b87fb1017ea28c9508b36bbcb0c3d18b4260fcdf08b200c74a6aee8", size = 422475 }, + { url = "https://files.pythonhosted.org/packages/bb/80/6aaddc2f63dbcf2d93c2d204e49c11a9ec93a8c7c63261e2b4bd35198283/Brotli-1.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c0ef38c7a7014ffac184db9e04debe495d317cc9c6fb10071f7fefd93100a4f", size = 2906173 }, + { url = "https://files.pythonhosted.org/packages/ea/1d/e6ca79c96ff5b641df6097d299347507d39a9604bde8915e76bf026d6c77/Brotli-1.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91d7cc2a76b5567591d12c01f019dd7afce6ba8cba6571187e21e2fc418ae648", size = 2943803 }, + { url = "https://files.pythonhosted.org/packages/ac/a3/d98d2472e0130b7dd3acdbb7f390d478123dbf62b7d32bda5c830a96116d/Brotli-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a93dde851926f4f2678e704fadeb39e16c35d8baebd5252c9fd94ce8ce68c4a0", size = 2918946 }, + { url = "https://files.pythonhosted.org/packages/c4/a5/c69e6d272aee3e1423ed005d8915a7eaa0384c7de503da987f2d224d0721/Brotli-1.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f0db75f47be8b8abc8d9e31bc7aad0547ca26f24a54e6fd10231d623f183d089", size = 2845707 }, + { url = "https://files.pythonhosted.org/packages/58/9f/4149d38b52725afa39067350696c09526de0125ebfbaab5acc5af28b42ea/Brotli-1.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6967ced6730aed543b8673008b5a391c3b1076d834ca438bbd70635c73775368", size = 2936231 }, + { url = "https://files.pythonhosted.org/packages/5a/5a/145de884285611838a16bebfdb060c231c52b8f84dfbe52b852a15780386/Brotli-1.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:7eedaa5d036d9336c95915035fb57422054014ebdeb6f3b42eac809928e40d0c", size = 2848157 }, + { url = "https://files.pythonhosted.org/packages/50/ae/408b6bfb8525dadebd3b3dd5b19d631da4f7d46420321db44cd99dcf2f2c/Brotli-1.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:d487f5432bf35b60ed625d7e1b448e2dc855422e87469e3f450aa5552b0eb284", size = 3035122 }, + { url = "https://files.pythonhosted.org/packages/af/85/a94e5cfaa0ca449d8f91c3d6f78313ebf919a0dbd55a100c711c6e9655bc/Brotli-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:832436e59afb93e1836081a20f324cb185836c617659b07b129141a8426973c7", size = 2930206 }, + { url = "https://files.pythonhosted.org/packages/c2/f0/a61d9262cd01351df22e57ad7c34f66794709acab13f34be2675f45bf89d/Brotli-1.1.0-cp313-cp313-win32.whl", hash = "sha256:43395e90523f9c23a3d5bdf004733246fba087f2948f87ab28015f12359ca6a0", size = 333804 }, + { url = "https://files.pythonhosted.org/packages/7e/c1/ec214e9c94000d1c1974ec67ced1c970c148aa6b8d8373066123fc3dbf06/Brotli-1.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:9011560a466d2eb3f5a6e4929cf4a09be405c64154e12df0dd72713f6500e32b", size = 358517 }, +] + +[[package]] +name = "brotlicffi" +version = "1.1.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/95/9d/70caa61192f570fcf0352766331b735afa931b4c6bc9a348a0925cc13288/brotlicffi-1.1.0.0.tar.gz", hash = "sha256:b77827a689905143f87915310b93b273ab17888fd43ef350d4832c4a71083c13", size = 465192 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/11/7b96009d3dcc2c931e828ce1e157f03824a69fb728d06bfd7b2fc6f93718/brotlicffi-1.1.0.0-cp37-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9b7ae6bd1a3f0df532b6d67ff674099a96d22bc0948955cb338488c31bfb8851", size = 453786 }, + { url = "https://files.pythonhosted.org/packages/d6/e6/a8f46f4a4ee7856fbd6ac0c6fb0dc65ed181ba46cd77875b8d9bbe494d9e/brotlicffi-1.1.0.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19ffc919fa4fc6ace69286e0a23b3789b4219058313cf9b45625016bf7ff996b", size = 2911165 }, + { url = "https://files.pythonhosted.org/packages/be/20/201559dff14e83ba345a5ec03335607e47467b6633c210607e693aefac40/brotlicffi-1.1.0.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9feb210d932ffe7798ee62e6145d3a757eb6233aa9a4e7db78dd3690d7755814", size = 2927895 }, + { url = "https://files.pythonhosted.org/packages/cd/15/695b1409264143be3c933f708a3f81d53c4a1e1ebbc06f46331decbf6563/brotlicffi-1.1.0.0-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:84763dbdef5dd5c24b75597a77e1b30c66604725707565188ba54bab4f114820", size = 2851834 }, + { url = "https://files.pythonhosted.org/packages/b4/40/b961a702463b6005baf952794c2e9e0099bde657d0d7e007f923883b907f/brotlicffi-1.1.0.0-cp37-abi3-win32.whl", hash = "sha256:1b12b50e07c3911e1efa3a8971543e7648100713d4e0971b13631cce22c587eb", size = 341731 }, + { url = "https://files.pythonhosted.org/packages/1c/fa/5408a03c041114ceab628ce21766a4ea882aa6f6f0a800e04ee3a30ec6b9/brotlicffi-1.1.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:994a4f0681bb6c6c3b0925530a1926b7a189d878e6e5e38fae8efa47c5d9c613", size = 366783 }, +] + +[[package]] +name = "build" +version = "1.2.2.post1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "os_name == 'nt'" }, + { name = "packaging" }, + { name = "pyproject-hooks" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7d/46/aeab111f8e06793e4f0e421fcad593d547fb8313b50990f31681ee2fb1ad/build-1.2.2.post1.tar.gz", hash = "sha256:b36993e92ca9375a219c99e606a122ff365a760a2d4bba0caa09bd5278b608b7", size = 46701 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/c2/80633736cd183ee4a62107413def345f7e6e3c01563dbca1417363cf957e/build-1.2.2.post1-py3-none-any.whl", hash = "sha256:1d61c0887fa860c01971625baae8bdd338e517b836a2f70dd1f7aa3a6b2fc5b5", size = 22950 }, +] + +[[package]] +name = "cachetools" +version = "5.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c3/38/a0f315319737ecf45b4319a8cd1f3a908e29d9277b46942263292115eee7/cachetools-5.5.0.tar.gz", hash = "sha256:2cc24fb4cbe39633fb7badd9db9ca6295d766d9c2995f245725a46715d050f2a", size = 27661 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a4/07/14f8ad37f2d12a5ce41206c21820d8cb6561b728e51fad4530dff0552a67/cachetools-5.5.0-py3-none-any.whl", hash = "sha256:02134e8439cdc2ffb62023ce1debca2944c3f289d66bb17ead3ab3dede74b292", size = 9524 }, +] + +[[package]] +name = "cachey" +version = "0.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "heapdict" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c6/9c/e3c959c1601013bf8a72e8bf91ea1ebc6fe8a2305bd2324b039ee0403277/cachey-0.2.1.tar.gz", hash = "sha256:0310ba8afe52729fa7626325c8d8356a8421c434bf887ac851e58dcf7cf056a6", size = 6461 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/57/f0/e24f3e5d5d539abeb783087b87c26cfb99c259f1126700569e000243745a/cachey-0.2.1-py3-none-any.whl", hash = "sha256:49cf8528496ce3f99d47f1bd136b7c88237e55347a15d880f47cefc0615a83c3", size = 6415 }, +] + +[[package]] +name = "certifi" +version = "2024.12.14" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/bd/1d41ee578ce09523c81a15426705dd20969f5abf006d1afe8aeff0dd776a/certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db", size = 166010 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a5/32/8f6669fc4798494966bf446c8c4a162e0b5d893dff088afddf76414f70e1/certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56", size = 164927 }, +] + +[[package]] +name = "cffi" +version = "1.17.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/f4/927e3a8899e52a27fa57a48607ff7dc91a9ebe97399b357b85a0c7892e00/cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401", size = 182264 }, + { url = "https://files.pythonhosted.org/packages/6c/f5/6c3a8efe5f503175aaddcbea6ad0d2c96dad6f5abb205750d1b3df44ef29/cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf", size = 178651 }, + { url = "https://files.pythonhosted.org/packages/94/dd/a3f0118e688d1b1a57553da23b16bdade96d2f9bcda4d32e7d2838047ff7/cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4", size = 445259 }, + { url = "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", size = 469200 }, + { url = "https://files.pythonhosted.org/packages/1c/a0/a4fa9f4f781bda074c3ddd57a572b060fa0df7655d2a4247bbe277200146/cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1", size = 477235 }, + { url = "https://files.pythonhosted.org/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", size = 459721 }, + { url = "https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", size = 467242 }, + { url = "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", size = 477999 }, + { url = "https://files.pythonhosted.org/packages/44/74/f2a2460684a1a2d00ca799ad880d54652841a780c4c97b87754f660c7603/cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f", size = 454242 }, + { url = "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", size = 478604 }, + { url = "https://files.pythonhosted.org/packages/34/33/e1b8a1ba29025adbdcda5fb3a36f94c03d771c1b7b12f726ff7fef2ebe36/cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655", size = 171727 }, + { url = "https://files.pythonhosted.org/packages/3d/97/50228be003bb2802627d28ec0627837ac0bf35c90cf769812056f235b2d1/cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0", size = 181400 }, + { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178 }, + { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840 }, + { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803 }, + { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850 }, + { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729 }, + { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256 }, + { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424 }, + { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568 }, + { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736 }, + { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448 }, + { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976 }, + { url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989 }, + { url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802 }, + { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792 }, + { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893 }, + { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810 }, + { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200 }, + { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447 }, + { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358 }, + { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469 }, + { url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475 }, + { url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009 }, +] + +[[package]] +name = "cfgv" +version = "3.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/11/74/539e56497d9bd1d484fd863dd69cbbfa653cd2aa27abfe35653494d85e94/cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560", size = 7114 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", size = 7249 }, +] + +[[package]] +name = "chardet" +version = "5.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/f7b6ab21ec75897ed80c17d79b15951a719226b9fababf1e40ea74d69079/chardet-5.2.0.tar.gz", hash = "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7", size = 2069618 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/6f/f5fbc992a329ee4e0f288c1fe0e2ad9485ed064cac731ed2fe47dcc38cbf/chardet-5.2.0-py3-none-any.whl", hash = "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970", size = 199385 }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/4f/e1808dc01273379acc506d18f1504eb2d299bd4131743b9fc54d7be4df1e/charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e", size = 106620 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9c/61/73589dcc7a719582bf56aae309b6103d2762b526bffe189d635a7fcfd998/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c", size = 193339 }, + { url = "https://files.pythonhosted.org/packages/77/d5/8c982d58144de49f59571f940e329ad6e8615e1e82ef84584c5eeb5e1d72/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944", size = 124366 }, + { url = "https://files.pythonhosted.org/packages/bf/19/411a64f01ee971bed3231111b69eb56f9331a769072de479eae7de52296d/charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee", size = 118874 }, + { url = "https://files.pythonhosted.org/packages/4c/92/97509850f0d00e9f14a46bc751daabd0ad7765cff29cdfb66c68b6dad57f/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c", size = 138243 }, + { url = "https://files.pythonhosted.org/packages/e2/29/d227805bff72ed6d6cb1ce08eec707f7cfbd9868044893617eb331f16295/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6", size = 148676 }, + { url = "https://files.pythonhosted.org/packages/13/bc/87c2c9f2c144bedfa62f894c3007cd4530ba4b5351acb10dc786428a50f0/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea", size = 141289 }, + { url = "https://files.pythonhosted.org/packages/eb/5b/6f10bad0f6461fa272bfbbdf5d0023b5fb9bc6217c92bf068fa5a99820f5/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc", size = 142585 }, + { url = "https://files.pythonhosted.org/packages/3b/a0/a68980ab8a1f45a36d9745d35049c1af57d27255eff8c907e3add84cf68f/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5", size = 144408 }, + { url = "https://files.pythonhosted.org/packages/d7/a1/493919799446464ed0299c8eef3c3fad0daf1c3cd48bff9263c731b0d9e2/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594", size = 139076 }, + { url = "https://files.pythonhosted.org/packages/fb/9d/9c13753a5a6e0db4a0a6edb1cef7aee39859177b64e1a1e748a6e3ba62c2/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c", size = 146874 }, + { url = "https://files.pythonhosted.org/packages/75/d2/0ab54463d3410709c09266dfb416d032a08f97fd7d60e94b8c6ef54ae14b/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365", size = 150871 }, + { url = "https://files.pythonhosted.org/packages/8d/c9/27e41d481557be53d51e60750b85aa40eaf52b841946b3cdeff363105737/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129", size = 148546 }, + { url = "https://files.pythonhosted.org/packages/ee/44/4f62042ca8cdc0cabf87c0fc00ae27cd8b53ab68be3605ba6d071f742ad3/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236", size = 143048 }, + { url = "https://files.pythonhosted.org/packages/01/f8/38842422988b795220eb8038745d27a675ce066e2ada79516c118f291f07/charset_normalizer-3.4.0-cp311-cp311-win32.whl", hash = "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99", size = 94389 }, + { url = "https://files.pythonhosted.org/packages/0b/6e/b13bd47fa9023b3699e94abf565b5a2f0b0be6e9ddac9812182596ee62e4/charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27", size = 101752 }, + { url = "https://files.pythonhosted.org/packages/d3/0b/4b7a70987abf9b8196845806198975b6aab4ce016632f817ad758a5aa056/charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6", size = 194445 }, + { url = "https://files.pythonhosted.org/packages/50/89/354cc56cf4dd2449715bc9a0f54f3aef3dc700d2d62d1fa5bbea53b13426/charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf", size = 125275 }, + { url = "https://files.pythonhosted.org/packages/fa/44/b730e2a2580110ced837ac083d8ad222343c96bb6b66e9e4e706e4d0b6df/charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db", size = 119020 }, + { url = "https://files.pythonhosted.org/packages/9d/e4/9263b8240ed9472a2ae7ddc3e516e71ef46617fe40eaa51221ccd4ad9a27/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1", size = 139128 }, + { url = "https://files.pythonhosted.org/packages/6b/e3/9f73e779315a54334240353eaea75854a9a690f3f580e4bd85d977cb2204/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03", size = 149277 }, + { url = "https://files.pythonhosted.org/packages/1a/cf/f1f50c2f295312edb8a548d3fa56a5c923b146cd3f24114d5adb7e7be558/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284", size = 142174 }, + { url = "https://files.pythonhosted.org/packages/16/92/92a76dc2ff3a12e69ba94e7e05168d37d0345fa08c87e1fe24d0c2a42223/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15", size = 143838 }, + { url = "https://files.pythonhosted.org/packages/a4/01/2117ff2b1dfc61695daf2babe4a874bca328489afa85952440b59819e9d7/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8", size = 146149 }, + { url = "https://files.pythonhosted.org/packages/f6/9b/93a332b8d25b347f6839ca0a61b7f0287b0930216994e8bf67a75d050255/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2", size = 140043 }, + { url = "https://files.pythonhosted.org/packages/ab/f6/7ac4a01adcdecbc7a7587767c776d53d369b8b971382b91211489535acf0/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719", size = 148229 }, + { url = "https://files.pythonhosted.org/packages/9d/be/5708ad18161dee7dc6a0f7e6cf3a88ea6279c3e8484844c0590e50e803ef/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631", size = 151556 }, + { url = "https://files.pythonhosted.org/packages/5a/bb/3d8bc22bacb9eb89785e83e6723f9888265f3a0de3b9ce724d66bd49884e/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b", size = 149772 }, + { url = "https://files.pythonhosted.org/packages/f7/fa/d3fc622de05a86f30beea5fc4e9ac46aead4731e73fd9055496732bcc0a4/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565", size = 144800 }, + { url = "https://files.pythonhosted.org/packages/9a/65/bdb9bc496d7d190d725e96816e20e2ae3a6fa42a5cac99c3c3d6ff884118/charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7", size = 94836 }, + { url = "https://files.pythonhosted.org/packages/3e/67/7b72b69d25b89c0b3cea583ee372c43aa24df15f0e0f8d3982c57804984b/charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9", size = 102187 }, + { url = "https://files.pythonhosted.org/packages/f3/89/68a4c86f1a0002810a27f12e9a7b22feb198c59b2f05231349fbce5c06f4/charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114", size = 194617 }, + { url = "https://files.pythonhosted.org/packages/4f/cd/8947fe425e2ab0aa57aceb7807af13a0e4162cd21eee42ef5b053447edf5/charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed", size = 125310 }, + { url = "https://files.pythonhosted.org/packages/5b/f0/b5263e8668a4ee9becc2b451ed909e9c27058337fda5b8c49588183c267a/charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250", size = 119126 }, + { url = "https://files.pythonhosted.org/packages/ff/6e/e445afe4f7fda27a533f3234b627b3e515a1b9429bc981c9a5e2aa5d97b6/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920", size = 139342 }, + { url = "https://files.pythonhosted.org/packages/a1/b2/4af9993b532d93270538ad4926c8e37dc29f2111c36f9c629840c57cd9b3/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64", size = 149383 }, + { url = "https://files.pythonhosted.org/packages/fb/6f/4e78c3b97686b871db9be6f31d64e9264e889f8c9d7ab33c771f847f79b7/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23", size = 142214 }, + { url = "https://files.pythonhosted.org/packages/2b/c9/1c8fe3ce05d30c87eff498592c89015b19fade13df42850aafae09e94f35/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc", size = 144104 }, + { url = "https://files.pythonhosted.org/packages/ee/68/efad5dcb306bf37db7db338338e7bb8ebd8cf38ee5bbd5ceaaaa46f257e6/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d", size = 146255 }, + { url = "https://files.pythonhosted.org/packages/0c/75/1ed813c3ffd200b1f3e71121c95da3f79e6d2a96120163443b3ad1057505/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88", size = 140251 }, + { url = "https://files.pythonhosted.org/packages/7d/0d/6f32255c1979653b448d3c709583557a4d24ff97ac4f3a5be156b2e6a210/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90", size = 148474 }, + { url = "https://files.pythonhosted.org/packages/ac/a0/c1b5298de4670d997101fef95b97ac440e8c8d8b4efa5a4d1ef44af82f0d/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b", size = 151849 }, + { url = "https://files.pythonhosted.org/packages/04/4f/b3961ba0c664989ba63e30595a3ed0875d6790ff26671e2aae2fdc28a399/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d", size = 149781 }, + { url = "https://files.pythonhosted.org/packages/d8/90/6af4cd042066a4adad58ae25648a12c09c879efa4849c705719ba1b23d8c/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482", size = 144970 }, + { url = "https://files.pythonhosted.org/packages/cc/67/e5e7e0cbfefc4ca79025238b43cdf8a2037854195b37d6417f3d0895c4c2/charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67", size = 94973 }, + { url = "https://files.pythonhosted.org/packages/65/97/fc9bbc54ee13d33dc54a7fcf17b26368b18505500fc01e228c27b5222d80/charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b", size = 102308 }, + { url = "https://files.pythonhosted.org/packages/bf/9b/08c0432272d77b04803958a4598a51e2a4b51c06640af8b8f0f908c18bf2/charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079", size = 49446 }, +] + +[[package]] +name = "click" +version = "8.1.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/96/d3/f04c7bfcf5c1862a2a5b845c6b2b360488cf47af55dfa79c98f6a6bf98b5/click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de", size = 336121 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28", size = 97941 }, +] + +[[package]] +name = "cloud-files" +version = "4.30.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "boto3" }, + { name = "brotli" }, + { name = "chardet" }, + { name = "click" }, + { name = "crc32c" }, + { name = "deflate" }, + { name = "fasteners" }, + { name = "gevent" }, + { name = "google-auth" }, + { name = "google-cloud-core" }, + { name = "google-cloud-storage" }, + { name = "google-crc32c" }, + { name = "orjson" }, + { name = "pathos" }, + { name = "protobuf" }, + { name = "requests" }, + { name = "rsa" }, + { name = "six" }, + { name = "tenacity" }, + { name = "tqdm" }, + { name = "urllib3" }, + { name = "zstandard" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3e/90/354bfd1e77476fea68c726f68b106e1ce1b386e203b4d9424d5502f99cf9/cloud-files-4.30.1.tar.gz", hash = "sha256:9a6576345267afbf44c296a250493ad177a1ecd799ea4b60f61f904960a2e10e", size = 82755 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/5a/d3f6e17016be1642b6794befa4ec689f99b137fdaf1006224c0d95b4e188/cloud_files-4.30.1-py3-none-any.whl", hash = "sha256:2340297291b3ef44800688d4894c477a3d2ecb802bc31c782aebbc22701f1764", size = 64275 }, +] + +[[package]] +name = "cloud-volume" +version = "11.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "boto3" }, + { name = "chardet" }, + { name = "cloud-files" }, + { name = "compressed-segmentation" }, + { name = "dracopy" }, + { name = "fastremap" }, + { name = "gevent" }, + { name = "google-auth" }, + { name = "google-cloud-core" }, + { name = "google-cloud-storage" }, + { name = "json5" }, + { name = "jsonschema" }, + { name = "microviewer" }, + { name = "networkx" }, + { name = "numpy" }, + { name = "pathos" }, + { name = "posix-ipc", marker = "sys_platform != 'win32'" }, + { name = "protobuf" }, + { name = "psutil" }, + { name = "pysimdjson" }, + { name = "python-dateutil" }, + { name = "python-jsonschema-objects" }, + { name = "requests" }, + { name = "simplejpeg" }, + { name = "six" }, + { name = "tenacity" }, + { name = "tqdm" }, + { name = "urllib3", extra = ["brotli"] }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1c/83/151eb48654093879d5201f0ad54c217083dc13de4f39a0ed8d1dece8f096/cloud_volume-11.1.2.tar.gz", hash = "sha256:b1dc04e14142adab51558e8387a94af9b817df8518e483f8bd19f926352d9c86", size = 253628 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/81/fcc507c82b9be8bd875a756a59c7b113cbf1dc8d40275810fc1092b69cd7/cloud_volume-11.1.2-py3-none-any.whl", hash = "sha256:f66b78d9c59b74c39717be044e2ba8dc6d838f504447c7f3e8a872bc27db400c", size = 213952 }, +] + +[package.optional-dependencies] +zarr = [ + { name = "blosc" }, + { name = "zstandard" }, +] + +[[package]] +name = "cloudpickle" +version = "3.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/97/c7/f746cadd08c4c08129215cf1b984b632f9e579fc781301e63da9e85c76c1/cloudpickle-3.1.0.tar.gz", hash = "sha256:81a929b6e3c7335c863c771d673d105f02efdb89dfaba0c90495d1c64796601b", size = 66155 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/48/41/e1d85ca3cab0b674e277c8c4f678cf66a91cd2cecf93df94353a606fe0db/cloudpickle-3.1.0-py3-none-any.whl", hash = "sha256:fe11acda67f61aaaec473e3afe030feb131d78a43461b718185363384f1ba12e", size = 22021 }, +] + +[[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 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, +] + +[[package]] +name = "comm" +version = "0.2.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e9/a8/fb783cb0abe2b5fded9f55e5703015cdf1c9c85b3669087c538dd15a6a86/comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e", size = 6210 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3", size = 7180 }, +] + +[[package]] +name = "compressed-segmentation" +version = "2.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "numpy" }, + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/f8/8159ba6aeade54858c6a21126143a6087ec09618b3d50422f3f2d1ea3f7d/compressed_segmentation-2.3.1.tar.gz", hash = "sha256:566a318d6e1470dcb9329ed60562af5c94a71d04504b57fc176509dba286fad3", size = 26766 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/5a/60010bbb011bdc680914253fbcaa4e0598f10109cd3aa04387a64524961a/compressed_segmentation-2.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c4c69c35ac95a6e35b5228509e0fda2c4a34b35f1905b346ae086ba14c34ffb5", size = 169023 }, + { url = "https://files.pythonhosted.org/packages/08/f3/9c4325a08efc579db74c9381ebc91fcf3a2cd57c36cf7e83bce736061bd1/compressed_segmentation-2.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:71166893cd3d28e7af7685f8541f8d24ede939514cb8b189e537884bcb96041a", size = 152443 }, + { url = "https://files.pythonhosted.org/packages/11/92/2cfdaed3b6a24884f86338d3a2e14f619788265cfd561ff9469b805df237/compressed_segmentation-2.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00b0fe8740e92cd5332091d75e7e6008ae0e3ee396ace8138d323ae5041b615c", size = 1037393 }, + { url = "https://files.pythonhosted.org/packages/e7/8f/799ed71c0ef8c7c0ca19bae8983d8735e03dc4e9a0e7645e063e9dea8210/compressed_segmentation-2.3.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2d6780b82eebb3eb17bd6f5d808ea5254ae9fece4467184260ddb533cd0ed26a", size = 1023774 }, + { url = "https://files.pythonhosted.org/packages/cd/35/2c6cbda3d051ff6d8f9b81ef3f7f470983b2420c8a02fa4c4ce38ad4633a/compressed_segmentation-2.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:52a9874cd491d94ccae1b2b2f1375a21d3b1725572d93cf4e652dd314ec010ab", size = 1057843 }, + { url = "https://files.pythonhosted.org/packages/e8/47/c6553dcebe9bc10ca2c84812c49114bc92d320308932ad5ca5bc68c6df9e/compressed_segmentation-2.3.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e0bba325cde05e9bac574639a453f3da56af90aa8fab4e340bd45ec6f61c33f6", size = 2154210 }, + { url = "https://files.pythonhosted.org/packages/37/1a/730bc4373ff4056f3089c3ea561e2ca89564b48793861c86208c708034de/compressed_segmentation-2.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:304fd5a17d5b55fd888c0b92347f004bce87901f006dde3c9200eea55a352c16", size = 2088304 }, + { url = "https://files.pythonhosted.org/packages/93/5f/24a9f1102e1fe6a354b7e56056bc475a01c6e37bc5c90713142a19c28738/compressed_segmentation-2.3.1-cp311-cp311-win32.whl", hash = "sha256:c3fdc21696b6bcbc1370548fdb2fcc5c1d9fea7453050bb9c1115749b9324f00", size = 122403 }, + { url = "https://files.pythonhosted.org/packages/84/ab/5a4d49c70598cb72e35429d46a24fead3a81c77d4b0e12f0c656a7931e0c/compressed_segmentation-2.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:6ea3b13b10d82bdd5f5c2f13288bd32cd0cfa5e6c6ad03a109d31e51b9fcd20c", size = 140234 }, + { url = "https://files.pythonhosted.org/packages/73/59/c3a41a522e7bc08a56786c5341ea80c64b6af890fb60222fcfc37490e085/compressed_segmentation-2.3.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:4aee029d49d46c8d248d1dd567baa8f31dde599148cf3ceef98d2c23b51cbf35", size = 169344 }, + { url = "https://files.pythonhosted.org/packages/73/e0/58efa34e0ab9eb95469f076bbdeb0f00df3ebecd5996d9ca51261bda2625/compressed_segmentation-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2b365a64f7986aafee49dfa73fda18ab1586f84e12d0fda1b21f2da4f80fbf4a", size = 152708 }, + { url = "https://files.pythonhosted.org/packages/45/5e/214450c753dd62c95de3d5626f1f31d0f2d2d3809f21b29d07292d846d3d/compressed_segmentation-2.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76afcaf31bbdf3b1e3dada65bfb63d3463f8d26332c23dc7e55fac5bf54f0763", size = 1008064 }, + { url = "https://files.pythonhosted.org/packages/3d/73/6ebdb1da5231843d98eda16c5d6390bdaca7a56614e7528968c46d03e7a2/compressed_segmentation-2.3.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4ff42f6a38ec48fd6993756855f682ede0a76a598e3c2185be76c0e34ed2c5bf", size = 998103 }, + { url = "https://files.pythonhosted.org/packages/4e/b7/ec2c3fd389d5236b830d1a3ac78512e9a9d840e12b77c6aaa28ab890fb61/compressed_segmentation-2.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76cff7e1449dc13366fdcb53c5282d931db2fcc5b77c03812295f6cfb0abdf57", size = 1036242 }, + { url = "https://files.pythonhosted.org/packages/0d/a1/1b14d59be6d26717d9558bc2e55ebfc9eed4c99615269183fc3d77e6d9ca/compressed_segmentation-2.3.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:40a2a30f15d1aa9a2a8b305e51e2b7f994ab83b4fdcb0a3884a9fefec8310578", size = 2129337 }, + { url = "https://files.pythonhosted.org/packages/ba/c3/44885e2c17ebaa106155a99fa3193da4cf1fa2cc3505366057b36711a525/compressed_segmentation-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:457e1db8aef665a3966f61914f7b65ebb8b2ffab24eac78736349bc7f67b3251", size = 2056869 }, + { url = "https://files.pythonhosted.org/packages/35/d7/aeb2ccfb432caea333b6766c839373cd6ceb6722004cd2aaf0f59d66c549/compressed_segmentation-2.3.1-cp312-cp312-win32.whl", hash = "sha256:992f0998ea03b39dc70c65bad32ea661ad668449f3de9ebffa932e7229750ddf", size = 119398 }, + { url = "https://files.pythonhosted.org/packages/ab/3f/9ef50a7a72ffa275ebdc0b9008f9955b8b7d5d9971f6790250d2b075613f/compressed_segmentation-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:aa77e51791756bad6b0b6ed86e80b8f14801e77b7bd30389bf837fa881826a6c", size = 136457 }, +] + +[[package]] +name = "contourpy" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/25/c2/fc7193cc5383637ff390a712e88e4ded0452c9fbcf84abe3de5ea3df1866/contourpy-1.3.1.tar.gz", hash = "sha256:dfd97abd83335045a913e3bcc4a09c0ceadbe66580cf573fe961f4a825efa699", size = 13465753 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/bb/11250d2906ee2e8b466b5f93e6b19d525f3e0254ac8b445b56e618527718/contourpy-1.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3e8b974d8db2c5610fb4e76307e265de0edb655ae8169e8b21f41807ccbeec4b", size = 269555 }, + { url = "https://files.pythonhosted.org/packages/67/71/1e6e95aee21a500415f5d2dbf037bf4567529b6a4e986594d7026ec5ae90/contourpy-1.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:20914c8c973f41456337652a6eeca26d2148aa96dd7ac323b74516988bea89fc", size = 254549 }, + { url = "https://files.pythonhosted.org/packages/31/2c/b88986e8d79ac45efe9d8801ae341525f38e087449b6c2f2e6050468a42c/contourpy-1.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19d40d37c1c3a4961b4619dd9d77b12124a453cc3d02bb31a07d58ef684d3d86", size = 313000 }, + { url = "https://files.pythonhosted.org/packages/c4/18/65280989b151fcf33a8352f992eff71e61b968bef7432fbfde3a364f0730/contourpy-1.3.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:113231fe3825ebf6f15eaa8bc1f5b0ddc19d42b733345eae0934cb291beb88b6", size = 352925 }, + { url = "https://files.pythonhosted.org/packages/f5/c7/5fd0146c93220dbfe1a2e0f98969293b86ca9bc041d6c90c0e065f4619ad/contourpy-1.3.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4dbbc03a40f916a8420e420d63e96a1258d3d1b58cbdfd8d1f07b49fcbd38e85", size = 323693 }, + { url = "https://files.pythonhosted.org/packages/85/fc/7fa5d17daf77306840a4e84668a48ddff09e6bc09ba4e37e85ffc8e4faa3/contourpy-1.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a04ecd68acbd77fa2d39723ceca4c3197cb2969633836ced1bea14e219d077c", size = 326184 }, + { url = "https://files.pythonhosted.org/packages/ef/e7/104065c8270c7397c9571620d3ab880558957216f2b5ebb7e040f85eeb22/contourpy-1.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c414fc1ed8ee1dbd5da626cf3710c6013d3d27456651d156711fa24f24bd1291", size = 1268031 }, + { url = "https://files.pythonhosted.org/packages/e2/4a/c788d0bdbf32c8113c2354493ed291f924d4793c4a2e85b69e737a21a658/contourpy-1.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:31c1b55c1f34f80557d3830d3dd93ba722ce7e33a0b472cba0ec3b6535684d8f", size = 1325995 }, + { url = "https://files.pythonhosted.org/packages/a6/e6/a2f351a90d955f8b0564caf1ebe4b1451a3f01f83e5e3a414055a5b8bccb/contourpy-1.3.1-cp311-cp311-win32.whl", hash = "sha256:f611e628ef06670df83fce17805c344710ca5cde01edfdc72751311da8585375", size = 174396 }, + { url = "https://files.pythonhosted.org/packages/a8/7e/cd93cab453720a5d6cb75588cc17dcdc08fc3484b9de98b885924ff61900/contourpy-1.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:b2bdca22a27e35f16794cf585832e542123296b4687f9fd96822db6bae17bfc9", size = 219787 }, + { url = "https://files.pythonhosted.org/packages/37/6b/175f60227d3e7f5f1549fcb374592be311293132207e451c3d7c654c25fb/contourpy-1.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0ffa84be8e0bd33410b17189f7164c3589c229ce5db85798076a3fa136d0e509", size = 271494 }, + { url = "https://files.pythonhosted.org/packages/6b/6a/7833cfae2c1e63d1d8875a50fd23371394f540ce809d7383550681a1fa64/contourpy-1.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805617228ba7e2cbbfb6c503858e626ab528ac2a32a04a2fe88ffaf6b02c32bc", size = 255444 }, + { url = "https://files.pythonhosted.org/packages/7f/b3/7859efce66eaca5c14ba7619791b084ed02d868d76b928ff56890d2d059d/contourpy-1.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ade08d343436a94e633db932e7e8407fe7de8083967962b46bdfc1b0ced39454", size = 307628 }, + { url = "https://files.pythonhosted.org/packages/48/b2/011415f5e3f0a50b1e285a0bf78eb5d92a4df000553570f0851b6e309076/contourpy-1.3.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:47734d7073fb4590b4a40122b35917cd77be5722d80683b249dac1de266aac80", size = 347271 }, + { url = "https://files.pythonhosted.org/packages/84/7d/ef19b1db0f45b151ac78c65127235239a8cf21a59d1ce8507ce03e89a30b/contourpy-1.3.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2ba94a401342fc0f8b948e57d977557fbf4d515f03c67682dd5c6191cb2d16ec", size = 318906 }, + { url = "https://files.pythonhosted.org/packages/ba/99/6794142b90b853a9155316c8f470d2e4821fe6f086b03e372aca848227dd/contourpy-1.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efa874e87e4a647fd2e4f514d5e91c7d493697127beb95e77d2f7561f6905bd9", size = 323622 }, + { url = "https://files.pythonhosted.org/packages/3c/0f/37d2c84a900cd8eb54e105f4fa9aebd275e14e266736778bb5dccbf3bbbb/contourpy-1.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1bf98051f1045b15c87868dbaea84f92408337d4f81d0e449ee41920ea121d3b", size = 1266699 }, + { url = "https://files.pythonhosted.org/packages/3a/8a/deb5e11dc7d9cc8f0f9c8b29d4f062203f3af230ba83c30a6b161a6effc9/contourpy-1.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:61332c87493b00091423e747ea78200659dc09bdf7fd69edd5e98cef5d3e9a8d", size = 1326395 }, + { url = "https://files.pythonhosted.org/packages/1a/35/7e267ae7c13aaf12322ccc493531f1e7f2eb8fba2927b9d7a05ff615df7a/contourpy-1.3.1-cp312-cp312-win32.whl", hash = "sha256:e914a8cb05ce5c809dd0fe350cfbb4e881bde5e2a38dc04e3afe1b3e58bd158e", size = 175354 }, + { url = "https://files.pythonhosted.org/packages/a1/35/c2de8823211d07e8a79ab018ef03960716c5dff6f4d5bff5af87fd682992/contourpy-1.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:08d9d449a61cf53033612cb368f3a1b26cd7835d9b8cd326647efe43bca7568d", size = 220971 }, + { url = "https://files.pythonhosted.org/packages/9a/e7/de62050dce687c5e96f946a93546910bc67e483fe05324439e329ff36105/contourpy-1.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a761d9ccfc5e2ecd1bf05534eda382aa14c3e4f9205ba5b1684ecfe400716ef2", size = 271548 }, + { url = "https://files.pythonhosted.org/packages/78/4d/c2a09ae014ae984c6bdd29c11e74d3121b25eaa117eca0bb76340efd7e1c/contourpy-1.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:523a8ee12edfa36f6d2a49407f705a6ef4c5098de4f498619787e272de93f2d5", size = 255576 }, + { url = "https://files.pythonhosted.org/packages/ab/8a/915380ee96a5638bda80cd061ccb8e666bfdccea38d5741cb69e6dbd61fc/contourpy-1.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece6df05e2c41bd46776fbc712e0996f7c94e0d0543af1656956d150c4ca7c81", size = 306635 }, + { url = "https://files.pythonhosted.org/packages/29/5c/c83ce09375428298acd4e6582aeb68b1e0d1447f877fa993d9bf6cd3b0a0/contourpy-1.3.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:573abb30e0e05bf31ed067d2f82500ecfdaec15627a59d63ea2d95714790f5c2", size = 345925 }, + { url = "https://files.pythonhosted.org/packages/29/63/5b52f4a15e80c66c8078a641a3bfacd6e07106835682454647aca1afc852/contourpy-1.3.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9fa36448e6a3a1a9a2ba23c02012c43ed88905ec80163f2ffe2421c7192a5d7", size = 318000 }, + { url = "https://files.pythonhosted.org/packages/9a/e2/30ca086c692691129849198659bf0556d72a757fe2769eb9620a27169296/contourpy-1.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ea9924d28fc5586bf0b42d15f590b10c224117e74409dd7a0be3b62b74a501c", size = 322689 }, + { url = "https://files.pythonhosted.org/packages/6b/77/f37812ef700f1f185d348394debf33f22d531e714cf6a35d13d68a7003c7/contourpy-1.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5b75aa69cb4d6f137b36f7eb2ace9280cfb60c55dc5f61c731fdf6f037f958a3", size = 1268413 }, + { url = "https://files.pythonhosted.org/packages/3f/6d/ce84e79cdd128542ebeb268f84abb4b093af78e7f8ec504676673d2675bc/contourpy-1.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:041b640d4ec01922083645a94bb3b2e777e6b626788f4095cf21abbe266413c1", size = 1326530 }, + { url = "https://files.pythonhosted.org/packages/72/22/8282f4eae20c73c89bee7a82a19c4e27af9b57bb602ecaa00713d5bdb54d/contourpy-1.3.1-cp313-cp313-win32.whl", hash = "sha256:36987a15e8ace5f58d4d5da9dca82d498c2bbb28dff6e5d04fbfcc35a9cb3a82", size = 175315 }, + { url = "https://files.pythonhosted.org/packages/e3/d5/28bca491f65312b438fbf076589dcde7f6f966b196d900777f5811b9c4e2/contourpy-1.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:a7895f46d47671fa7ceec40f31fae721da51ad34bdca0bee83e38870b1f47ffd", size = 220987 }, + { url = "https://files.pythonhosted.org/packages/2f/24/a4b285d6adaaf9746e4700932f579f1a7b6f9681109f694cfa233ae75c4e/contourpy-1.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:9ddeb796389dadcd884c7eb07bd14ef12408aaae358f0e2ae24114d797eede30", size = 285001 }, + { url = "https://files.pythonhosted.org/packages/48/1d/fb49a401b5ca4f06ccf467cd6c4f1fd65767e63c21322b29b04ec40b40b9/contourpy-1.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:19c1555a6801c2f084c7ddc1c6e11f02eb6a6016ca1318dd5452ba3f613a1751", size = 268553 }, + { url = "https://files.pythonhosted.org/packages/79/1e/4aef9470d13fd029087388fae750dccb49a50c012a6c8d1d634295caa644/contourpy-1.3.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:841ad858cff65c2c04bf93875e384ccb82b654574a6d7f30453a04f04af71342", size = 310386 }, + { url = "https://files.pythonhosted.org/packages/b0/34/910dc706ed70153b60392b5305c708c9810d425bde12499c9184a1100888/contourpy-1.3.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4318af1c925fb9a4fb190559ef3eec206845f63e80fb603d47f2d6d67683901c", size = 349806 }, + { url = "https://files.pythonhosted.org/packages/31/3c/faee6a40d66d7f2a87f7102236bf4780c57990dd7f98e5ff29881b1b1344/contourpy-1.3.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:14c102b0eab282427b662cb590f2e9340a9d91a1c297f48729431f2dcd16e14f", size = 321108 }, + { url = "https://files.pythonhosted.org/packages/17/69/390dc9b20dd4bb20585651d7316cc3054b7d4a7b4f8b710b2b698e08968d/contourpy-1.3.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05e806338bfeaa006acbdeba0ad681a10be63b26e1b17317bfac3c5d98f36cda", size = 327291 }, + { url = "https://files.pythonhosted.org/packages/ef/74/7030b67c4e941fe1e5424a3d988080e83568030ce0355f7c9fc556455b01/contourpy-1.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4d76d5993a34ef3df5181ba3c92fabb93f1eaa5729504fb03423fcd9f3177242", size = 1263752 }, + { url = "https://files.pythonhosted.org/packages/f0/ed/92d86f183a8615f13f6b9cbfc5d4298a509d6ce433432e21da838b4b63f4/contourpy-1.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:89785bb2a1980c1bd87f0cb1517a71cde374776a5f150936b82580ae6ead44a1", size = 1318403 }, + { url = "https://files.pythonhosted.org/packages/b3/0e/c8e4950c77dcfc897c71d61e56690a0a9df39543d2164040301b5df8e67b/contourpy-1.3.1-cp313-cp313t-win32.whl", hash = "sha256:8eb96e79b9f3dcadbad2a3891672f81cdcab7f95b27f28f1c67d75f045b6b4f1", size = 185117 }, + { url = "https://files.pythonhosted.org/packages/c1/31/1ae946f11dfbd229222e6d6ad8e7bd1891d3d48bde5fbf7a0beb9491f8e3/contourpy-1.3.1-cp313-cp313t-win_amd64.whl", hash = "sha256:287ccc248c9e0d0566934e7d606201abd74761b5703d804ff3df8935f523d546", size = 236668 }, +] + +[[package]] +name = "crc32c" +version = "2.7.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7f/4c/4e40cc26347ac8254d3f25b9f94710b8e8df24ee4dddc1ba41907a88a94d/crc32c-2.7.1.tar.gz", hash = "sha256:f91b144a21eef834d64178e01982bb9179c354b3e9e5f4c803b0e5096384968c", size = 45712 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/45/8e/2f37f46368bbfd50edfc11b96f0aa135699034b1b020966c70ebaff3463b/crc32c-2.7.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:19e03a50545a3ef400bd41667d5525f71030488629c57d819e2dd45064f16192", size = 49672 }, + { url = "https://files.pythonhosted.org/packages/ed/b8/e52f7c4b045b871c2984d70f37c31d4861b533a8082912dfd107a96cf7c1/crc32c-2.7.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8c03286b1e5ce9bed7090084f206aacd87c5146b4b10de56fe9e86cbbbf851cf", size = 37155 }, + { url = "https://files.pythonhosted.org/packages/25/ee/0cfa82a68736697f3c7e435ba658c2ef8c997f42b89f6ab4545efe1b2649/crc32c-2.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:80ebbf144a1a56a532b353e81fa0f3edca4f4baa1bf92b1dde2c663a32bb6a15", size = 35372 }, + { url = "https://files.pythonhosted.org/packages/aa/92/c878aaba81c431fcd93a059e9f6c90db397c585742793f0bf6e0c531cc67/crc32c-2.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96b794fd11945298fdd5eb1290a812efb497c14bc42592c5c992ca077458eeba", size = 54879 }, + { url = "https://files.pythonhosted.org/packages/5b/f5/ab828ab3907095e06b18918408748950a9f726ee2b37be1b0839fb925ee1/crc32c-2.7.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9df7194dd3c0efb5a21f5d70595b7a8b4fd9921fbbd597d6d8e7a11eca3e2d27", size = 52588 }, + { url = "https://files.pythonhosted.org/packages/6a/2b/9e29e9ac4c4213d60491db09487125db358cd9263490fbadbd55e48fbe03/crc32c-2.7.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d698eec444b18e296a104d0b9bb6c596c38bdcb79d24eba49604636e9d747305", size = 53674 }, + { url = "https://files.pythonhosted.org/packages/79/ed/df3c4c14bf1b29f5c9b52d51fb6793e39efcffd80b2941d994e8f7f5f688/crc32c-2.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e07cf10ef852d219d179333fd706d1c415626f1f05e60bd75acf0143a4d8b225", size = 54691 }, + { url = "https://files.pythonhosted.org/packages/0c/47/4917af3c9c1df2fff28bbfa6492673c9adeae5599dcc207bbe209847489c/crc32c-2.7.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d2a051f296e6e92e13efee3b41db388931cdb4a2800656cd1ed1d9fe4f13a086", size = 52896 }, + { url = "https://files.pythonhosted.org/packages/1b/6f/26fc3dda5835cda8f6cd9d856afe62bdeae428de4c34fea200b0888e8835/crc32c-2.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a1738259802978cdf428f74156175da6a5fdfb7256f647fdc0c9de1bc6cd7173", size = 53554 }, + { url = "https://files.pythonhosted.org/packages/56/3e/6f39127f7027c75d130c0ba348d86a6150dff23761fbc6a5f71659f4521e/crc32c-2.7.1-cp311-cp311-win32.whl", hash = "sha256:f7786d219a1a1bf27d0aa1869821d11a6f8e90415cfffc1e37791690d4a848a1", size = 38370 }, + { url = "https://files.pythonhosted.org/packages/c9/fb/1587c2705a3a47a3d0067eecf9a6fec510761c96dec45c7b038fb5c8ff46/crc32c-2.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:887f6844bb3ad35f0778cd10793ad217f7123a5422e40041231b8c4c7329649d", size = 39795 }, + { url = "https://files.pythonhosted.org/packages/1d/02/998dc21333413ce63fe4c1ca70eafe61ca26afc7eb353f20cecdb77d614e/crc32c-2.7.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f7d1c4e761fe42bf856130daf8b2658df33fe0ced3c43dadafdfeaa42b57b950", size = 49568 }, + { url = "https://files.pythonhosted.org/packages/9c/3e/e3656bfa76e50ef87b7136fef2dbf3c46e225629432fc9184fdd7fd187ff/crc32c-2.7.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:73361c79a6e4605204457f19fda18b042a94508a52e53d10a4239da5fb0f6a34", size = 37019 }, + { url = "https://files.pythonhosted.org/packages/0b/7d/5ff9904046ad15a08772515db19df43107bf5e3901a89c36a577b5f40ba0/crc32c-2.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:afd778fc8ac0ed2ffbfb122a9aa6a0e409a8019b894a1799cda12c01534493e0", size = 35373 }, + { url = "https://files.pythonhosted.org/packages/4d/41/4aedc961893f26858ab89fc772d0eaba91f9870f19eaa933999dcacb94ec/crc32c-2.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56ef661b34e9f25991fface7f9ad85e81bbc1b3fe3b916fd58c893eabe2fa0b8", size = 54675 }, + { url = "https://files.pythonhosted.org/packages/d6/63/8cabf09b7e39b9fec8f7010646c8b33057fc8d67e6093b3cc15563d23533/crc32c-2.7.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:571aa4429444b5d7f588e4377663592145d2d25eb1635abb530f1281794fc7c9", size = 52386 }, + { url = "https://files.pythonhosted.org/packages/79/13/13576941bf7cf95026abae43d8427c812c0054408212bf8ed490eda846b0/crc32c-2.7.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c02a3bd67dea95cdb25844aaf44ca2e1b0c1fd70b287ad08c874a95ef4bb38db", size = 53495 }, + { url = "https://files.pythonhosted.org/packages/3d/b6/55ffb26d0517d2d6c6f430ce2ad36ae7647c995c5bfd7abce7f32bb2bad1/crc32c-2.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:99d17637c4867672cb8adeea007294e3c3df9d43964369516cfe2c1f47ce500a", size = 54456 }, + { url = "https://files.pythonhosted.org/packages/c2/1a/5562e54cb629ecc5543d3604dba86ddfc7c7b7bf31d64005b38a00d31d31/crc32c-2.7.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f4a400ac3c69a32e180d8753fd7ec7bccb80ade7ab0812855dce8a208e72495f", size = 52647 }, + { url = "https://files.pythonhosted.org/packages/48/ec/ce4138eaf356cd9aae60bbe931755e5e0151b3eca5f491fce6c01b97fd59/crc32c-2.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:588587772e55624dd9c7a906ec9e8773ae0b6ac5e270fc0bc84ee2758eba90d5", size = 53332 }, + { url = "https://files.pythonhosted.org/packages/5e/b5/144b42cd838a901175a916078781cb2c3c9f977151c9ba085aebd6d15b22/crc32c-2.7.1-cp312-cp312-win32.whl", hash = "sha256:9f14b60e5a14206e8173dd617fa0c4df35e098a305594082f930dae5488da428", size = 38371 }, + { url = "https://files.pythonhosted.org/packages/ae/c4/7929dcd5d9b57db0cce4fe6f6c191049380fc6d8c9b9f5581967f4ec018e/crc32c-2.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:7c810a246660a24dc818047dc5f89c7ce7b2814e1e08a8e99993f4103f7219e8", size = 39805 }, + { url = "https://files.pythonhosted.org/packages/bf/98/1a6d60d5b3b5edc8382777b64100343cb4aa6a7e172fae4a6cfcb8ebbbd9/crc32c-2.7.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:24949bffb06fc411cc18188d33357923cb935273642164d0bb37a5f375654169", size = 49567 }, + { url = "https://files.pythonhosted.org/packages/4f/56/0dd652d4e950e6348bbf16b964b3325e4ad8220470774128fc0b0dd069cb/crc32c-2.7.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2d5d326e7e118d4fa60187770d86b66af2fdfc63ce9eeb265f0d3e7d49bebe0b", size = 37018 }, + { url = "https://files.pythonhosted.org/packages/47/02/2bd65fdef10139b6a802d83a7f966b7750fe5ffb1042f7cbe5dbb6403869/crc32c-2.7.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ba110df60c64c8e2d77a9425b982a520ccdb7abe42f06604f4d98a45bb1fff62", size = 35374 }, + { url = "https://files.pythonhosted.org/packages/a9/0d/3e797d1ed92d357a6a4c5b41cea15a538b27a8fdf18c7863747eb50b73ad/crc32c-2.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c277f9d16a3283e064d54854af0976b72abaa89824955579b2b3f37444f89aae", size = 54641 }, + { url = "https://files.pythonhosted.org/packages/a7/d3/4ddeef755caaa75680c559562b6c71f5910fee4c4f3a2eb5ea8b57f0e48c/crc32c-2.7.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:881af0478a01331244e27197356929edbdeaef6a9f81b5c6bacfea18d2139289", size = 52338 }, + { url = "https://files.pythonhosted.org/packages/01/cf/32f019be5de9f6e180926a50ee5f08648e686c7d9a59f2c5d0806a77b1c7/crc32c-2.7.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:724d5ff4d29ff093a983ae656be3307093706d850ea2a233bf29fcacc335d945", size = 53447 }, + { url = "https://files.pythonhosted.org/packages/b2/8b/92f3f62f3bafe8f7ab4af7bfb7246dc683fd11ec0d6dfb73f91e09079f69/crc32c-2.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b2416c4d88696ac322632555c0f81ab35e15f154bc96055da6cf110d642dbc10", size = 54484 }, + { url = "https://files.pythonhosted.org/packages/98/b2/113a50f8781f76af5ac65ffdb907e72bddbe974de8e02247f0d58bc48040/crc32c-2.7.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:60254251b88ec9b9795215f0f9ec015a6b5eef8b2c5fba1267c672d83c78fc02", size = 52703 }, + { url = "https://files.pythonhosted.org/packages/b4/6c/309229e9acda8cf36a8ff4061d70b54d905f79b7037e16883ce6590a24ab/crc32c-2.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:edefc0e46f3c37372183f70338e5bdee42f6789b62fcd36ec53aa933e9dfbeaf", size = 53367 }, + { url = "https://files.pythonhosted.org/packages/b5/2a/6c6324d920396e1bd9f3efbe8753da071be0ca52bd22d6c82d446b8d6975/crc32c-2.7.1-cp313-cp313-win32.whl", hash = "sha256:813af8111218970fe2adb833c5e5239f091b9c9e76f03b4dd91aaba86e99b499", size = 38377 }, + { url = "https://files.pythonhosted.org/packages/db/a0/f01ccfab538db07ef3f6b4ede46357ff147a81dd4f3c59ca6a34c791a549/crc32c-2.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:7d9ede7be8e4ec1c9e90aaf6884decbeef10e3473e6ddac032706d710cab5888", size = 39803 }, + { url = "https://files.pythonhosted.org/packages/1b/80/61dcae7568b33acfde70c9d651c7d891c0c578c39cc049107c1cf61f1367/crc32c-2.7.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:db9ac92294284b22521356715784b91cc9094eee42a5282ab281b872510d1831", size = 49386 }, + { url = "https://files.pythonhosted.org/packages/1e/f1/80f17c089799ab2b4c247443bdd101d6ceda30c46d7f193e16b5ca29c5a0/crc32c-2.7.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8fcd7f2f29a30dc92af64a9ee3d38bde0c82bd20ad939999427aac94bbd87373", size = 36937 }, + { url = "https://files.pythonhosted.org/packages/63/42/5fcfc71a3de493d920fd2590843762a2749981ea56b802b380e5df82309d/crc32c-2.7.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5c056ef043393085523e149276a7ce0cb534b872e04f3e20d74d9a94a75c0ad7", size = 35292 }, + { url = "https://files.pythonhosted.org/packages/03/de/fef962e898a953558fe1c55141644553e84ef4190693a31244c59a0856c7/crc32c-2.7.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03a92551a343702629af91f78d205801219692b6909f8fa126b830e332bfb0e0", size = 54223 }, + { url = "https://files.pythonhosted.org/packages/21/14/fceca1a6f45c0a1814fe8602a65657b75c27425162445925ba87438cad6b/crc32c-2.7.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb9424ec1a8ca54763155a703e763bcede82e6569fe94762614bb2de1412d4e1", size = 51588 }, + { url = "https://files.pythonhosted.org/packages/13/3b/13d40a7dfbf9ef05c84a0da45544ee72080dca4ce090679e5105689984bd/crc32c-2.7.1-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88732070f6175530db04e0bb36880ac45c33d49f8ac43fa0e50cfb1830049d23", size = 52678 }, + { url = "https://files.pythonhosted.org/packages/36/09/65ffc4fb9fa60ff6714eeb50a92284a4525e5943f0b040b572c0c76368c1/crc32c-2.7.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:57a20dfc27995f568f64775eea2bbb58ae269f1a1144561df5e4a4955f79db32", size = 53847 }, + { url = "https://files.pythonhosted.org/packages/24/71/938e926085b7288da052db7c84416f3ce25e71baf7ab5b63824c7bcb6f22/crc32c-2.7.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:f7186d098bfd2cff25eac6880b7c7ad80431b90610036131c1c7dd0eab42a332", size = 51860 }, + { url = "https://files.pythonhosted.org/packages/3c/d8/4526d5380189d6f2fa27256c204100f30214fe402f47cf6e9fb9a91ab890/crc32c-2.7.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:55a77e29a265418fa34bef15bd0f2c60afae5348988aaf35ed163b4bbf93cf37", size = 52508 }, + { url = "https://files.pythonhosted.org/packages/19/30/15f7e35176488b77e5b88751947d321d603fccac273099ace27c7b2d50a6/crc32c-2.7.1-cp313-cp313t-win32.whl", hash = "sha256:ae38a4b6aa361595d81cab441405fbee905c72273e80a1c010fb878ae77ac769", size = 38319 }, + { url = "https://files.pythonhosted.org/packages/19/c4/0b3eee04dac195f4730d102d7a9fbea894ae7a32ce075f84336df96a385d/crc32c-2.7.1-cp313-cp313t-win_amd64.whl", hash = "sha256:eee2a43b663feb6c79a6c1c6e5eae339c2b72cfac31ee54ec0209fa736cf7ee5", size = 39781 }, +] + +[[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 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321 }, +] + +[[package]] +name = "dask" +version = "2024.12.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "cloudpickle" }, + { name = "fsspec" }, + { name = "importlib-metadata", marker = "python_full_version < '3.12'" }, + { name = "packaging" }, + { name = "partd" }, + { name = "pyyaml" }, + { name = "toolz" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b6/19/1d1e57c0fa24dfd241bbec46d4b70c37ec15e8071a7e06d43d327c8dafbb/dask-2024.12.1.tar.gz", hash = "sha256:bac809af21c2dd7eb06827bccbfc612504f3ee6435580e548af912828f823195", size = 10693689 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6d/5a/cdc78a77bb1c7290fd1ccfe6001437f99a2af63e28343299abd09336236e/dask-2024.12.1-py3-none-any.whl", hash = "sha256:1f32acddf1a6994e3af6734756f0a92467c47050bc29f3555bb9b140420e8e19", size = 1269300 }, +] + +[package.optional-dependencies] +array = [ + { name = "numpy" }, +] + +[[package]] +name = "debugpy" +version = "1.8.11" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bc/e7/666f4c9b0e24796af50aadc28d36d21c2e01e831a934535f956e09b3650c/debugpy-1.8.11.tar.gz", hash = "sha256:6ad2688b69235c43b020e04fecccdf6a96c8943ca9c2fb340b8adc103c655e57", size = 1640124 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7c/58/8e3f7ec86c1b7985a232667b5df8f3b1b1c8401028d8f4d75e025c9556cd/debugpy-1.8.11-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:85de8474ad53ad546ff1c7c7c89230db215b9b8a02754d41cb5a76f70d0be296", size = 2173656 }, + { url = "https://files.pythonhosted.org/packages/d2/03/95738a68ade2358e5a4d63a2fd8e7ed9ad911001cfabbbb33a7f81343945/debugpy-1.8.11-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ffc382e4afa4aee367bf413f55ed17bd91b191dcaf979890af239dda435f2a1", size = 3132464 }, + { url = "https://files.pythonhosted.org/packages/ca/f4/18204891ab67300950615a6ad09b9de236203a9138f52b3b596fa17628ca/debugpy-1.8.11-cp311-cp311-win32.whl", hash = "sha256:40499a9979c55f72f4eb2fc38695419546b62594f8af194b879d2a18439c97a9", size = 5103637 }, + { url = "https://files.pythonhosted.org/packages/3b/90/3775e301cfa573b51eb8a108285681f43f5441dc4c3916feed9f386ef861/debugpy-1.8.11-cp311-cp311-win_amd64.whl", hash = "sha256:987bce16e86efa86f747d5151c54e91b3c1e36acc03ce1ddb50f9d09d16ded0e", size = 5127862 }, + { url = "https://files.pythonhosted.org/packages/c6/ae/2cf26f3111e9d94384d9c01e9d6170188b0aeda15b60a4ac6457f7c8a26f/debugpy-1.8.11-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:84e511a7545d11683d32cdb8f809ef63fc17ea2a00455cc62d0a4dbb4ed1c308", size = 2498756 }, + { url = "https://files.pythonhosted.org/packages/b0/16/ec551789d547541a46831a19aa15c147741133da188e7e6acf77510545a7/debugpy-1.8.11-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce291a5aca4985d82875d6779f61375e959208cdf09fcec40001e65fb0a54768", size = 4219136 }, + { url = "https://files.pythonhosted.org/packages/72/6f/b2b3ce673c55f882d27a6eb04a5f0c68bcad6b742ac08a86d8392ae58030/debugpy-1.8.11-cp312-cp312-win32.whl", hash = "sha256:28e45b3f827d3bf2592f3cf7ae63282e859f3259db44ed2b129093ca0ac7940b", size = 5224440 }, + { url = "https://files.pythonhosted.org/packages/77/09/b1f05be802c1caef5b3efc042fc6a7cadd13d8118b072afd04a9b9e91e06/debugpy-1.8.11-cp312-cp312-win_amd64.whl", hash = "sha256:44b1b8e6253bceada11f714acf4309ffb98bfa9ac55e4fce14f9e5d4484287a1", size = 5264578 }, + { url = "https://files.pythonhosted.org/packages/2e/66/931dc2479aa8fbf362dc6dcee707d895a84b0b2d7b64020135f20b8db1ed/debugpy-1.8.11-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:8988f7163e4381b0da7696f37eec7aca19deb02e500245df68a7159739bbd0d3", size = 2483651 }, + { url = "https://files.pythonhosted.org/packages/10/07/6c171d0fe6b8d237e35598b742f20ba062511b3a4631938cc78eefbbf847/debugpy-1.8.11-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c1f6a173d1140e557347419767d2b14ac1c9cd847e0b4c5444c7f3144697e4e", size = 4213770 }, + { url = "https://files.pythonhosted.org/packages/89/f1/0711da6ac250d4fe3bf7b3e9b14b4a86e82a98b7825075c07e19bab8da3d/debugpy-1.8.11-cp313-cp313-win32.whl", hash = "sha256:bb3b15e25891f38da3ca0740271e63ab9db61f41d4d8541745cfc1824252cb28", size = 5223911 }, + { url = "https://files.pythonhosted.org/packages/56/98/5e27fa39050749ed460025bcd0034a0a5e78a580a14079b164cc3abdeb98/debugpy-1.8.11-cp313-cp313-win_amd64.whl", hash = "sha256:d8768edcbeb34da9e11bcb8b5c2e0958d25218df7a6e56adf415ef262cd7b6d1", size = 5264166 }, + { url = "https://files.pythonhosted.org/packages/77/0a/d29a5aacf47b4383ed569b8478c02d59ee3a01ad91224d2cff8562410e43/debugpy-1.8.11-py2.py3-none-any.whl", hash = "sha256:0e22f846f4211383e6a416d04b4c13ed174d24cc5d43f5fd52e7821d0ebc8920", size = 5226874 }, +] + +[[package]] +name = "decorator" +version = "5.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/66/0c/8d907af351aa16b42caae42f9d6aa37b900c67308052d10fdce809f8d952/decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330", size = 35016 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d5/50/83c593b07763e1161326b3b8c6686f0f4b0f24d5526546bee538c89837d6/decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186", size = 9073 }, +] + +[[package]] +name = "deflate" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7e/47/b86dcaffc1010a728495fafc97f38b665c806fecb34f2ae43da94413725d/deflate-0.7.0.tar.gz", hash = "sha256:d0b5eeff9612791f55b181cd5f0eeaadffa06a49943d23b179e3e082e9f7dcee", size = 233615 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/86/08221987382d98305365bcc26df07479cae8d67584f926d7e48808e6e97c/deflate-0.7.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c86314cfa96e1e898b4946b48081aa1230664519318aaadd65731ab3d8979af9", size = 54160 }, + { url = "https://files.pythonhosted.org/packages/16/86/ba60d33565ca77fda37fcc2b0905ed0d8b7263ff0a1fee3472a6f47253e8/deflate-0.7.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:cbb2053fda99ee760f50ac5d16281dd1da174e6cabff043f1f7566446484d62d", size = 39197 }, + { url = "https://files.pythonhosted.org/packages/3f/33/982f1105bd5d3c4067d37dba399bb851544a1e115e1e1daa9a5cfb1a727d/deflate-0.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc80e18459a3d578b86e1f121128ad1e2a81e847fe357beb00c2de1c0753791b", size = 50654 }, + { url = "https://files.pythonhosted.org/packages/d6/ad/37860f47cca74faae86dddb7bd43eadf4f80c2878a25727991d2c5bc74ae/deflate-0.7.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7f3e64c2acb85c6501864e07992ea045b306a676f1c8117abae2c9420c0514e3", size = 53475 }, + { url = "https://files.pythonhosted.org/packages/58/43/0597cae045f678f85f49226bcb548b1fb694e1a543a8066e4b6c8a95d1ca/deflate-0.7.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7ed5ba096877aafdc3c667ff35ee6f63ca9ff5ba70459c925f53a99b32fd0783", size = 53428 }, + { url = "https://files.pythonhosted.org/packages/16/b2/7842a98aadd265babf0bf3036a314306a51080a1c45fe57767ac6d2b32ac/deflate-0.7.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8c4d343112c22e84d428cd65752729f08aad0394d16f755a841aadb7e65c01da", size = 50824 }, + { url = "https://files.pythonhosted.org/packages/8c/ec/5c47e5cce1f9cc755d63cb22f6e036b110c8e535c00ec1ad1e343652ebbc/deflate-0.7.0-cp311-cp311-win32.whl", hash = "sha256:e52f632e23be1dbaae76da7ef50dd4d556bb48a1b9cded2242ed5d1bb5feefbe", size = 43054 }, + { url = "https://files.pythonhosted.org/packages/ef/64/bd264433386fc7cd8f54c377ba6e4fbc91e9ba1df3de9d7dd513ec90af18/deflate-0.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:0cad885fae8d26625e67f415b9e2a6fb769ba84588eeef223eb63365271ddaf2", size = 49494 }, + { url = "https://files.pythonhosted.org/packages/bf/28/e73d3f585f2608f248d18289a3917598c93fca13b366fcf134625e427dce/deflate-0.7.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:0b8c8cb91a82b16e2effab66960229ecfb6420e1cb3723e92302979350c2f993", size = 54161 }, + { url = "https://files.pythonhosted.org/packages/4d/ee/3892498c11829ee7ddbeb349eb4ab30fb081c34e8218ec38d9010044abb9/deflate-0.7.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b3c3b95f92ec0beb910428203cd4e4c77fcfd9efaa0a0dd4fd26db698384bf57", size = 39198 }, + { url = "https://files.pythonhosted.org/packages/be/d3/058fb8f253bdb2171da20ecd1a75e0eb897eafdcbb19aaaf642123bd3d38/deflate-0.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16c1b4875c7e0166748eb026d20aeb639d081b85d7a23ce0f3513a89bb91823b", size = 50652 }, + { url = "https://files.pythonhosted.org/packages/27/04/74e60efa0fb662dbb6599efbd5bc22ec984cd9e6b23ede63657bc150e643/deflate-0.7.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae173c09956c923c3a20751c1b01272d274e721f180fa5d6e0d773ab84bf9288", size = 53476 }, + { url = "https://files.pythonhosted.org/packages/30/de/5a9a6494fc63e4704893ff53f0b9d8a69771b06426181e0a30a978946eea/deflate-0.7.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:dd58cb2348918b22d627f0341099bc11782389359d523852cf9a4fd3deb825b3", size = 53428 }, + { url = "https://files.pythonhosted.org/packages/18/49/69ed5eae22ca0bc24473be68f79fd7c56ad3a526269c75482fe6678e7485/deflate-0.7.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:10b5d1d9ecea31f933227af16471443eec28ac0c645d2e14f6f4214060f97969", size = 50825 }, + { url = "https://files.pythonhosted.org/packages/0c/a0/f415fdb3f22877d673396c30f0bd616be542139397681abe830be9dfc156/deflate-0.7.0-cp312-cp312-win32.whl", hash = "sha256:5141c4f8614ea59113f411d7634a1508b09ddf4900e24517932c886e8b910a0b", size = 43051 }, + { url = "https://files.pythonhosted.org/packages/03/06/3bef0929e279040ed5fe05e08503c5395f327617bed215f8e67e3b1fe54a/deflate-0.7.0-cp312-cp312-win_amd64.whl", hash = "sha256:251a7a48359ba6ad1a821dd06510dabb4060512705fd462d62708a82e7472713", size = 49493 }, +] + +[[package]] +name = "dill" +version = "0.3.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/70/43/86fe3f9e130c4137b0f1b50784dd70a5087b911fe07fa81e53e0c4c47fea/dill-0.3.9.tar.gz", hash = "sha256:81aa267dddf68cbfe8029c42ca9ec6a4ab3b22371d1c450abc54422577b4512c", size = 187000 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/46/d1/e73b6ad76f0b1fb7f23c35c6d95dbc506a9c8804f43dda8cb5b0fa6331fd/dill-0.3.9-py3-none-any.whl", hash = "sha256:468dff3b89520b474c0397703366b7b95eebe6303f108adf9b19da1f702be87a", size = 119418 }, +] + +[[package]] +name = "distlib" +version = "0.3.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0d/dd/1bec4c5ddb504ca60fc29472f3d27e8d4da1257a854e1d96742f15c1d02d/distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403", size = 613923 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87", size = 468973 }, +] + +[[package]] +name = "distributed" +version = "2024.12.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "cloudpickle" }, + { name = "dask" }, + { name = "jinja2" }, + { name = "locket" }, + { name = "msgpack" }, + { name = "packaging" }, + { name = "psutil" }, + { name = "pyyaml" }, + { name = "sortedcontainers" }, + { name = "tblib" }, + { name = "toolz" }, + { name = "tornado" }, + { name = "urllib3" }, + { name = "zict" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/67/ce/0ca6d4e1da90f5b3af135b3abbf0487b2602d046cc090b793869928880b5/distributed-2024.12.1.tar.gz", hash = "sha256:438aa3ae48bfac9c2bb2ad03f9d47899286f9cb3db8a627b3b8c0de9e26f53dd", size = 1115786 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/90/82171cc7fe1c6d10bac57587c7ac012be80412ad06ef8c4952c5f067f869/distributed-2024.12.1-py3-none-any.whl", hash = "sha256:87e31abaa0ee3dc517b44fec4993d4b5d92257f926a8d2a12d52c005227154e7", size = 1022935 }, +] + +[[package]] +name = "docstring-parser" +version = "0.16" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/08/12/9c22a58c0b1e29271051222d8906257616da84135af9ed167c9e28f85cb3/docstring_parser-0.16.tar.gz", hash = "sha256:538beabd0af1e2db0146b6bd3caa526c35a34d61af9fd2887f3a8a27a739aa6e", size = 26565 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d5/7c/e9fcff7623954d86bdc17782036cbf715ecab1bec4847c008557affe1ca8/docstring_parser-0.16-py3-none-any.whl", hash = "sha256:bf0a1387354d3691d102edef7ec124f219ef639982d096e26e3b60aeffa90637", size = 36533 }, +] + +[[package]] +name = "docutils" +version = "0.21.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ae/ed/aefcc8cd0ba62a0560c3c18c33925362d46c6075480bfa4df87b28e169a9/docutils-0.21.2.tar.gz", hash = "sha256:3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f", size = 2204444 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl", hash = "sha256:dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2", size = 587408 }, +] + +[[package]] +name = "dracopy" +version = "1.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/8f/29/56e9f404f01501b961848df7dadfc02b555bcfdb180abe84ef600a4883dd/DracoPy-1.4.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:82fe0f3d27d5403b49d8b9fa5686f8cb4c159016f14bd6239c9254be79d31606", size = 906239 }, + { url = "https://files.pythonhosted.org/packages/df/af/a4fd3c4978435c3c1b0cabf0b63632d89cf58a755f6f290bc85aa1a3685a/DracoPy-1.4.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:603432776c1ae91213db1bb2cdc99327a1e796f481866ad233eadb4451219b28", size = 2926877 }, + { url = "https://files.pythonhosted.org/packages/0e/83/ff32797b5a2c35b32d432e1d7019ef719fb9864ffb01d4a970034bc2921c/DracoPy-1.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ba94acecd0092f9444547fc2403062c35b09b209f3c2541bb4541e5a6a444447", size = 2605922 }, + { url = "https://files.pythonhosted.org/packages/dd/b0/e50ec8087da9ba723d09ec7ae55c83d528b5a628f809e7402f91258f6b04/DracoPy-1.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1718adf788c7c9152f0cfc20f4d97657087c1c5e8dd6eea32506b83e11a18577", size = 4502137 }, + { url = "https://files.pythonhosted.org/packages/45/c7/685e1db4730fefaac7b76693a50f8224297b09b479eceb2dc03ab2443702/DracoPy-1.4.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5fd8635d3e82150cc64ac33863a6c1032742b098febb2987119825f6e602025b", size = 4827437 }, + { url = "https://files.pythonhosted.org/packages/03/f8/3bdc76d9e605474260e8f64aafc40d83e0d32b0c27edc7506289eff5c98c/DracoPy-1.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f502fa21e419081c10325fa71f6f30180dc853cee62b619cf62980b68b522611", size = 4575387 }, + { url = "https://files.pythonhosted.org/packages/b8/ad/a16521db1d4337654ba33ee1c63c9b1f96e6d4b8581dba91a504c257ae4c/DracoPy-1.4.2-cp311-cp311-win32.whl", hash = "sha256:8862354e3b83f02a674131863ba7716cf17c42655c10b6e68c86e12ebaab095a", size = 4143267 }, + { url = "https://files.pythonhosted.org/packages/f0/3a/bd74f00cd3bf76b278167621f71b0738504e25153df5e2649f5c1a978a13/DracoPy-1.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:edeb22895e8de001767c35b279bd10367450b00a2a5d15aef3e271accc4625e8", size = 4850222 }, + { url = "https://files.pythonhosted.org/packages/c7/d2/2058fd96b6a34c083c82c6dc76e4ace80d4d8a867cfee5b8826733a2fa63/DracoPy-1.4.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:327405b1f246f7752922cc173d7e6a7f4007dd691720ddee5c1cdee16d22c4e3", size = 905626 }, + { url = "https://files.pythonhosted.org/packages/b4/8c/1530663b085c4951384afe525fbf544269ffdc17e4b2812d9088cd96fad2/DracoPy-1.4.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9b996edf049a934588541d4b59a2b44cdf896e47cdc4ffed16588a673dc6294c", size = 4805710 }, + { url = "https://files.pythonhosted.org/packages/a6/31/4928a97546394fc9e94b72e01d0d9dbbd7ff198c65d07939ac7177dad65b/DracoPy-1.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37431fa86ca843c13dbfe7434f5951d1fbf1e7f9d2c93bc53b55a5615050f2b8", size = 4557059 }, + { url = "https://files.pythonhosted.org/packages/95/6b/ad1f0665eabcd54fb19ae64becd88111f9039c9e37d6a441d549a3f07052/DracoPy-1.4.2-cp312-cp312-win32.whl", hash = "sha256:77e296389fe48de4b4300fd8db170bf145a96948185d27e8fbf9ad448a6dbe0d", size = 4144026 }, + { url = "https://files.pythonhosted.org/packages/5c/b1/2930d8fafeb09fbc81100d4c28d3dc0f284ef9479108f2360ffdf14d81c1/DracoPy-1.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:bafeb90583ed40f2e6b5909769c42dc9d83bcfe419aed19c1b41b1eec5904f9c", size = 4849202 }, + { url = "https://files.pythonhosted.org/packages/05/dd/5c4f0da0ada99b3a3bc44125614953466e7aa648ddca7b77c88489a180f2/DracoPy-1.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:9c0c23cde7a418aa0e914b69f4cd02517d78944f6c7b0b869350c498c2516627", size = 902243 }, + { url = "https://files.pythonhosted.org/packages/08/6e/6d4835ed2f34c559b7c0aba60be4ded96b8eeb783b03d28526b6402ea88c/DracoPy-1.4.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f9d0fd79966fb77d69db7b0b8bbc4a1869a4f61536ee3baeb13c717e488a1d73", size = 2919376 }, + { url = "https://files.pythonhosted.org/packages/12/c8/8ae0ad27bbf25756bb79b66703e19fa69b9a84fdbf0273159329e38ec81a/DracoPy-1.4.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c8fc76f0bbdbc906cfbf9dc35d1df1d4b323c67928be0f03f10eb9bcbbc57e6a", size = 2604926 }, + { url = "https://files.pythonhosted.org/packages/68/d4/94b31bd156946ee0db69c31b854b02f48be678e103b22f600a015fc06329/DracoPy-1.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78c9cf65f0d1d813986c57f000f33fe0830e0038908838a02536f86125c2342a", size = 4478704 }, + { url = "https://files.pythonhosted.org/packages/9c/b2/c84bec596f0ffece736077bd3cc736202573364b479e51ae4cb7f116411a/DracoPy-1.4.2-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b7c3f0542a841d7c560eb55297e360d58b70488f08dab57c75a9e2ce220e035", size = 4803971 }, + { url = "https://files.pythonhosted.org/packages/99/b8/920c389f4c40cf1892874cd045ed41f66807e41dab6a491392aef0ad3ab6/DracoPy-1.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1af18107d1345033cedd43ba42e5f95e66e154531088beddca99707cafb19df", size = 4554850 }, + { url = "https://files.pythonhosted.org/packages/ec/6c/0aee98523739a4cddf25ab7fe177afba985c7d869076a11962081caf74d1/DracoPy-1.4.2-cp313-cp313-win32.whl", hash = "sha256:9c8bfde47b64d207863f76c6778a74a3a07b00f441f2b235fc6e53eddde1673a", size = 4143651 }, + { url = "https://files.pythonhosted.org/packages/49/b8/3c09e6feb64e3c52f04d60b81d942e522ad1ff38b89946014ed762be1e7a/DracoPy-1.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:3002bf5e826e4eca36dfb287400e72cda69a09bbbc63ed20bcf145d449e2485a", size = 4848852 }, +] + +[[package]] +name = "executing" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8c/e3/7d45f492c2c4a0e8e0fad57d081a7c8a0286cdd86372b070cca1ec0caa1e/executing-2.1.0.tar.gz", hash = "sha256:8ea27ddd260da8150fa5a708269c4a10e76161e2496ec3e587da9e3c0fe4b9ab", size = 977485 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b5/fd/afcd0496feca3276f509df3dbd5dae726fcc756f1a08d9e25abe1733f962/executing-2.1.0-py2.py3-none-any.whl", hash = "sha256:8d63781349375b5ebccc3142f4b30350c0cd9c79f921cde38be2be4637e98eaf", size = 25805 }, +] + +[[package]] +name = "fasteners" +version = "0.19" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5f/d4/e834d929be54bfadb1f3e3b931c38e956aaa3b235a46a3c764c26c774902/fasteners-0.19.tar.gz", hash = "sha256:b4f37c3ac52d8a445af3a66bce57b33b5e90b97c696b7b984f530cf8f0ded09c", size = 24832 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/61/bf/fd60001b3abc5222d8eaa4a204cd8c0ae78e75adc688f33ce4bf25b7fafa/fasteners-0.19-py3-none-any.whl", hash = "sha256:758819cb5d94cdedf4e836988b74de396ceacb8e2794d21f82d131fd9ee77237", size = 18679 }, +] + +[[package]] +name = "fastremap" +version = "1.15.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/25/ec/86e4f8f6a0c778edd6a3db231cd45b74ac39918ee4c054abdbccbf65e37d/fastremap-1.15.0.tar.gz", hash = "sha256:d6e2268103e3620d3eef45fc5921a479d1d3778e3f80f2e30c3f5cee92d1a47f", size = 44727 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6d/16/7ac9df2eaa9725d5956e8df01675c25f85fff3f6d79dcf5f04cc32cad5aa/fastremap-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d9c3828e7df7337627ff64bfbf67eb713ced51941efc798dd35a19b78a00a285", size = 761235 }, + { url = "https://files.pythonhosted.org/packages/26/02/0752da93025cb5f5183b16877c73344bfc3d445f310ff9ee3a5accaea83b/fastremap-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e3190ace0cbee048dc9a4e32bf737943acd3d54f7236cc081b1bf273553a5176", size = 625694 }, + { url = "https://files.pythonhosted.org/packages/08/27/941fc33abd5dd9742329502c1f70f3b4f71f0f2ea56efbf26f25ec88a46a/fastremap-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91278b4dea82b6d34cbc7fd3b9ab5dfdc4c1f5787acbf16915f89c9ad0aca5f2", size = 6289159 }, + { url = "https://files.pythonhosted.org/packages/56/6c/9a81878751c1e0f323f330f9963f9b0d037e7945223771cce4c3baf06f8a/fastremap-1.15.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2dcdb943a80831f5831ed3ffbcb05acf4b6eac4a717de36223825d39e3e958b3", size = 6095831 }, + { url = "https://files.pythonhosted.org/packages/f9/2a/fce2e0858529f61f24ec68a10a88d53fa41c42a3f783da17787a51b6e937/fastremap-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ba6210f3e78a8e1fdc47f2ca160110504a1399954e60f4f441dc573b2cc288a", size = 6430169 }, + { url = "https://files.pythonhosted.org/packages/91/eb/764266d1101af468f4f0138855ef5fbfce1b800f0ea06b8a2bcd2db69d83/fastremap-1.15.0-cp311-cp311-win32.whl", hash = "sha256:d573884f903d912f4e873096a8cd5aea65a0a5396df55292acc8066455c5d3c9", size = 490070 }, + { url = "https://files.pythonhosted.org/packages/34/cc/d9e04498f930eeeaf625c9ad390554a88431f852cf22a45b9812b5458ca2/fastremap-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:f819ef67de8193a16a06cd4295610d7b08eb744352102ce6986c7f18be7b22a4", size = 663812 }, + { url = "https://files.pythonhosted.org/packages/09/35/81056f84b944364a79fff04817b8de7f2615d3a93c4e6dcb2f2657978eb3/fastremap-1.15.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cf996a3b8a023eb1f5aabe50a73e6f4fe44548e1869e1b02fbf5995fbba1a85e", size = 747715 }, + { url = "https://files.pythonhosted.org/packages/53/8e/a51f72d8b8f406c8b8aae601b0734f7ffbca7068f92e49ecc3b58e311dd1/fastremap-1.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:30ce5b2264f763b63af901d3805178748a26ad1cc6bd4cc6d8b5e1b879ffa825", size = 639275 }, + { url = "https://files.pythonhosted.org/packages/10/82/53c45dde44c1fde9e1959e848f88dc10b3e1df31e95e44634fd7c4f6aadb/fastremap-1.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c30a5a3b5c34fb209cec502110ff3582c92410553d6a6f70ad791977180bf89", size = 6352324 }, + { url = "https://files.pythonhosted.org/packages/6f/cc/0703660567aa10d21a5cbb16ffbf57f65c15006c7e46cb8d58fb2119995d/fastremap-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0662f5c9d50d553d394a26cb4f0bea2b072fc2b5862583c9d5966a4130de9af", size = 6533223 }, + { url = "https://files.pythonhosted.org/packages/72/c8/8825611239d300607774d4e15f7a70d2e7c6434d841abd704ffe58b8ae0c/fastremap-1.15.0-cp312-cp312-win32.whl", hash = "sha256:d6b12d6bfc34f52f07d63ccd038958b1dd837bcbe081e82fb7c295725da2eafa", size = 473713 }, + { url = "https://files.pythonhosted.org/packages/6d/60/b9809e706b82df4a3984e425668a8bc8f1b77c7ecbe07b25b71a66b5406d/fastremap-1.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:9622bf001da5ae55bda552e2b9c2a20c69deb7619a4792c7c6fc71bf0f6cc539", size = 632045 }, +] + +[[package]] +name = "filelock" +version = "3.16.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9d/db/3ef5bb276dae18d6ec2124224403d1d67bccdbefc17af4cc8f553e341ab1/filelock-3.16.1.tar.gz", hash = "sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435", size = 18037 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/f8/feced7779d755758a52d1f6635d990b8d98dc0a29fa568bbe0625f18fdf3/filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0", size = 16163 }, +] + +[[package]] +name = "flask" +version = "3.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "blinker" }, + { name = "click" }, + { name = "itsdangerous" }, + { name = "jinja2" }, + { name = "werkzeug" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/89/50/dff6380f1c7f84135484e176e0cac8690af72fa90e932ad2a0a60e28c69b/flask-3.1.0.tar.gz", hash = "sha256:5f873c5184c897c8d9d1b05df1e3d01b14910ce69607a117bd3277098a5836ac", size = 680824 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/47/93213ee66ef8fae3b93b3e29206f6b251e65c97bd91d8e1c5596ef15af0a/flask-3.1.0-py3-none-any.whl", hash = "sha256:d667207822eb83f1c4b50949b1623c8fc8d51f2341d65f72e1a1815397551136", size = 102979 }, +] + +[[package]] +name = "flask-cors" +version = "5.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "flask" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4f/d0/d9e52b154e603b0faccc0b7c2ad36a764d8755ef4036acbf1582a67fb86b/flask_cors-5.0.0.tar.gz", hash = "sha256:5aadb4b950c4e93745034594d9f3ea6591f734bb3662e16e255ffbf5e89c88ef", size = 30954 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/56/07/1afa0514c876282bebc1c9aee83c6bb98fe6415cf57b88d9b06e7e29bf9c/Flask_Cors-5.0.0-py2.py3-none-any.whl", hash = "sha256:b9e307d082a9261c100d8fb0ba909eec6a228ed1b60a8315fd85f783d61910bc", size = 14463 }, +] + +[[package]] +name = "flexcache" +version = "0.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/55/b0/8a21e330561c65653d010ef112bf38f60890051d244ede197ddaa08e50c1/flexcache-0.3.tar.gz", hash = "sha256:18743bd5a0621bfe2cf8d519e4c3bfdf57a269c15d1ced3fb4b64e0ff4600656", size = 15816 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/27/cd/c883e1a7c447479d6e13985565080e3fea88ab5a107c21684c813dba1875/flexcache-0.3-py3-none-any.whl", hash = "sha256:d43c9fea82336af6e0115e308d9d33a185390b8346a017564611f1466dcd2e32", size = 13263 }, +] + +[[package]] +name = "flexparser" +version = "0.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/82/99/b4de7e39e8eaf8207ba1a8fa2241dd98b2ba72ae6e16960d8351736d8702/flexparser-0.4.tar.gz", hash = "sha256:266d98905595be2ccc5da964fe0a2c3526fbbffdc45b65b3146d75db992ef6b2", size = 31799 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/5e/3be305568fe5f34448807976dc82fc151d76c3e0e03958f34770286278c1/flexparser-0.4-py3-none-any.whl", hash = "sha256:3738b456192dcb3e15620f324c447721023c0293f6af9955b481e91d00179846", size = 27625 }, +] + +[[package]] +name = "fonttools" +version = "4.55.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/76/61/a300d1574dc381393424047c0396a0e213db212e28361123af9830d71a8d/fonttools-4.55.3.tar.gz", hash = "sha256:3983313c2a04d6cc1fe9251f8fc647754cf49a61dac6cb1e7249ae67afaafc45", size = 3498155 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4b/18/14be25545600bd100e5b74a3ac39089b7c1cb403dc513b7ca348be3381bf/fonttools-4.55.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8c4491699bad88efe95772543cd49870cf756b019ad56294f6498982408ab03e", size = 2771005 }, + { url = "https://files.pythonhosted.org/packages/b2/51/2e1a5d3871cd7c2ae2054b54e92604e7d6abc3fd3656e9583c399648fe1c/fonttools-4.55.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5323a22eabddf4b24f66d26894f1229261021dacd9d29e89f7872dd8c63f0b8b", size = 2300654 }, + { url = "https://files.pythonhosted.org/packages/73/1a/50109bb2703bc6f774b52ea081db21edf2a9fa4b6d7485faadf9d1b997e9/fonttools-4.55.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5480673f599ad410695ca2ddef2dfefe9df779a9a5cda89503881e503c9c7d90", size = 4877541 }, + { url = "https://files.pythonhosted.org/packages/5d/52/c0b9857fa075da1b8806c5dc2d8342918a8cc2065fd14fbddb3303282693/fonttools-4.55.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da9da6d65cd7aa6b0f806556f4985bcbf603bf0c5c590e61b43aa3e5a0f822d0", size = 4906304 }, + { url = "https://files.pythonhosted.org/packages/0b/1b/55f85c7e962d295e456d5209581c919620ee3e877b95cd86245187a5050f/fonttools-4.55.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e894b5bd60d9f473bed7a8f506515549cc194de08064d829464088d23097331b", size = 4888087 }, + { url = "https://files.pythonhosted.org/packages/83/13/6f2809c612ea2ac51391f92468ff861c63473601530fca96458b453212bf/fonttools-4.55.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:aee3b57643827e237ff6ec6d28d9ff9766bd8b21e08cd13bff479e13d4b14765", size = 5056958 }, + { url = "https://files.pythonhosted.org/packages/c1/28/d0ea9e872fa4208b9dfca686e1dd9ca22f6c9ef33ecff2f0ebc2dbe7c29b/fonttools-4.55.3-cp311-cp311-win32.whl", hash = "sha256:eb6ca911c4c17eb51853143624d8dc87cdcdf12a711fc38bf5bd21521e79715f", size = 2173939 }, + { url = "https://files.pythonhosted.org/packages/be/36/d74ae1020bc41a1dff3e6f5a99f646563beecb97e386d27abdac3ba07650/fonttools-4.55.3-cp311-cp311-win_amd64.whl", hash = "sha256:6314bf82c54c53c71805318fcf6786d986461622dd926d92a465199ff54b1b72", size = 2220363 }, + { url = "https://files.pythonhosted.org/packages/89/58/fbcf5dff7e3ea844bb00c4d806ca1e339e1f2dce5529633bf4842c0c9a1f/fonttools-4.55.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f9e736f60f4911061235603a6119e72053073a12c6d7904011df2d8fad2c0e35", size = 2765380 }, + { url = "https://files.pythonhosted.org/packages/81/dd/da6e329e51919b4f421c8738f3497e2ab08c168e76aaef7b6d5351862bdf/fonttools-4.55.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7a8aa2c5e5b8b3bcb2e4538d929f6589a5c6bdb84fd16e2ed92649fb5454f11c", size = 2297940 }, + { url = "https://files.pythonhosted.org/packages/00/44/f5ee560858425c99ef07e04919e736db09d6416408e5a8d3bbfb4a6623fd/fonttools-4.55.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:07f8288aacf0a38d174445fc78377a97fb0b83cfe352a90c9d9c1400571963c7", size = 4793327 }, + { url = "https://files.pythonhosted.org/packages/24/da/0a001926d791c55e29ac3c52964957a20dbc1963615446b568b7432891c3/fonttools-4.55.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8d5e8916c0970fbc0f6f1bece0063363bb5857a7f170121a4493e31c3db3314", size = 4865624 }, + { url = "https://files.pythonhosted.org/packages/3d/d8/1edd8b13a427a9fb6418373437caa586c0caa57f260af8e0548f4d11e340/fonttools-4.55.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ae3b6600565b2d80b7c05acb8e24d2b26ac407b27a3f2e078229721ba5698427", size = 4774166 }, + { url = "https://files.pythonhosted.org/packages/9c/ec/ade054097976c3d6debc9032e09a351505a0196aa5493edf021be376f75e/fonttools-4.55.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:54153c49913f45065c8d9e6d0c101396725c5621c8aee744719300f79771d75a", size = 5001832 }, + { url = "https://files.pythonhosted.org/packages/e2/cd/233f0e31ad799bb91fc78099c8b4e5ec43b85a131688519640d6bae46f6a/fonttools-4.55.3-cp312-cp312-win32.whl", hash = "sha256:827e95fdbbd3e51f8b459af5ea10ecb4e30af50221ca103bea68218e9615de07", size = 2162228 }, + { url = "https://files.pythonhosted.org/packages/46/45/a498b5291f6c0d91b2394b1ed7447442a57d1c9b9cf8f439aee3c316a56e/fonttools-4.55.3-cp312-cp312-win_amd64.whl", hash = "sha256:e6e8766eeeb2de759e862004aa11a9ea3d6f6d5ec710551a88b476192b64fd54", size = 2209118 }, + { url = "https://files.pythonhosted.org/packages/9c/9f/00142a19bad96eeeb1aed93f567adc19b7f2c1af6f5bc0a1c3de90b4b1ac/fonttools-4.55.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a430178ad3e650e695167cb53242dae3477b35c95bef6525b074d87493c4bf29", size = 2752812 }, + { url = "https://files.pythonhosted.org/packages/b0/20/14b8250d63ba65e162091fb0dda07730f90c303bbf5257e9ddacec7230d9/fonttools-4.55.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:529cef2ce91dc44f8e407cc567fae6e49a1786f2fefefa73a294704c415322a4", size = 2291521 }, + { url = "https://files.pythonhosted.org/packages/34/47/a681cfd10245eb74f65e491a934053ec75c4af639655446558f29818e45e/fonttools-4.55.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e75f12c82127486fac2d8bfbf5bf058202f54bf4f158d367e41647b972342ca", size = 4770980 }, + { url = "https://files.pythonhosted.org/packages/d2/6c/a7066afc19db0705a12efd812e19c32cde2b9514eb714659522f2ebd60b6/fonttools-4.55.3-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:859c358ebf41db18fb72342d3080bce67c02b39e86b9fbcf1610cca14984841b", size = 4845534 }, + { url = "https://files.pythonhosted.org/packages/0c/a2/3c204fbabbfd845d9bdcab9ae35279d41e9a4bf5c80a0a2708f9c5a195d6/fonttools-4.55.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:546565028e244a701f73df6d8dd6be489d01617863ec0c6a42fa25bf45d43048", size = 4753910 }, + { url = "https://files.pythonhosted.org/packages/6e/8c/b4cb3592880340b89e4ef6601b531780bba73862332a6451d78fe135d6cb/fonttools-4.55.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:aca318b77f23523309eec4475d1fbbb00a6b133eb766a8bdc401faba91261abe", size = 4976411 }, + { url = "https://files.pythonhosted.org/packages/fc/a8/4bf98840ff89fcc188470b59daec57322178bf36d2f4f756cd19a42a826b/fonttools-4.55.3-cp313-cp313-win32.whl", hash = "sha256:8c5ec45428edaa7022f1c949a632a6f298edc7b481312fc7dc258921e9399628", size = 2160178 }, + { url = "https://files.pythonhosted.org/packages/e6/57/4cc35004605416df3225ff362f3455cf09765db00df578ae9e46d0fefd23/fonttools-4.55.3-cp313-cp313-win_amd64.whl", hash = "sha256:11e5de1ee0d95af4ae23c1a138b184b7f06e0b6abacabf1d0db41c90b03d834b", size = 2206102 }, + { url = "https://files.pythonhosted.org/packages/99/3b/406d17b1f63e04a82aa621936e6e1c53a8c05458abd66300ac85ea7f9ae9/fonttools-4.55.3-py3-none-any.whl", hash = "sha256:f412604ccbeee81b091b420272841e5ec5ef68967a9790e80bffd0e30b8e2977", size = 1111638 }, +] + +[[package]] +name = "freetype-py" +version = "2.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d0/9c/61ba17f846b922c2d6d101cc886b0e8fb597c109cedfcb39b8c5d2304b54/freetype-py-2.5.1.zip", hash = "sha256:cfe2686a174d0dd3d71a9d8ee9bf6a2c23f5872385cf8ce9f24af83d076e2fbd", size = 851738 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/a8/258dd138ebe60c79cd8cfaa6d021599208a33f0175a5e29b01f60c9ab2c7/freetype_py-2.5.1-py3-none-macosx_10_9_universal2.whl", hash = "sha256:d01ded2557694f06aa0413f3400c0c0b2b5ebcaabeef7aaf3d756be44f51e90b", size = 1747885 }, + { url = "https://files.pythonhosted.org/packages/a2/93/280ad06dc944e40789b0a641492321a2792db82edda485369cbc59d14366/freetype_py-2.5.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d2f6b3d68496797da23204b3b9c4e77e67559c80390fc0dc8b3f454ae1cd819", size = 1051055 }, + { url = "https://files.pythonhosted.org/packages/b6/36/853cad240ec63e21a37a512ee19c896b655ce1772d803a3dd80fccfe63fe/freetype_py-2.5.1-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:289b443547e03a4f85302e3ac91376838e0d11636050166662a4f75e3087ed0b", size = 1043856 }, + { url = "https://files.pythonhosted.org/packages/93/6f/fcc1789e42b8c6617c3112196d68e87bfe7d957d80812d3c24d639782dcb/freetype_py-2.5.1-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:cd3bfdbb7e1a84818cfbc8025fca3096f4f2afcd5d4641184bf0a3a2e6f97bbf", size = 1108180 }, + { url = "https://files.pythonhosted.org/packages/2a/1b/161d3a6244b8a820aef188e4397a750d4a8196316809576d015f26594296/freetype_py-2.5.1-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:3c1aefc4f0d5b7425f014daccc5fdc7c6f914fb7d6a695cc684f1c09cd8c1660", size = 1106792 }, + { url = "https://files.pythonhosted.org/packages/93/6e/bd7fbfacca077bc6f34f1a1109800a2c41ab50f4704d3a0507ba41009915/freetype_py-2.5.1-py3-none-win_amd64.whl", hash = "sha256:0b7f8e0342779f65ca13ef8bc103938366fecade23e6bb37cb671c2b8ad7f124", size = 814608 }, +] + +[[package]] +name = "frozenlist" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8f/ed/0f4cec13a93c02c47ec32d81d11c0c1efbadf4a471e3f3ce7cad366cbbd3/frozenlist-1.5.0.tar.gz", hash = "sha256:81d5af29e61b9c8348e876d442253723928dce6433e0e76cd925cd83f1b4b817", size = 39930 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/43/0bed28bf5eb1c9e4301003b74453b8e7aa85fb293b31dde352aac528dafc/frozenlist-1.5.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fd74520371c3c4175142d02a976aee0b4cb4a7cc912a60586ffd8d5929979b30", size = 94987 }, + { url = "https://files.pythonhosted.org/packages/bb/bf/b74e38f09a246e8abbe1e90eb65787ed745ccab6eaa58b9c9308e052323d/frozenlist-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2f3f7a0fbc219fb4455264cae4d9f01ad41ae6ee8524500f381de64ffaa077d5", size = 54584 }, + { url = "https://files.pythonhosted.org/packages/2c/31/ab01375682f14f7613a1ade30149f684c84f9b8823a4391ed950c8285656/frozenlist-1.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f47c9c9028f55a04ac254346e92977bf0f166c483c74b4232bee19a6697e4778", size = 52499 }, + { url = "https://files.pythonhosted.org/packages/98/a8/d0ac0b9276e1404f58fec3ab6e90a4f76b778a49373ccaf6a563f100dfbc/frozenlist-1.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0996c66760924da6e88922756d99b47512a71cfd45215f3570bf1e0b694c206a", size = 276357 }, + { url = "https://files.pythonhosted.org/packages/ad/c9/c7761084fa822f07dac38ac29f841d4587570dd211e2262544aa0b791d21/frozenlist-1.5.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a2fe128eb4edeabe11896cb6af88fca5346059f6c8d807e3b910069f39157869", size = 287516 }, + { url = "https://files.pythonhosted.org/packages/a1/ff/cd7479e703c39df7bdab431798cef89dc75010d8aa0ca2514c5b9321db27/frozenlist-1.5.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a8ea951bbb6cacd492e3948b8da8c502a3f814f5d20935aae74b5df2b19cf3d", size = 283131 }, + { url = "https://files.pythonhosted.org/packages/59/a0/370941beb47d237eca4fbf27e4e91389fd68699e6f4b0ebcc95da463835b/frozenlist-1.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de537c11e4aa01d37db0d403b57bd6f0546e71a82347a97c6a9f0dcc532b3a45", size = 261320 }, + { url = "https://files.pythonhosted.org/packages/b8/5f/c10123e8d64867bc9b4f2f510a32042a306ff5fcd7e2e09e5ae5100ee333/frozenlist-1.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c2623347b933fcb9095841f1cc5d4ff0b278addd743e0e966cb3d460278840d", size = 274877 }, + { url = "https://files.pythonhosted.org/packages/fa/79/38c505601ae29d4348f21706c5d89755ceded02a745016ba2f58bd5f1ea6/frozenlist-1.5.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cee6798eaf8b1416ef6909b06f7dc04b60755206bddc599f52232606e18179d3", size = 269592 }, + { url = "https://files.pythonhosted.org/packages/19/e2/39f3a53191b8204ba9f0bb574b926b73dd2efba2a2b9d2d730517e8f7622/frozenlist-1.5.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f5f9da7f5dbc00a604fe74aa02ae7c98bcede8a3b8b9666f9f86fc13993bc71a", size = 265934 }, + { url = "https://files.pythonhosted.org/packages/d5/c9/3075eb7f7f3a91f1a6b00284af4de0a65a9ae47084930916f5528144c9dd/frozenlist-1.5.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:90646abbc7a5d5c7c19461d2e3eeb76eb0b204919e6ece342feb6032c9325ae9", size = 283859 }, + { url = "https://files.pythonhosted.org/packages/05/f5/549f44d314c29408b962fa2b0e69a1a67c59379fb143b92a0a065ffd1f0f/frozenlist-1.5.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:bdac3c7d9b705d253b2ce370fde941836a5f8b3c5c2b8fd70940a3ea3af7f4f2", size = 287560 }, + { url = "https://files.pythonhosted.org/packages/9d/f8/cb09b3c24a3eac02c4c07a9558e11e9e244fb02bf62c85ac2106d1eb0c0b/frozenlist-1.5.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:03d33c2ddbc1816237a67f66336616416e2bbb6beb306e5f890f2eb22b959cdf", size = 277150 }, + { url = "https://files.pythonhosted.org/packages/37/48/38c2db3f54d1501e692d6fe058f45b6ad1b358d82cd19436efab80cfc965/frozenlist-1.5.0-cp311-cp311-win32.whl", hash = "sha256:237f6b23ee0f44066219dae14c70ae38a63f0440ce6750f868ee08775073f942", size = 45244 }, + { url = "https://files.pythonhosted.org/packages/ca/8c/2ddffeb8b60a4bce3b196c32fcc30d8830d4615e7b492ec2071da801b8ad/frozenlist-1.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:0cc974cc93d32c42e7b0f6cf242a6bd941c57c61b618e78b6c0a96cb72788c1d", size = 51634 }, + { url = "https://files.pythonhosted.org/packages/79/73/fa6d1a96ab7fd6e6d1c3500700963eab46813847f01ef0ccbaa726181dd5/frozenlist-1.5.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:31115ba75889723431aa9a4e77d5f398f5cf976eea3bdf61749731f62d4a4a21", size = 94026 }, + { url = "https://files.pythonhosted.org/packages/ab/04/ea8bf62c8868b8eada363f20ff1b647cf2e93377a7b284d36062d21d81d1/frozenlist-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7437601c4d89d070eac8323f121fcf25f88674627505334654fd027b091db09d", size = 54150 }, + { url = "https://files.pythonhosted.org/packages/d0/9a/8e479b482a6f2070b26bda572c5e6889bb3ba48977e81beea35b5ae13ece/frozenlist-1.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7948140d9f8ece1745be806f2bfdf390127cf1a763b925c4a805c603df5e697e", size = 51927 }, + { url = "https://files.pythonhosted.org/packages/e3/12/2aad87deb08a4e7ccfb33600871bbe8f0e08cb6d8224371387f3303654d7/frozenlist-1.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feeb64bc9bcc6b45c6311c9e9b99406660a9c05ca8a5b30d14a78555088b0b3a", size = 282647 }, + { url = "https://files.pythonhosted.org/packages/77/f2/07f06b05d8a427ea0060a9cef6e63405ea9e0d761846b95ef3fb3be57111/frozenlist-1.5.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:683173d371daad49cffb8309779e886e59c2f369430ad28fe715f66d08d4ab1a", size = 289052 }, + { url = "https://files.pythonhosted.org/packages/bd/9f/8bf45a2f1cd4aa401acd271b077989c9267ae8463e7c8b1eb0d3f561b65e/frozenlist-1.5.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7d57d8f702221405a9d9b40f9da8ac2e4a1a8b5285aac6100f3393675f0a85ee", size = 291719 }, + { url = "https://files.pythonhosted.org/packages/41/d1/1f20fd05a6c42d3868709b7604c9f15538a29e4f734c694c6bcfc3d3b935/frozenlist-1.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30c72000fbcc35b129cb09956836c7d7abf78ab5416595e4857d1cae8d6251a6", size = 267433 }, + { url = "https://files.pythonhosted.org/packages/af/f2/64b73a9bb86f5a89fb55450e97cd5c1f84a862d4ff90d9fd1a73ab0f64a5/frozenlist-1.5.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:000a77d6034fbad9b6bb880f7ec073027908f1b40254b5d6f26210d2dab1240e", size = 283591 }, + { url = "https://files.pythonhosted.org/packages/29/e2/ffbb1fae55a791fd6c2938dd9ea779509c977435ba3940b9f2e8dc9d5316/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5d7f5a50342475962eb18b740f3beecc685a15b52c91f7d975257e13e029eca9", size = 273249 }, + { url = "https://files.pythonhosted.org/packages/2e/6e/008136a30798bb63618a114b9321b5971172a5abddff44a100c7edc5ad4f/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:87f724d055eb4785d9be84e9ebf0f24e392ddfad00b3fe036e43f489fafc9039", size = 271075 }, + { url = "https://files.pythonhosted.org/packages/ae/f0/4e71e54a026b06724cec9b6c54f0b13a4e9e298cc8db0f82ec70e151f5ce/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:6e9080bb2fb195a046e5177f10d9d82b8a204c0736a97a153c2466127de87784", size = 285398 }, + { url = "https://files.pythonhosted.org/packages/4d/36/70ec246851478b1c0b59f11ef8ade9c482ff447c1363c2bd5fad45098b12/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9b93d7aaa36c966fa42efcaf716e6b3900438632a626fb09c049f6a2f09fc631", size = 294445 }, + { url = "https://files.pythonhosted.org/packages/37/e0/47f87544055b3349b633a03c4d94b405956cf2437f4ab46d0928b74b7526/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:52ef692a4bc60a6dd57f507429636c2af8b6046db8b31b18dac02cbc8f507f7f", size = 280569 }, + { url = "https://files.pythonhosted.org/packages/f9/7c/490133c160fb6b84ed374c266f42800e33b50c3bbab1652764e6e1fc498a/frozenlist-1.5.0-cp312-cp312-win32.whl", hash = "sha256:29d94c256679247b33a3dc96cce0f93cbc69c23bf75ff715919332fdbb6a32b8", size = 44721 }, + { url = "https://files.pythonhosted.org/packages/b1/56/4e45136ffc6bdbfa68c29ca56ef53783ef4c2fd395f7cbf99a2624aa9aaa/frozenlist-1.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:8969190d709e7c48ea386db202d708eb94bdb29207a1f269bab1196ce0dcca1f", size = 51329 }, + { url = "https://files.pythonhosted.org/packages/da/3b/915f0bca8a7ea04483622e84a9bd90033bab54bdf485479556c74fd5eaf5/frozenlist-1.5.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7a1a048f9215c90973402e26c01d1cff8a209e1f1b53f72b95c13db61b00f953", size = 91538 }, + { url = "https://files.pythonhosted.org/packages/c7/d1/a7c98aad7e44afe5306a2b068434a5830f1470675f0e715abb86eb15f15b/frozenlist-1.5.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:dd47a5181ce5fcb463b5d9e17ecfdb02b678cca31280639255ce9d0e5aa67af0", size = 52849 }, + { url = "https://files.pythonhosted.org/packages/3a/c8/76f23bf9ab15d5f760eb48701909645f686f9c64fbb8982674c241fbef14/frozenlist-1.5.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1431d60b36d15cda188ea222033eec8e0eab488f39a272461f2e6d9e1a8e63c2", size = 50583 }, + { url = "https://files.pythonhosted.org/packages/1f/22/462a3dd093d11df623179d7754a3b3269de3b42de2808cddef50ee0f4f48/frozenlist-1.5.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6482a5851f5d72767fbd0e507e80737f9c8646ae7fd303def99bfe813f76cf7f", size = 265636 }, + { url = "https://files.pythonhosted.org/packages/80/cf/e075e407fc2ae7328155a1cd7e22f932773c8073c1fc78016607d19cc3e5/frozenlist-1.5.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44c49271a937625619e862baacbd037a7ef86dd1ee215afc298a417ff3270608", size = 270214 }, + { url = "https://files.pythonhosted.org/packages/a1/58/0642d061d5de779f39c50cbb00df49682832923f3d2ebfb0fedf02d05f7f/frozenlist-1.5.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:12f78f98c2f1c2429d42e6a485f433722b0061d5c0b0139efa64f396efb5886b", size = 273905 }, + { url = "https://files.pythonhosted.org/packages/ab/66/3fe0f5f8f2add5b4ab7aa4e199f767fd3b55da26e3ca4ce2cc36698e50c4/frozenlist-1.5.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce3aa154c452d2467487765e3adc730a8c153af77ad84096bc19ce19a2400840", size = 250542 }, + { url = "https://files.pythonhosted.org/packages/f6/b8/260791bde9198c87a465224e0e2bb62c4e716f5d198fc3a1dacc4895dbd1/frozenlist-1.5.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b7dc0c4338e6b8b091e8faf0db3168a37101943e687f373dce00959583f7439", size = 267026 }, + { url = "https://files.pythonhosted.org/packages/2e/a4/3d24f88c527f08f8d44ade24eaee83b2627793fa62fa07cbb7ff7a2f7d42/frozenlist-1.5.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:45e0896250900b5aa25180f9aec243e84e92ac84bd4a74d9ad4138ef3f5c97de", size = 257690 }, + { url = "https://files.pythonhosted.org/packages/de/9a/d311d660420b2beeff3459b6626f2ab4fb236d07afbdac034a4371fe696e/frozenlist-1.5.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:561eb1c9579d495fddb6da8959fd2a1fca2c6d060d4113f5844b433fc02f2641", size = 253893 }, + { url = "https://files.pythonhosted.org/packages/c6/23/e491aadc25b56eabd0f18c53bb19f3cdc6de30b2129ee0bc39cd387cd560/frozenlist-1.5.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:df6e2f325bfee1f49f81aaac97d2aa757c7646534a06f8f577ce184afe2f0a9e", size = 267006 }, + { url = "https://files.pythonhosted.org/packages/08/c4/ab918ce636a35fb974d13d666dcbe03969592aeca6c3ab3835acff01f79c/frozenlist-1.5.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:140228863501b44b809fb39ec56b5d4071f4d0aa6d216c19cbb08b8c5a7eadb9", size = 276157 }, + { url = "https://files.pythonhosted.org/packages/c0/29/3b7a0bbbbe5a34833ba26f686aabfe982924adbdcafdc294a7a129c31688/frozenlist-1.5.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7707a25d6a77f5d27ea7dc7d1fc608aa0a478193823f88511ef5e6b8a48f9d03", size = 264642 }, + { url = "https://files.pythonhosted.org/packages/ab/42/0595b3dbffc2e82d7fe658c12d5a5bafcd7516c6bf2d1d1feb5387caa9c1/frozenlist-1.5.0-cp313-cp313-win32.whl", hash = "sha256:31a9ac2b38ab9b5a8933b693db4939764ad3f299fcaa931a3e605bc3460e693c", size = 44914 }, + { url = "https://files.pythonhosted.org/packages/17/c4/b7db1206a3fea44bf3b838ca61deb6f74424a8a5db1dd53ecb21da669be6/frozenlist-1.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:11aabdd62b8b9c4b84081a3c246506d1cddd2dd93ff0ad53ede5defec7886b28", size = 51167 }, + { url = "https://files.pythonhosted.org/packages/c6/c8/a5be5b7550c10858fcf9b0ea054baccab474da77d37f1e828ce043a3a5d4/frozenlist-1.5.0-py3-none-any.whl", hash = "sha256:d994863bba198a4a518b467bb971c56e1db3f180a25c6cf7bb1949c267f748c3", size = 11901 }, +] + +[[package]] +name = "fsspec" +version = "2024.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a0/52/f16a068ebadae42526484c31f4398e62962504e5724a8ba5dc3409483df2/fsspec-2024.10.0.tar.gz", hash = "sha256:eda2d8a4116d4f2429db8550f2457da57279247dd930bb12f821b58391359493", size = 286853 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/b2/454d6e7f0158951d8a78c2e1eb4f69ae81beb8dca5fee9809c6c99e9d0d0/fsspec-2024.10.0-py3-none-any.whl", hash = "sha256:03b9a6785766a4de40368b88906366755e2819e758b83705c88cd7cb5fe81871", size = 179641 }, +] + +[package.optional-dependencies] +s3 = [ + { name = "s3fs" }, +] + +[[package]] +name = "gevent" +version = "24.11.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "platform_python_implementation == 'CPython' and sys_platform == 'win32'" }, + { name = "greenlet", marker = "platform_python_implementation == 'CPython'" }, + { name = "zope-event" }, + { name = "zope-interface" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ab/75/a53f1cb732420f5e5d79b2563fc3504d22115e7ecfe7966e5cf9b3582ae7/gevent-24.11.1.tar.gz", hash = "sha256:8bd1419114e9e4a3ed33a5bad766afff9a3cf765cb440a582a1b3a9bc80c1aca", size = 5976624 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ea/fd/86a170f77ef51a15297573c50dbec4cc67ddc98b677cc2d03cc7f2927f4c/gevent-24.11.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:351d1c0e4ef2b618ace74c91b9b28b3eaa0dd45141878a964e03c7873af09f62", size = 2951424 }, + { url = "https://files.pythonhosted.org/packages/7f/0a/987268c9d446f61883bc627c77c5ed4a97869c0f541f76661a62b2c411f6/gevent-24.11.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5efe72e99b7243e222ba0c2c2ce9618d7d36644c166d63373af239da1036bab", size = 4878504 }, + { url = "https://files.pythonhosted.org/packages/dc/d4/2f77ddd837c0e21b4a4460bcb79318b6754d95ef138b7a29f3221c7e9993/gevent-24.11.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d3b249e4e1f40c598ab8393fc01ae6a3b4d51fc1adae56d9ba5b315f6b2d758", size = 5007668 }, + { url = "https://files.pythonhosted.org/packages/80/a0/829e0399a1f9b84c344b72d2be9aa60fe2a64e993cac221edcc14f069679/gevent-24.11.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81d918e952954675f93fb39001da02113ec4d5f4921bf5a0cc29719af6824e5d", size = 5067055 }, + { url = "https://files.pythonhosted.org/packages/1e/67/0e693f9ddb7909c2414f8fcfc2409aa4157884c147bc83dab979e9cf717c/gevent-24.11.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9c935b83d40c748b6421625465b7308d87c7b3717275acd587eef2bd1c39546", size = 6761883 }, + { url = "https://files.pythonhosted.org/packages/fa/b6/b69883fc069d7148dd23c5dda20826044e54e7197f3c8e72b8cc2cd4035a/gevent-24.11.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff96c5739834c9a594db0e12bf59cb3fa0e5102fc7b893972118a3166733d61c", size = 5440802 }, + { url = "https://files.pythonhosted.org/packages/32/4e/b00094d995ff01fd88b3cf6b9d1d794f935c31c645c431e65cd82d808c9c/gevent-24.11.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d6c0a065e31ef04658f799215dddae8752d636de2bed61365c358f9c91e7af61", size = 6866992 }, + { url = "https://files.pythonhosted.org/packages/37/ed/58dbe9fb09d36f6477ff8db0459ebd3be9a77dc05ae5d96dc91ad657610d/gevent-24.11.1-cp311-cp311-win_amd64.whl", hash = "sha256:97e2f3999a5c0656f42065d02939d64fffaf55861f7d62b0107a08f52c984897", size = 1543736 }, + { url = "https://files.pythonhosted.org/packages/dd/32/301676f67ffa996ff1c4175092fb0c48c83271cc95e5c67650b87156b6cf/gevent-24.11.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:a3d75fa387b69c751a3d7c5c3ce7092a171555126e136c1d21ecd8b50c7a6e46", size = 2956467 }, + { url = "https://files.pythonhosted.org/packages/6b/84/aef1a598123cef2375b6e2bf9d17606b961040f8a10e3dcc3c3dd2a99f05/gevent-24.11.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:beede1d1cff0c6fafae3ab58a0c470d7526196ef4cd6cc18e7769f207f2ea4eb", size = 5136486 }, + { url = "https://files.pythonhosted.org/packages/92/7b/04f61187ee1df7a913b3fca63b0a1206c29141ab4d2a57e7645237b6feb5/gevent-24.11.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:85329d556aaedced90a993226d7d1186a539c843100d393f2349b28c55131c85", size = 5299718 }, + { url = "https://files.pythonhosted.org/packages/36/2a/ebd12183ac25eece91d084be2111e582b061f4d15ead32239b43ed47e9ba/gevent-24.11.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:816b3883fa6842c1cf9d2786722014a0fd31b6312cca1f749890b9803000bad6", size = 5400118 }, + { url = "https://files.pythonhosted.org/packages/ec/c9/f006c0cd59f0720fbb62ee11da0ad4c4c0fd12799afd957dd491137e80d9/gevent-24.11.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b24d800328c39456534e3bc3e1684a28747729082684634789c2f5a8febe7671", size = 6775163 }, + { url = "https://files.pythonhosted.org/packages/49/f1/5edf00b674b10d67e3b967c2d46b8a124c2bc8cfd59d4722704392206444/gevent-24.11.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a5f1701ce0f7832f333dd2faf624484cbac99e60656bfbb72504decd42970f0f", size = 5479886 }, + { url = "https://files.pythonhosted.org/packages/22/11/c48e62744a32c0d48984268ae62b99edb81eaf0e03b42de52e2f09855509/gevent-24.11.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:d740206e69dfdfdcd34510c20adcb9777ce2cc18973b3441ab9767cd8948ca8a", size = 6891452 }, + { url = "https://files.pythonhosted.org/packages/11/b2/5d20664ef6a077bec9f27f7a7ee761edc64946d0b1e293726a3d074a9a18/gevent-24.11.1-cp312-cp312-win_amd64.whl", hash = "sha256:68bee86b6e1c041a187347ef84cf03a792f0b6c7238378bf6ba4118af11feaae", size = 1541631 }, + { url = "https://files.pythonhosted.org/packages/a4/8f/4958e70caeaf469c576ecc5b5f2cb49ddaad74336fa82363d89cddb3c284/gevent-24.11.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:d618e118fdb7af1d6c1a96597a5cd6ac84a9f3732b5be8515c6a66e098d498b6", size = 2949601 }, + { url = "https://files.pythonhosted.org/packages/3b/64/79892d250b7b2aa810688dfebe783aec02568e5cecacb1e100acbb9d95c6/gevent-24.11.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2142704c2adce9cd92f6600f371afb2860a446bfd0be5bd86cca5b3e12130766", size = 5107052 }, + { url = "https://files.pythonhosted.org/packages/66/44/9ee0ed1909b4f41375e32bf10036d5d8624962afcbd901573afdecd2e36a/gevent-24.11.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:92e0d7759de2450a501effd99374256b26359e801b2d8bf3eedd3751973e87f5", size = 5271736 }, + { url = "https://files.pythonhosted.org/packages/e3/48/0184b2622a388a256199c5fadcad6b52b6455019c2a4b19edd6de58e30ba/gevent-24.11.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ca845138965c8c56d1550499d6b923eb1a2331acfa9e13b817ad8305dde83d11", size = 5367782 }, + { url = "https://files.pythonhosted.org/packages/9a/b1/1a2704c346234d889d2e0042efb182534f7d294115f0e9f99d8079fa17eb/gevent-24.11.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:356b73d52a227d3313f8f828025b665deada57a43d02b1cf54e5d39028dbcf8d", size = 6757533 }, + { url = "https://files.pythonhosted.org/packages/ed/6e/b2eed8dec617264f0046d50a13a42d3f0a06c50071b9fc1eae00285a03f1/gevent-24.11.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:58851f23c4bdb70390f10fc020c973ffcf409eb1664086792c8b1e20f25eef43", size = 5449436 }, + { url = "https://files.pythonhosted.org/packages/63/c2/eca6b95fbf9af287fa91c327494e4b74a8d5bfa0156cd87b233f63f118dc/gevent-24.11.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:1ea50009ecb7f1327347c37e9eb6561bdbc7de290769ee1404107b9a9cba7cf1", size = 6866470 }, + { url = "https://files.pythonhosted.org/packages/b7/e6/51824bd1f2c1ce70aa01495aa6ffe04ab789fa819fa7e6f0ad2388fb03c6/gevent-24.11.1-cp313-cp313-win_amd64.whl", hash = "sha256:ec68e270543ecd532c4c1d70fca020f90aa5486ad49c4f3b8b2e64a66f5c9274", size = 1540088 }, +] + +[[package]] +name = "gff-3d-organoid-image-format-prototype" +version = "0.1.dev13+g3fff83b.d20250121" +source = { editable = "." } +dependencies = [ + { name = "cloud-volume", extra = ["zarr"] }, + { name = "flask" }, + { name = "flask-cors" }, + { name = "matplotlib" }, + { name = "napari", extra = ["all"] }, + { name = "napari-ome-zarr" }, + { name = "neuroglancer" }, + { name = "numpy" }, + { name = "ome-zarr" }, + { name = "tifffile" }, + { name = "xmltodict" }, + { name = "zarr" }, +] + +[package.dev-dependencies] +dev = [ + { name = "pre-commit" }, + { name = "pytest" }, + { name = "setuptools-scm" }, +] + +[package.metadata] +requires-dist = [ + { name = "cloud-volume", extras = ["zarr"], specifier = ">=11.1.2" }, + { name = "flask", specifier = ">=3.1.0" }, + { name = "flask-cors", specifier = ">=5.0.0" }, + { name = "matplotlib", specifier = ">=3.10" }, + { name = "napari", extras = ["all"], specifier = ">=0.5.5" }, + { name = "napari-ome-zarr", specifier = ">=0.6.1" }, + { name = "neuroglancer", specifier = ">=2.40.1" }, + { name = "numpy", specifier = "<2.1" }, + { name = "ome-zarr", specifier = ">=0.10.2" }, + { name = "tifffile", specifier = ">=2024.12.12" }, + { name = "xmltodict", specifier = ">=0.14.2" }, + { name = "zarr", specifier = ">=2.18.4" }, +] + +[package.metadata.requires-dev] +dev = [ + { name = "pre-commit", specifier = ">=4.0.1" }, + { name = "pytest", specifier = ">=8.3.4" }, + { name = "setuptools-scm", specifier = ">=8.1" }, +] + +[[package]] +name = "google-api-core" +version = "2.24.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-auth" }, + { name = "googleapis-common-protos" }, + { name = "proto-plus" }, + { name = "protobuf" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/81/56/d70d66ed1b5ab5f6c27bf80ec889585ad8f865ff32acbafd3b2ef0bfb5d0/google_api_core-2.24.0.tar.gz", hash = "sha256:e255640547a597a4da010876d333208ddac417d60add22b6851a0c66a831fcaf", size = 162647 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a1/76/65b8b94e74bf1b6d1cc38d916089670c4da5029d25762441d8c5c19e51dd/google_api_core-2.24.0-py3-none-any.whl", hash = "sha256:10d82ac0fca69c82a25b3efdeefccf6f28e02ebb97925a8cce8edbfe379929d9", size = 158576 }, +] + +[[package]] +name = "google-apitools" +version = "0.5.32" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fasteners" }, + { name = "httplib2" }, + { name = "oauth2client" }, + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dc/eb/c26c36463a769a3a9f08847b9bf218cb629ca91877a911bbd6dcf37d9e62/google-apitools-0.5.32.tar.gz", hash = "sha256:c3763e52289f61e21c41d5531e20fbda9cc8484a088b8686fd460770db8bad13", size = 172810 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5e/cb/cb0311f2ec371c83d6510847476c665edc9cc97564a51923557bc8f0b680/google_apitools-0.5.32-py3-none-any.whl", hash = "sha256:b78f74116558e0476e19501b5b4b2ac7c93261a69c5449c861ea95cbc853c688", size = 135651 }, +] + +[[package]] +name = "google-auth" +version = "2.37.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cachetools" }, + { name = "pyasn1-modules" }, + { name = "rsa" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/46/af/b25763b9d35dfc2c6f9c3ec34d8d3f1ba760af3a7b7e8d5c5f0579522c45/google_auth-2.37.0.tar.gz", hash = "sha256:0054623abf1f9c83492c63d3f47e77f0a544caa3d40b2d98e099a611c2dd5d00", size = 268878 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8d/8d/4d5d5f9f500499f7bd4c93903b43e8d6976f3fc6f064637ded1a85d09b07/google_auth-2.37.0-py2.py3-none-any.whl", hash = "sha256:42664f18290a6be591be5329a96fe30184be1a1badb7292a7f686a9659de9ca0", size = 209829 }, +] + +[[package]] +name = "google-cloud-core" +version = "2.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-api-core" }, + { name = "google-auth" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b8/1f/9d1e0ba6919668608570418a9a51e47070ac15aeff64261fb092d8be94c0/google-cloud-core-2.4.1.tar.gz", hash = "sha256:9b7749272a812bde58fff28868d0c5e2f585b82f37e09a1f6ed2d4d10f134073", size = 35587 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5e/0f/2e2061e3fbcb9d535d5da3f58cc8de4947df1786fe6a1355960feb05a681/google_cloud_core-2.4.1-py2.py3-none-any.whl", hash = "sha256:a9e6a4422b9ac5c29f79a0ede9485473338e2ce78d91f2370c01e730eab22e61", size = 29233 }, +] + +[[package]] +name = "google-cloud-storage" +version = "2.19.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-api-core" }, + { name = "google-auth" }, + { name = "google-cloud-core" }, + { name = "google-crc32c" }, + { name = "google-resumable-media" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/36/76/4d965702e96bb67976e755bed9828fa50306dca003dbee08b67f41dd265e/google_cloud_storage-2.19.0.tar.gz", hash = "sha256:cd05e9e7191ba6cb68934d8eb76054d9be4562aa89dbc4236feee4d7d51342b2", size = 5535488 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d5/94/6db383d8ee1adf45dc6c73477152b82731fa4c4a46d9c1932cc8757e0fd4/google_cloud_storage-2.19.0-py2.py3-none-any.whl", hash = "sha256:aeb971b5c29cf8ab98445082cbfe7b161a1f48ed275822f59ed3f1524ea54fba", size = 131787 }, +] + +[[package]] +name = "google-crc32c" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/67/72/c3298da1a3773102359c5a78f20dae8925f5ea876e37354415f68594a6fb/google_crc32c-1.6.0.tar.gz", hash = "sha256:6eceb6ad197656a1ff49ebfbbfa870678c75be4344feb35ac1edf694309413dc", size = 14472 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7d/14/ab47972ac79b6e7b03c8be3a7ef44b530a60e69555668dbbf08fc5692a98/google_crc32c-1.6.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:f7a1fc29803712f80879b0806cb83ab24ce62fc8daf0569f2204a0cfd7f68ed4", size = 30267 }, + { url = "https://files.pythonhosted.org/packages/54/7d/738cb0d25ee55629e7d07da686decf03864a366e5e863091a97b7bd2b8aa/google_crc32c-1.6.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:40b05ab32a5067525670880eb5d169529089a26fe35dce8891127aeddc1950e8", size = 30112 }, + { url = "https://files.pythonhosted.org/packages/3e/6d/33ca50cbdeec09c31bb5dac277c90994edee975662a4c890bda7ffac90ef/google_crc32c-1.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9e4b426c3702f3cd23b933436487eb34e01e00327fac20c9aebb68ccf34117d", size = 32861 }, + { url = "https://files.pythonhosted.org/packages/67/1e/4870896fc81ec77b1b5ebae7fdd680d5a4d40e19a4b6d724032f996ca77a/google_crc32c-1.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51c4f54dd8c6dfeb58d1df5e4f7f97df8abf17a36626a217f169893d1d7f3e9f", size = 32490 }, + { url = "https://files.pythonhosted.org/packages/00/9c/f5f5af3ddaa7a639d915f8f58b09bbb8d1db90ecd0459b62cd430eb9a4b6/google_crc32c-1.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:bb8b3c75bd157010459b15222c3fd30577042a7060e29d42dabce449c087f2b3", size = 33446 }, + { url = "https://files.pythonhosted.org/packages/cf/41/65a91657d6a8123c6c12f9aac72127b6ac76dda9e2ba1834026a842eb77c/google_crc32c-1.6.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:ed767bf4ba90104c1216b68111613f0d5926fb3780660ea1198fc469af410e9d", size = 30268 }, + { url = "https://files.pythonhosted.org/packages/59/d0/ee743a267c7d5c4bb8bd865f7d4c039505f1c8a4b439df047fdc17be9769/google_crc32c-1.6.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:62f6d4a29fea082ac4a3c9be5e415218255cf11684ac6ef5488eea0c9132689b", size = 30113 }, + { url = "https://files.pythonhosted.org/packages/25/53/e5e449c368dd26ade5fb2bb209e046d4309ed0623be65b13f0ce026cb520/google_crc32c-1.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c87d98c7c4a69066fd31701c4e10d178a648c2cac3452e62c6b24dc51f9fcc00", size = 32995 }, + { url = "https://files.pythonhosted.org/packages/52/12/9bf6042d5b0ac8c25afed562fb78e51b0641474097e4139e858b45de40a5/google_crc32c-1.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd5e7d2445d1a958c266bfa5d04c39932dc54093fa391736dbfdb0f1929c1fb3", size = 32614 }, + { url = "https://files.pythonhosted.org/packages/76/29/fc20f5ec36eac1eea0d0b2de4118c774c5f59c513f2a8630d4db6991f3e0/google_crc32c-1.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:7aec8e88a3583515f9e0957fe4f5f6d8d4997e36d0f61624e70469771584c760", size = 33445 }, +] + +[[package]] +name = "google-resumable-media" +version = "2.7.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-crc32c" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/58/5a/0efdc02665dca14e0837b62c8a1a93132c264bd02054a15abb2218afe0ae/google_resumable_media-2.7.2.tar.gz", hash = "sha256:5280aed4629f2b60b847b0d42f9857fd4935c11af266744df33d8074cae92fe0", size = 2163099 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/82/35/b8d3baf8c46695858cb9d8835a53baa1eeb9906ddaf2f728a5f5b640fd1e/google_resumable_media-2.7.2-py2.py3-none-any.whl", hash = "sha256:3ce7551e9fe6d99e9a126101d2536612bb73486721951e9562fee0f90c6ababa", size = 81251 }, +] + +[[package]] +name = "googleapis-common-protos" +version = "1.66.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ff/a7/8e9cccdb1c49870de6faea2a2764fa23f627dd290633103540209f03524c/googleapis_common_protos-1.66.0.tar.gz", hash = "sha256:c3e7b33d15fdca5374cc0a7346dd92ffa847425cc4ea941d970f13680052ec8c", size = 114376 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/0f/c0713fb2b3d28af4b2fded3291df1c4d4f79a00d15c2374a9e010870016c/googleapis_common_protos-1.66.0-py2.py3-none-any.whl", hash = "sha256:d7abcd75fabb2e0ec9f74466401f6c119a0b498e27370e9be4c94cb7e382b8ed", size = 221682 }, +] + +[[package]] +name = "greenlet" +version = "3.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2f/ff/df5fede753cc10f6a5be0931204ea30c35fa2f2ea7a35b25bdaf4fe40e46/greenlet-3.1.1.tar.gz", hash = "sha256:4ce3ac6cdb6adf7946475d7ef31777c26d94bccc377e070a7986bd2d5c515467", size = 186022 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/28/62/1c2665558618553c42922ed47a4e6d6527e2fa3516a8256c2f431c5d0441/greenlet-3.1.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:e4d333e558953648ca09d64f13e6d8f0523fa705f51cae3f03b5983489958c70", size = 272479 }, + { url = "https://files.pythonhosted.org/packages/76/9d/421e2d5f07285b6e4e3a676b016ca781f63cfe4a0cd8eaecf3fd6f7a71ae/greenlet-3.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09fc016b73c94e98e29af67ab7b9a879c307c6731a2c9da0db5a7d9b7edd1159", size = 640404 }, + { url = "https://files.pythonhosted.org/packages/e5/de/6e05f5c59262a584e502dd3d261bbdd2c97ab5416cc9c0b91ea38932a901/greenlet-3.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d5e975ca70269d66d17dd995dafc06f1b06e8cb1ec1e9ed54c1d1e4a7c4cf26e", size = 652813 }, + { url = "https://files.pythonhosted.org/packages/49/93/d5f93c84241acdea15a8fd329362c2c71c79e1a507c3f142a5d67ea435ae/greenlet-3.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b2813dc3de8c1ee3f924e4d4227999285fd335d1bcc0d2be6dc3f1f6a318ec1", size = 648517 }, + { url = "https://files.pythonhosted.org/packages/15/85/72f77fc02d00470c86a5c982b8daafdf65d38aefbbe441cebff3bf7037fc/greenlet-3.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e347b3bfcf985a05e8c0b7d462ba6f15b1ee1c909e2dcad795e49e91b152c383", size = 647831 }, + { url = "https://files.pythonhosted.org/packages/f7/4b/1c9695aa24f808e156c8f4813f685d975ca73c000c2a5056c514c64980f6/greenlet-3.1.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e8f8c9cb53cdac7ba9793c276acd90168f416b9ce36799b9b885790f8ad6c0a", size = 602413 }, + { url = "https://files.pythonhosted.org/packages/76/70/ad6e5b31ef330f03b12559d19fda2606a522d3849cde46b24f223d6d1619/greenlet-3.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:62ee94988d6b4722ce0028644418d93a52429e977d742ca2ccbe1c4f4a792511", size = 1129619 }, + { url = "https://files.pythonhosted.org/packages/f4/fb/201e1b932e584066e0f0658b538e73c459b34d44b4bd4034f682423bc801/greenlet-3.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1776fd7f989fc6b8d8c8cb8da1f6b82c5814957264d1f6cf818d475ec2bf6395", size = 1155198 }, + { url = "https://files.pythonhosted.org/packages/12/da/b9ed5e310bb8b89661b80cbcd4db5a067903bbcd7fc854923f5ebb4144f0/greenlet-3.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:48ca08c771c268a768087b408658e216133aecd835c0ded47ce955381105ba39", size = 298930 }, + { url = "https://files.pythonhosted.org/packages/7d/ec/bad1ac26764d26aa1353216fcbfa4670050f66d445448aafa227f8b16e80/greenlet-3.1.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:4afe7ea89de619adc868e087b4d2359282058479d7cfb94970adf4b55284574d", size = 274260 }, + { url = "https://files.pythonhosted.org/packages/66/d4/c8c04958870f482459ab5956c2942c4ec35cac7fe245527f1039837c17a9/greenlet-3.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f406b22b7c9a9b4f8aa9d2ab13d6ae0ac3e85c9a809bd590ad53fed2bf70dc79", size = 649064 }, + { url = "https://files.pythonhosted.org/packages/51/41/467b12a8c7c1303d20abcca145db2be4e6cd50a951fa30af48b6ec607581/greenlet-3.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c3a701fe5a9695b238503ce5bbe8218e03c3bcccf7e204e455e7462d770268aa", size = 663420 }, + { url = "https://files.pythonhosted.org/packages/27/8f/2a93cd9b1e7107d5c7b3b7816eeadcac2ebcaf6d6513df9abaf0334777f6/greenlet-3.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2846930c65b47d70b9d178e89c7e1a69c95c1f68ea5aa0a58646b7a96df12441", size = 658035 }, + { url = "https://files.pythonhosted.org/packages/57/5c/7c6f50cb12be092e1dccb2599be5a942c3416dbcfb76efcf54b3f8be4d8d/greenlet-3.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99cfaa2110534e2cf3ba31a7abcac9d328d1d9f1b95beede58294a60348fba36", size = 660105 }, + { url = "https://files.pythonhosted.org/packages/f1/66/033e58a50fd9ec9df00a8671c74f1f3a320564c6415a4ed82a1c651654ba/greenlet-3.1.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1443279c19fca463fc33e65ef2a935a5b09bb90f978beab37729e1c3c6c25fe9", size = 613077 }, + { url = "https://files.pythonhosted.org/packages/19/c5/36384a06f748044d06bdd8776e231fadf92fc896bd12cb1c9f5a1bda9578/greenlet-3.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b7cede291382a78f7bb5f04a529cb18e068dd29e0fb27376074b6d0317bf4dd0", size = 1135975 }, + { url = "https://files.pythonhosted.org/packages/38/f9/c0a0eb61bdf808d23266ecf1d63309f0e1471f284300ce6dac0ae1231881/greenlet-3.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23f20bb60ae298d7d8656c6ec6db134bca379ecefadb0b19ce6f19d1f232a942", size = 1163955 }, + { url = "https://files.pythonhosted.org/packages/43/21/a5d9df1d21514883333fc86584c07c2b49ba7c602e670b174bd73cfc9c7f/greenlet-3.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:7124e16b4c55d417577c2077be379514321916d5790fa287c9ed6f23bd2ffd01", size = 299655 }, + { url = "https://files.pythonhosted.org/packages/f3/57/0db4940cd7bb461365ca8d6fd53e68254c9dbbcc2b452e69d0d41f10a85e/greenlet-3.1.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:05175c27cb459dcfc05d026c4232f9de8913ed006d42713cb8a5137bd49375f1", size = 272990 }, + { url = "https://files.pythonhosted.org/packages/1c/ec/423d113c9f74e5e402e175b157203e9102feeb7088cee844d735b28ef963/greenlet-3.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:935e943ec47c4afab8965954bf49bfa639c05d4ccf9ef6e924188f762145c0ff", size = 649175 }, + { url = "https://files.pythonhosted.org/packages/a9/46/ddbd2db9ff209186b7b7c621d1432e2f21714adc988703dbdd0e65155c77/greenlet-3.1.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:667a9706c970cb552ede35aee17339a18e8f2a87a51fba2ed39ceeeb1004798a", size = 663425 }, + { url = "https://files.pythonhosted.org/packages/bc/f9/9c82d6b2b04aa37e38e74f0c429aece5eeb02bab6e3b98e7db89b23d94c6/greenlet-3.1.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b8a678974d1f3aa55f6cc34dc480169d58f2e6d8958895d68845fa4ab566509e", size = 657736 }, + { url = "https://files.pythonhosted.org/packages/d9/42/b87bc2a81e3a62c3de2b0d550bf91a86939442b7ff85abb94eec3fc0e6aa/greenlet-3.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efc0f674aa41b92da8c49e0346318c6075d734994c3c4e4430b1c3f853e498e4", size = 660347 }, + { url = "https://files.pythonhosted.org/packages/37/fa/71599c3fd06336cdc3eac52e6871cfebab4d9d70674a9a9e7a482c318e99/greenlet-3.1.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0153404a4bb921f0ff1abeb5ce8a5131da56b953eda6e14b88dc6bbc04d2049e", size = 615583 }, + { url = "https://files.pythonhosted.org/packages/4e/96/e9ef85de031703ee7a4483489b40cf307f93c1824a02e903106f2ea315fe/greenlet-3.1.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:275f72decf9932639c1c6dd1013a1bc266438eb32710016a1c742df5da6e60a1", size = 1133039 }, + { url = "https://files.pythonhosted.org/packages/87/76/b2b6362accd69f2d1889db61a18c94bc743e961e3cab344c2effaa4b4a25/greenlet-3.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c4aab7f6381f38a4b42f269057aee279ab0fc7bf2e929e3d4abfae97b682a12c", size = 1160716 }, + { url = "https://files.pythonhosted.org/packages/1f/1b/54336d876186920e185066d8c3024ad55f21d7cc3683c856127ddb7b13ce/greenlet-3.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:b42703b1cf69f2aa1df7d1030b9d77d3e584a70755674d60e710f0af570f3761", size = 299490 }, + { url = "https://files.pythonhosted.org/packages/5f/17/bea55bf36990e1638a2af5ba10c1640273ef20f627962cf97107f1e5d637/greenlet-3.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1695e76146579f8c06c1509c7ce4dfe0706f49c6831a817ac04eebb2fd02011", size = 643731 }, + { url = "https://files.pythonhosted.org/packages/78/d2/aa3d2157f9ab742a08e0fd8f77d4699f37c22adfbfeb0c610a186b5f75e0/greenlet-3.1.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7876452af029456b3f3549b696bb36a06db7c90747740c5302f74a9e9fa14b13", size = 649304 }, + { url = "https://files.pythonhosted.org/packages/f1/8e/d0aeffe69e53ccff5a28fa86f07ad1d2d2d6537a9506229431a2a02e2f15/greenlet-3.1.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ead44c85f8ab905852d3de8d86f6f8baf77109f9da589cb4fa142bd3b57b475", size = 646537 }, + { url = "https://files.pythonhosted.org/packages/05/79/e15408220bbb989469c8871062c97c6c9136770657ba779711b90870d867/greenlet-3.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8320f64b777d00dd7ccdade271eaf0cad6636343293a25074cc5566160e4de7b", size = 642506 }, + { url = "https://files.pythonhosted.org/packages/18/87/470e01a940307796f1d25f8167b551a968540fbe0551c0ebb853cb527dd6/greenlet-3.1.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6510bf84a6b643dabba74d3049ead221257603a253d0a9873f55f6a59a65f822", size = 602753 }, + { url = "https://files.pythonhosted.org/packages/e2/72/576815ba674eddc3c25028238f74d7b8068902b3968cbe456771b166455e/greenlet-3.1.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:04b013dc07c96f83134b1e99888e7a79979f1a247e2a9f59697fa14b5862ed01", size = 1122731 }, + { url = "https://files.pythonhosted.org/packages/ac/38/08cc303ddddc4b3d7c628c3039a61a3aae36c241ed01393d00c2fd663473/greenlet-3.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:411f015496fec93c1c8cd4e5238da364e1da7a124bcb293f085bf2860c32c6f6", size = 1142112 }, +] + +[[package]] +name = "heapdict" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/9b/d8963ae7e388270b695f3b556b6dc9adb70ae9618fba09aa1e7b1886652d/HeapDict-1.0.1.tar.gz", hash = "sha256:8495f57b3e03d8e46d5f1b2cc62ca881aca392fd5cc048dc0aa2e1a6d23ecdb6", size = 4274 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b6/9d/cd4777dbcf3bef9d9627e0fe4bc43d2e294b1baeb01d0422399d5e9de319/HeapDict-1.0.1-py3-none-any.whl", hash = "sha256:6065f90933ab1bb7e50db403b90cab653c853690c5992e69294c2de2b253fc92", size = 3917 }, +] + +[[package]] +name = "hsluv" +version = "5.0.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ac/81/af16607fa045724e515579d312577261b436f36f419e7c677e7e88fcc943/hsluv-5.0.4.tar.gz", hash = "sha256:2281f946427a882010042844a38c7bbe9e0d0aaf9d46babe46366ed6f169b72e", size = 543090 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/96/36/5bddefea3d7adf22a64f9aa9701492f8a9fe6948223f5cf2602c22ec9be7/hsluv-5.0.4-py2.py3-none-any.whl", hash = "sha256:0138bd10038e2ee1b13eecae9a7d49d4ec8c320b1d7eb4f860832c792e3e4567", size = 5252 }, +] + +[[package]] +name = "httplib2" +version = "0.22.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyparsing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3d/ad/2371116b22d616c194aa25ec410c9c6c37f23599dcd590502b74db197584/httplib2-0.22.0.tar.gz", hash = "sha256:d7a10bc5ef5ab08322488bde8c726eeee5c8618723fdb399597ec58f3d82df81", size = 351116 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a8/6c/d2fbdaaa5959339d53ba38e94c123e4e84b8fbc4b84beb0e70d7c1608486/httplib2-0.22.0-py3-none-any.whl", hash = "sha256:14ae0a53c1ba8f3d37e9e27cf37eabb0fb9980f435ba405d546948b009dd64dc", size = 96854 }, +] + +[[package]] +name = "identify" +version = "2.6.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/49/a5/7de3053524ee006b91099968d7ecb2e0b420f7ae728094394c33e8a2a2b9/identify-2.6.4.tar.gz", hash = "sha256:285a7d27e397652e8cafe537a6cc97dd470a970f48fb2e9d979aa38eae5513ac", size = 99209 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/9d/52f036403ae86474804f699c0d084b4b071e333a390b20269bb8accc65e0/identify-2.6.4-py2.py3-none-any.whl", hash = "sha256:993b0f01b97e0568c179bb9196391ff391bfb88a99099dbf5ce392b68f42d0af", size = 99072 }, +] + +[[package]] +name = "idna" +version = "3.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, +] + +[[package]] +name = "imageio" +version = "2.36.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "pillow" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/70/aa/2e7a49259339e691ff2b477ae0696b1784a09313c5872700bbbdd00a3030/imageio-2.36.1.tar.gz", hash = "sha256:e4e1d231f47f9a9e16100b0f7ce1a86e8856fb4d1c0fa2c4365a316f1746be62", size = 389522 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/f9/f78e7f5ac8077c481bf6b43b8bc736605363034b3d5eb3ce8eb79f53f5f1/imageio-2.36.1-py3-none-any.whl", hash = "sha256:20abd2cae58e55ca1af8a8dcf43293336a59adf0391f1917bf8518633cfc2cdf", size = 315435 }, +] + +[[package]] +name = "imagesize" +version = "1.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a7/84/62473fb57d61e31fef6e36d64a179c8781605429fd927b5dd608c997be31/imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a", size = 1280026 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ff/62/85c4c919272577931d407be5ba5d71c20f0b616d31a0befe0ae45bb79abd/imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b", size = 8769 }, +] + +[[package]] +name = "importlib-metadata" +version = "8.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "zipp", marker = "python_full_version < '3.12'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cd/12/33e59336dca5be0c398a7482335911a33aa0e20776128f038019f1a95f1b/importlib_metadata-8.5.0.tar.gz", hash = "sha256:71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7", size = 55304 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/d9/a1e041c5e7caa9a05c925f4bdbdfb7f006d1f74996af53467bc394c97be7/importlib_metadata-8.5.0-py3-none-any.whl", hash = "sha256:45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b", size = 26514 }, +] + +[[package]] +name = "in-n-out" +version = "0.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/af/08/07edfac98a38ab0208557524cbdd94a296f565b0558417ccb2c03d14a6ea/in_n_out-0.2.1.tar.gz", hash = "sha256:43cde2b7de981d41a6d70618a2b7bd989481095922a53ead4dc75f2bbd5dffea", size = 26026 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/06/711a4d105ad3d01d3ef351a1039bb5cc517a57dbf377d7da9a0808e34c77/in_n_out-0.2.1-py3-none-any.whl", hash = "sha256:343e81edb27cf41ec946134a92964f408465abdf6a065c6c55fe96f53bc3c8b7", size = 19951 }, +] + +[[package]] +name = "inflection" +version = "0.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e1/7e/691d061b7329bc8d54edbf0ec22fbfb2afe61facb681f9aaa9bff7a27d04/inflection-0.5.1.tar.gz", hash = "sha256:1a29730d366e996aaacffb2f1f1cb9593dc38e2ddd30c91250c6dde09ea9b417", size = 15091 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/59/91/aa6bde563e0085a02a435aa99b49ef75b0a4b062635e606dab23ce18d720/inflection-0.5.1-py2.py3-none-any.whl", hash = "sha256:f38b2b640938a4f35ade69ac3d053042959b62a0f1076a5bbaa1b9526605a8a2", size = 9454 }, +] + +[[package]] +name = "iniconfig" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3", size = 4646 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374", size = 5892 }, +] + +[[package]] +name = "ipykernel" +version = "6.29.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "appnope", marker = "sys_platform == 'darwin'" }, + { name = "comm" }, + { name = "debugpy" }, + { name = "ipython" }, + { 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/e9/5c/67594cb0c7055dc50814b21731c22a601101ea3b1b50a9a1b090e11f5d0f/ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215", size = 163367 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/5c/368ae6c01c7628438358e6d337c19b05425727fbb221d2a3c4303c372f42/ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5", size = 117173 }, +] + +[[package]] +name = "ipython" +version = "8.30.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "decorator" }, + { name = "jedi" }, + { name = "matplotlib-inline" }, + { name = "pexpect", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "prompt-toolkit" }, + { name = "pygments" }, + { name = "stack-data" }, + { name = "traitlets" }, + { name = "typing-extensions", marker = "python_full_version < '3.12'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d8/8b/710af065ab8ed05649afa5bd1e07401637c9ec9fb7cfda9eac7e91e9fbd4/ipython-8.30.0.tar.gz", hash = "sha256:cb0a405a306d2995a5cbb9901894d240784a9f341394c6ba3f4fe8c6eb89ff6e", size = 5592205 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/f3/1332ba2f682b07b304ad34cad2f003adcfeb349486103f4b632335074a7c/ipython-8.30.0-py3-none-any.whl", hash = "sha256:85ec56a7e20f6c38fce7727dcca699ae4ffc85985aa7b23635a8008f918ae321", size = 820765 }, +] + +[[package]] +name = "itsdangerous" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9c/cb/8ac0172223afbccb63986cc25049b154ecfb5e85932587206f42317be31d/itsdangerous-2.2.0.tar.gz", hash = "sha256:e0050c0b7da1eea53ffaf149c0cfbb5c6e2e2b69c4bef22c81fa6eb73e5f6173", size = 54410 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/96/92447566d16df59b2a776c0fb82dbc4d9e07cd95062562af01e408583fc4/itsdangerous-2.2.0-py3-none-any.whl", hash = "sha256:c6242fc49e35958c8b15141343aa660db5fc54d4f13a1db01a3f5891b98700ef", size = 16234 }, +] + +[[package]] +name = "jedi" +version = "0.19.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "parso" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", size = 1231287 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278 }, +] + +[[package]] +name = "jinja2" +version = "3.1.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ed/55/39036716d19cab0747a5020fc7e907f362fbf48c984b14e62127f7e68e5d/jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369", size = 240245 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/31/80/3a54838c3fb461f6fec263ebf3a3a41771bd05190238de3486aae8540c36/jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d", size = 133271 }, +] + +[[package]] +name = "jmespath" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/00/2a/e867e8531cf3e36b41201936b7fa7ba7b5702dbef42922193f05c8976cd6/jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe", size = 25843 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/31/b4/b9b800c45527aadd64d5b442f9b932b00648617eb5d63d2c7a6587b7cafc/jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980", size = 20256 }, +] + +[[package]] +name = "json5" +version = "0.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/85/3d/bbe62f3d0c05a689c711cff57b2e3ac3d3e526380adb7c781989f075115c/json5-0.10.0.tar.gz", hash = "sha256:e66941c8f0a02026943c52c2eb34ebeb2a6f819a0be05920a6f5243cd30fd559", size = 48202 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/aa/42/797895b952b682c3dafe23b1834507ee7f02f4d6299b65aaa61425763278/json5-0.10.0-py3-none-any.whl", hash = "sha256:19b23410220a7271e8377f81ba8aacba2fdd56947fbb137ee5977cbe1f5e8dfa", size = 34049 }, +] + +[[package]] +name = "jsonschema" +version = "4.23.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "jsonschema-specifications" }, + { name = "referencing" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/38/2e/03362ee4034a4c917f697890ccd4aec0800ccf9ded7f511971c75451deec/jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4", size = 325778 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/4a/4f9dbeb84e8850557c02365a0eee0649abe5eb1d84af92a25731c6c0f922/jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566", size = 88462 }, +] + +[[package]] +name = "jsonschema-specifications" +version = "2024.10.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "referencing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/10/db/58f950c996c793472e336ff3655b13fbcf1e3b359dcf52dcf3ed3b52c352/jsonschema_specifications-2024.10.1.tar.gz", hash = "sha256:0f38b83639958ce1152d02a7f062902c41c8fd20d558b0c34344292d417ae272", size = 15561 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/0f/8910b19ac0670a0f80ce1008e5e751c4a57e14d2c4c13a482aa6079fa9d6/jsonschema_specifications-2024.10.1-py3-none-any.whl", hash = "sha256:a09a0680616357d9a0ecf05c12ad234479f549239d0f5b55f3deea67475da9bf", size = 18459 }, +] + +[[package]] +name = "jupyter-client" +version = "8.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-core" }, + { name = "python-dateutil" }, + { name = "pyzmq" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/71/22/bf9f12fdaeae18019a468b68952a60fe6dbab5d67cd2a103cac7659b41ca/jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419", size = 342019 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105 }, +] + +[[package]] +name = "jupyter-core" +version = "5.7.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "platformdirs" }, + { name = "pywin32", marker = "platform_python_implementation != 'PyPy' and sys_platform == 'win32'" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/00/11/b56381fa6c3f4cc5d2cf54a7dbf98ad9aa0b339ef7a601d6053538b079a7/jupyter_core-5.7.2.tar.gz", hash = "sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9", size = 87629 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c9/fb/108ecd1fe961941959ad0ee4e12ee7b8b1477247f30b1fdfd83ceaf017f0/jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409", size = 28965 }, +] + +[[package]] +name = "kiwisolver" +version = "1.4.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/85/4d/2255e1c76304cbd60b48cee302b66d1dde4468dc5b1160e4b7cb43778f2a/kiwisolver-1.4.7.tar.gz", hash = "sha256:9893ff81bd7107f7b685d3017cc6583daadb4fc26e4a888350df530e41980a60", size = 97286 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/44/77429fa0a58f941d6e1c58da9efe08597d2e86bf2b2cce6626834f49d07b/kiwisolver-1.4.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d2b0e12a42fb4e72d509fc994713d099cbb15ebf1103545e8a45f14da2dfca54", size = 122442 }, + { url = "https://files.pythonhosted.org/packages/e5/20/8c75caed8f2462d63c7fd65e16c832b8f76cda331ac9e615e914ee80bac9/kiwisolver-1.4.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2a8781ac3edc42ea4b90bc23e7d37b665d89423818e26eb6df90698aa2287c95", size = 65762 }, + { url = "https://files.pythonhosted.org/packages/f4/98/fe010f15dc7230f45bc4cf367b012d651367fd203caaa992fd1f5963560e/kiwisolver-1.4.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:46707a10836894b559e04b0fd143e343945c97fd170d69a2d26d640b4e297935", size = 64319 }, + { url = "https://files.pythonhosted.org/packages/8b/1b/b5d618f4e58c0675654c1e5051bcf42c776703edb21c02b8c74135541f60/kiwisolver-1.4.7-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef97b8df011141c9b0f6caf23b29379f87dd13183c978a30a3c546d2c47314cb", size = 1334260 }, + { url = "https://files.pythonhosted.org/packages/b8/01/946852b13057a162a8c32c4c8d2e9ed79f0bb5d86569a40c0b5fb103e373/kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ab58c12a2cd0fc769089e6d38466c46d7f76aced0a1f54c77652446733d2d02", size = 1426589 }, + { url = "https://files.pythonhosted.org/packages/70/d1/c9f96df26b459e15cf8a965304e6e6f4eb291e0f7a9460b4ad97b047561e/kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:803b8e1459341c1bb56d1c5c010406d5edec8a0713a0945851290a7930679b51", size = 1541080 }, + { url = "https://files.pythonhosted.org/packages/d3/73/2686990eb8b02d05f3de759d6a23a4ee7d491e659007dd4c075fede4b5d0/kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f9a9e8a507420fe35992ee9ecb302dab68550dedc0da9e2880dd88071c5fb052", size = 1470049 }, + { url = "https://files.pythonhosted.org/packages/a7/4b/2db7af3ed3af7c35f388d5f53c28e155cd402a55432d800c543dc6deb731/kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18077b53dc3bb490e330669a99920c5e6a496889ae8c63b58fbc57c3d7f33a18", size = 1426376 }, + { url = "https://files.pythonhosted.org/packages/05/83/2857317d04ea46dc5d115f0df7e676997bbd968ced8e2bd6f7f19cfc8d7f/kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6af936f79086a89b3680a280c47ea90b4df7047b5bdf3aa5c524bbedddb9e545", size = 2222231 }, + { url = "https://files.pythonhosted.org/packages/0d/b5/866f86f5897cd4ab6d25d22e403404766a123f138bd6a02ecb2cdde52c18/kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:3abc5b19d24af4b77d1598a585b8a719beb8569a71568b66f4ebe1fb0449460b", size = 2368634 }, + { url = "https://files.pythonhosted.org/packages/c1/ee/73de8385403faba55f782a41260210528fe3273d0cddcf6d51648202d6d0/kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:933d4de052939d90afbe6e9d5273ae05fb836cc86c15b686edd4b3560cc0ee36", size = 2329024 }, + { url = "https://files.pythonhosted.org/packages/a1/e7/cd101d8cd2cdfaa42dc06c433df17c8303d31129c9fdd16c0ea37672af91/kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:65e720d2ab2b53f1f72fb5da5fb477455905ce2c88aaa671ff0a447c2c80e8e3", size = 2468484 }, + { url = "https://files.pythonhosted.org/packages/e1/72/84f09d45a10bc57a40bb58b81b99d8f22b58b2040c912b7eb97ebf625bf2/kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3bf1ed55088f214ba6427484c59553123fdd9b218a42bbc8c6496d6754b1e523", size = 2284078 }, + { url = "https://files.pythonhosted.org/packages/d2/d4/71828f32b956612dc36efd7be1788980cb1e66bfb3706e6dec9acad9b4f9/kiwisolver-1.4.7-cp311-cp311-win32.whl", hash = "sha256:4c00336b9dd5ad96d0a558fd18a8b6f711b7449acce4c157e7343ba92dd0cf3d", size = 46645 }, + { url = "https://files.pythonhosted.org/packages/a1/65/d43e9a20aabcf2e798ad1aff6c143ae3a42cf506754bcb6a7ed8259c8425/kiwisolver-1.4.7-cp311-cp311-win_amd64.whl", hash = "sha256:929e294c1ac1e9f615c62a4e4313ca1823ba37326c164ec720a803287c4c499b", size = 56022 }, + { url = "https://files.pythonhosted.org/packages/35/b3/9f75a2e06f1b4ca00b2b192bc2b739334127d27f1d0625627ff8479302ba/kiwisolver-1.4.7-cp311-cp311-win_arm64.whl", hash = "sha256:e33e8fbd440c917106b237ef1a2f1449dfbb9b6f6e1ce17c94cd6a1e0d438376", size = 48536 }, + { url = "https://files.pythonhosted.org/packages/97/9c/0a11c714cf8b6ef91001c8212c4ef207f772dd84540104952c45c1f0a249/kiwisolver-1.4.7-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:5360cc32706dab3931f738d3079652d20982511f7c0ac5711483e6eab08efff2", size = 121808 }, + { url = "https://files.pythonhosted.org/packages/f2/d8/0fe8c5f5d35878ddd135f44f2af0e4e1d379e1c7b0716f97cdcb88d4fd27/kiwisolver-1.4.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:942216596dc64ddb25adb215c3c783215b23626f8d84e8eff8d6d45c3f29f75a", size = 65531 }, + { url = "https://files.pythonhosted.org/packages/80/c5/57fa58276dfdfa612241d640a64ca2f76adc6ffcebdbd135b4ef60095098/kiwisolver-1.4.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:48b571ecd8bae15702e4f22d3ff6a0f13e54d3d00cd25216d5e7f658242065ee", size = 63894 }, + { url = "https://files.pythonhosted.org/packages/8b/e9/26d3edd4c4ad1c5b891d8747a4f81b1b0aba9fb9721de6600a4adc09773b/kiwisolver-1.4.7-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ad42ba922c67c5f219097b28fae965e10045ddf145d2928bfac2eb2e17673640", size = 1369296 }, + { url = "https://files.pythonhosted.org/packages/b6/67/3f4850b5e6cffb75ec40577ddf54f7b82b15269cc5097ff2e968ee32ea7d/kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:612a10bdae23404a72941a0fc8fa2660c6ea1217c4ce0dbcab8a8f6543ea9e7f", size = 1461450 }, + { url = "https://files.pythonhosted.org/packages/52/be/86cbb9c9a315e98a8dc6b1d23c43cffd91d97d49318854f9c37b0e41cd68/kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9e838bba3a3bac0fe06d849d29772eb1afb9745a59710762e4ba3f4cb8424483", size = 1579168 }, + { url = "https://files.pythonhosted.org/packages/0f/00/65061acf64bd5fd34c1f4ae53f20b43b0a017a541f242a60b135b9d1e301/kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:22f499f6157236c19f4bbbd472fa55b063db77a16cd74d49afe28992dff8c258", size = 1507308 }, + { url = "https://files.pythonhosted.org/packages/21/e4/c0b6746fd2eb62fe702118b3ca0cb384ce95e1261cfada58ff693aeec08a/kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693902d433cf585133699972b6d7c42a8b9f8f826ebcaf0132ff55200afc599e", size = 1464186 }, + { url = "https://files.pythonhosted.org/packages/0a/0f/529d0a9fffb4d514f2782c829b0b4b371f7f441d61aa55f1de1c614c4ef3/kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4e77f2126c3e0b0d055f44513ed349038ac180371ed9b52fe96a32aa071a5107", size = 2247877 }, + { url = "https://files.pythonhosted.org/packages/d1/e1/66603ad779258843036d45adcbe1af0d1a889a07af4635f8b4ec7dccda35/kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:657a05857bda581c3656bfc3b20e353c232e9193eb167766ad2dc58b56504948", size = 2404204 }, + { url = "https://files.pythonhosted.org/packages/8d/61/de5fb1ca7ad1f9ab7970e340a5b833d735df24689047de6ae71ab9d8d0e7/kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4bfa75a048c056a411f9705856abfc872558e33c055d80af6a380e3658766038", size = 2352461 }, + { url = "https://files.pythonhosted.org/packages/ba/d2/0edc00a852e369827f7e05fd008275f550353f1f9bcd55db9363d779fc63/kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:34ea1de54beef1c104422d210c47c7d2a4999bdecf42c7b5718fbe59a4cac383", size = 2501358 }, + { url = "https://files.pythonhosted.org/packages/84/15/adc15a483506aec6986c01fb7f237c3aec4d9ed4ac10b756e98a76835933/kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:90da3b5f694b85231cf93586dad5e90e2d71b9428f9aad96952c99055582f520", size = 2314119 }, + { url = "https://files.pythonhosted.org/packages/36/08/3a5bb2c53c89660863a5aa1ee236912269f2af8762af04a2e11df851d7b2/kiwisolver-1.4.7-cp312-cp312-win32.whl", hash = "sha256:18e0cca3e008e17fe9b164b55735a325140a5a35faad8de92dd80265cd5eb80b", size = 46367 }, + { url = "https://files.pythonhosted.org/packages/19/93/c05f0a6d825c643779fc3c70876bff1ac221f0e31e6f701f0e9578690d70/kiwisolver-1.4.7-cp312-cp312-win_amd64.whl", hash = "sha256:58cb20602b18f86f83a5c87d3ee1c766a79c0d452f8def86d925e6c60fbf7bfb", size = 55884 }, + { url = "https://files.pythonhosted.org/packages/d2/f9/3828d8f21b6de4279f0667fb50a9f5215e6fe57d5ec0d61905914f5b6099/kiwisolver-1.4.7-cp312-cp312-win_arm64.whl", hash = "sha256:f5a8b53bdc0b3961f8b6125e198617c40aeed638b387913bf1ce78afb1b0be2a", size = 48528 }, + { url = "https://files.pythonhosted.org/packages/c4/06/7da99b04259b0f18b557a4effd1b9c901a747f7fdd84cf834ccf520cb0b2/kiwisolver-1.4.7-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2e6039dcbe79a8e0f044f1c39db1986a1b8071051efba3ee4d74f5b365f5226e", size = 121913 }, + { url = "https://files.pythonhosted.org/packages/97/f5/b8a370d1aa593c17882af0a6f6755aaecd643640c0ed72dcfd2eafc388b9/kiwisolver-1.4.7-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a1ecf0ac1c518487d9d23b1cd7139a6a65bc460cd101ab01f1be82ecf09794b6", size = 65627 }, + { url = "https://files.pythonhosted.org/packages/2a/fc/6c0374f7503522539e2d4d1b497f5ebad3f8ed07ab51aed2af988dd0fb65/kiwisolver-1.4.7-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7ab9ccab2b5bd5702ab0803676a580fffa2aa178c2badc5557a84cc943fcf750", size = 63888 }, + { url = "https://files.pythonhosted.org/packages/bf/3e/0b7172793d0f41cae5c923492da89a2ffcd1adf764c16159ca047463ebd3/kiwisolver-1.4.7-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f816dd2277f8d63d79f9c8473a79fe54047bc0467754962840782c575522224d", size = 1369145 }, + { url = "https://files.pythonhosted.org/packages/77/92/47d050d6f6aced2d634258123f2688fbfef8ded3c5baf2c79d94d91f1f58/kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf8bcc23ceb5a1b624572a1623b9f79d2c3b337c8c455405ef231933a10da379", size = 1461448 }, + { url = "https://files.pythonhosted.org/packages/9c/1b/8f80b18e20b3b294546a1adb41701e79ae21915f4175f311a90d042301cf/kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dea0bf229319828467d7fca8c7c189780aa9ff679c94539eed7532ebe33ed37c", size = 1578750 }, + { url = "https://files.pythonhosted.org/packages/a4/fe/fe8e72f3be0a844f257cadd72689c0848c6d5c51bc1d60429e2d14ad776e/kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c06a4c7cf15ec739ce0e5971b26c93638730090add60e183530d70848ebdd34", size = 1507175 }, + { url = "https://files.pythonhosted.org/packages/39/fa/cdc0b6105d90eadc3bee525fecc9179e2b41e1ce0293caaf49cb631a6aaf/kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:913983ad2deb14e66d83c28b632fd35ba2b825031f2fa4ca29675e665dfecbe1", size = 1463963 }, + { url = "https://files.pythonhosted.org/packages/6e/5c/0c03c4e542720c6177d4f408e56d1c8315899db72d46261a4e15b8b33a41/kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5337ec7809bcd0f424c6b705ecf97941c46279cf5ed92311782c7c9c2026f07f", size = 2248220 }, + { url = "https://files.pythonhosted.org/packages/3d/ee/55ef86d5a574f4e767df7da3a3a7ff4954c996e12d4fbe9c408170cd7dcc/kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4c26ed10c4f6fa6ddb329a5120ba3b6db349ca192ae211e882970bfc9d91420b", size = 2404463 }, + { url = "https://files.pythonhosted.org/packages/0f/6d/73ad36170b4bff4825dc588acf4f3e6319cb97cd1fb3eb04d9faa6b6f212/kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c619b101e6de2222c1fcb0531e1b17bbffbe54294bfba43ea0d411d428618c27", size = 2352842 }, + { url = "https://files.pythonhosted.org/packages/0b/16/fa531ff9199d3b6473bb4d0f47416cdb08d556c03b8bc1cccf04e756b56d/kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:073a36c8273647592ea332e816e75ef8da5c303236ec0167196793eb1e34657a", size = 2501635 }, + { url = "https://files.pythonhosted.org/packages/78/7e/aa9422e78419db0cbe75fb86d8e72b433818f2e62e2e394992d23d23a583/kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:3ce6b2b0231bda412463e152fc18335ba32faf4e8c23a754ad50ffa70e4091ee", size = 2314556 }, + { url = "https://files.pythonhosted.org/packages/a8/b2/15f7f556df0a6e5b3772a1e076a9d9f6c538ce5f05bd590eca8106508e06/kiwisolver-1.4.7-cp313-cp313-win32.whl", hash = "sha256:f4c9aee212bc89d4e13f58be11a56cc8036cabad119259d12ace14b34476fd07", size = 46364 }, + { url = "https://files.pythonhosted.org/packages/0b/db/32e897e43a330eee8e4770bfd2737a9584b23e33587a0812b8e20aac38f7/kiwisolver-1.4.7-cp313-cp313-win_amd64.whl", hash = "sha256:8a3ec5aa8e38fc4c8af308917ce12c536f1c88452ce554027e55b22cbbfbff76", size = 55887 }, + { url = "https://files.pythonhosted.org/packages/c8/a4/df2bdca5270ca85fd25253049eb6708d4127be2ed0e5c2650217450b59e9/kiwisolver-1.4.7-cp313-cp313-win_arm64.whl", hash = "sha256:76c8094ac20ec259471ac53e774623eb62e6e1f56cd8690c67ce6ce4fcb05650", size = 48530 }, +] + +[[package]] +name = "lazy-loader" +version = "0.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6f/6b/c875b30a1ba490860c93da4cabf479e03f584eba06fe5963f6f6644653d8/lazy_loader-0.4.tar.gz", hash = "sha256:47c75182589b91a4e1a85a136c074285a5ad4d9f39c63e0d7fb76391c4574cd1", size = 15431 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/83/60/d497a310bde3f01cb805196ac61b7ad6dc5dcf8dce66634dc34364b20b4f/lazy_loader-0.4-py3-none-any.whl", hash = "sha256:342aa8e14d543a154047afb4ba8ef17f5563baad3fc610d7b15b213b0f119efc", size = 12097 }, +] + +[[package]] +name = "llvmlite" +version = "0.43.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9f/3d/f513755f285db51ab363a53e898b85562e950f79a2e6767a364530c2f645/llvmlite-0.43.0.tar.gz", hash = "sha256:ae2b5b5c3ef67354824fb75517c8db5fbe93bc02cd9671f3c62271626bc041d5", size = 157069 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/8c/de3276d773ab6ce3ad676df5fab5aac19696b2956319d65d7dd88fb10f19/llvmlite-0.43.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3e8d0618cb9bfe40ac38a9633f2493d4d4e9fcc2f438d39a4e854f39cc0f5f98", size = 31064409 }, + { url = "https://files.pythonhosted.org/packages/ee/e1/38deed89ced4cf378c61e232265cfe933ccde56ae83c901aa68b477d14b1/llvmlite-0.43.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0a9a1a39d4bf3517f2af9d23d479b4175ead205c592ceeb8b89af48a327ea57", size = 28793149 }, + { url = "https://files.pythonhosted.org/packages/2f/b2/4429433eb2dc8379e2cb582502dca074c23837f8fd009907f78a24de4c25/llvmlite-0.43.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1da416ab53e4f7f3bc8d4eeba36d801cc1894b9fbfbf2022b29b6bad34a7df2", size = 42857277 }, + { url = "https://files.pythonhosted.org/packages/6b/99/5d00a7d671b1ba1751fc9f19d3b36f3300774c6eebe2bcdb5f6191763eb4/llvmlite-0.43.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:977525a1e5f4059316b183fb4fd34fa858c9eade31f165427a3977c95e3ee749", size = 43871781 }, + { url = "https://files.pythonhosted.org/packages/20/ab/ed5ed3688c6ba4f0b8d789da19fd8e30a9cf7fc5852effe311bc5aefe73e/llvmlite-0.43.0-cp311-cp311-win_amd64.whl", hash = "sha256:d5bd550001d26450bd90777736c69d68c487d17bf371438f975229b2b8241a91", size = 28107433 }, + { url = "https://files.pythonhosted.org/packages/0b/67/9443509e5d2b6d8587bae3ede5598fa8bd586b1c7701696663ea8af15b5b/llvmlite-0.43.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f99b600aa7f65235a5a05d0b9a9f31150c390f31261f2a0ba678e26823ec38f7", size = 31064409 }, + { url = "https://files.pythonhosted.org/packages/a2/9c/24139d3712d2d352e300c39c0e00d167472c08b3bd350c3c33d72c88ff8d/llvmlite-0.43.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:35d80d61d0cda2d767f72de99450766250560399edc309da16937b93d3b676e7", size = 28793145 }, + { url = "https://files.pythonhosted.org/packages/bf/f1/4c205a48488e574ee9f6505d50e84370a978c90f08dab41a42d8f2c576b6/llvmlite-0.43.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eccce86bba940bae0d8d48ed925f21dbb813519169246e2ab292b5092aba121f", size = 42857276 }, + { url = "https://files.pythonhosted.org/packages/00/5f/323c4d56e8401c50185fd0e875fcf06b71bf825a863699be1eb10aa2a9cb/llvmlite-0.43.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:df6509e1507ca0760787a199d19439cc887bfd82226f5af746d6977bd9f66844", size = 43871781 }, + { url = "https://files.pythonhosted.org/packages/c6/94/dea10e263655ce78d777e78d904903faae39d1fc440762be4a9dc46bed49/llvmlite-0.43.0-cp312-cp312-win_amd64.whl", hash = "sha256:7a2872ee80dcf6b5dbdc838763d26554c2a18aa833d31a2635bff16aafefb9c9", size = 28107442 }, +] + +[[package]] +name = "locket" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2f/83/97b29fe05cb6ae28d2dbd30b81e2e402a3eed5f460c26e9eaa5895ceacf5/locket-1.0.0.tar.gz", hash = "sha256:5c0d4c052a8bbbf750e056a8e65ccd309086f4f0f18a2eac306a8dfa4112a632", size = 4350 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/db/bc/83e112abc66cd466c6b83f99118035867cecd41802f8d044638aa78a106e/locket-1.0.0-py2.py3-none-any.whl", hash = "sha256:b6c819a722f7b6bd955b80781788e4a66a55628b858d347536b7e81325a3a5e3", size = 4398 }, +] + +[[package]] +name = "magicgui" +version = "0.10.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "docstring-parser" }, + { name = "psygnal" }, + { name = "qtpy" }, + { name = "superqt", extra = ["iconify"] }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ce/44/405f7028b00d94e29ddbaff00f2674e548d3bff8d343fbf7500bd77aa071/magicgui-0.10.0.tar.gz", hash = "sha256:56dbe28afc526809e09932cd6caad8fc1a8305fe66c8feca16f797a04b5aee7c", size = 20942460 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b6/42/7e4f03201dfc10b4a8d4d94d183c878d7d0d4f2eee173e95294c71828014/magicgui-0.10.0-py3-none-any.whl", hash = "sha256:836276d61b0d9752eb8a215ff9f140c9c07ed5659b6e2a3c78df1cc96399aecd", size = 126758 }, +] + +[[package]] +name = "markdown" +version = "3.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/28/3af612670f82f4c056911fbbbb42760255801b3068c48de792d354ff4472/markdown-3.7.tar.gz", hash = "sha256:2ae2471477cfd02dbbf038d5d9bc226d40def84b4fe2986e49b59b6b472bbed2", size = 357086 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/08/83871f3c50fc983b88547c196d11cf8c3340e37c32d2e9d6152abe2c61f7/Markdown-3.7-py3-none-any.whl", hash = "sha256:7eb6df5690b81a1d7942992c97fad2938e956e79df20cbc6186e9c3a77b1c803", size = 106349 }, +] + +[[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 } +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 }, +] + +[[package]] +name = "markupsafe" +version = "3.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/28/bbf83e3f76936960b850435576dd5e67034e200469571be53f69174a2dfd/MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d", size = 14353 }, + { url = "https://files.pythonhosted.org/packages/6c/30/316d194b093cde57d448a4c3209f22e3046c5bb2fb0820b118292b334be7/MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93", size = 12392 }, + { url = "https://files.pythonhosted.org/packages/f2/96/9cdafba8445d3a53cae530aaf83c38ec64c4d5427d975c974084af5bc5d2/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832", size = 23984 }, + { url = "https://files.pythonhosted.org/packages/f1/a4/aefb044a2cd8d7334c8a47d3fb2c9f328ac48cb349468cc31c20b539305f/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84", size = 23120 }, + { url = "https://files.pythonhosted.org/packages/8d/21/5e4851379f88f3fad1de30361db501300d4f07bcad047d3cb0449fc51f8c/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca", size = 23032 }, + { url = "https://files.pythonhosted.org/packages/00/7b/e92c64e079b2d0d7ddf69899c98842f3f9a60a1ae72657c89ce2655c999d/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798", size = 24057 }, + { url = "https://files.pythonhosted.org/packages/f9/ac/46f960ca323037caa0a10662ef97d0a4728e890334fc156b9f9e52bcc4ca/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e", size = 23359 }, + { url = "https://files.pythonhosted.org/packages/69/84/83439e16197337b8b14b6a5b9c2105fff81d42c2a7c5b58ac7b62ee2c3b1/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4", size = 23306 }, + { url = "https://files.pythonhosted.org/packages/9a/34/a15aa69f01e2181ed8d2b685c0d2f6655d5cca2c4db0ddea775e631918cd/MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d", size = 15094 }, + { url = "https://files.pythonhosted.org/packages/da/b8/3a3bd761922d416f3dc5d00bfbed11f66b1ab89a0c2b6e887240a30b0f6b/MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b", size = 15521 }, + { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274 }, + { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348 }, + { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149 }, + { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118 }, + { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993 }, + { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178 }, + { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319 }, + { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352 }, + { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097 }, + { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601 }, + { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274 }, + { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352 }, + { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122 }, + { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085 }, + { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978 }, + { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208 }, + { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357 }, + { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344 }, + { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101 }, + { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603 }, + { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510 }, + { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486 }, + { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480 }, + { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914 }, + { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796 }, + { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473 }, + { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114 }, + { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098 }, + { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208 }, + { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739 }, +] + +[[package]] +name = "matplotlib" +version = "3.10.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "contourpy" }, + { name = "cycler" }, + { name = "fonttools" }, + { name = "kiwisolver" }, + { name = "numpy" }, + { name = "packaging" }, + { name = "pillow" }, + { name = "pyparsing" }, + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/68/dd/fa2e1a45fce2d09f4aea3cee169760e672c8262325aa5796c49d543dc7e6/matplotlib-3.10.0.tar.gz", hash = "sha256:b886d02a581b96704c9d1ffe55709e49b4d2d52709ccebc4be42db856e511278", size = 36686418 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/f1/e37f6c84d252867d7ddc418fff70fc661cfd363179263b08e52e8b748e30/matplotlib-3.10.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:fd44fc75522f58612ec4a33958a7e5552562b7705b42ef1b4f8c0818e304a363", size = 8171677 }, + { url = "https://files.pythonhosted.org/packages/c7/8b/92e9da1f28310a1f6572b5c55097b0c0ceb5e27486d85fb73b54f5a9b939/matplotlib-3.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c58a9622d5dbeb668f407f35f4e6bfac34bb9ecdcc81680c04d0258169747997", size = 8044945 }, + { url = "https://files.pythonhosted.org/packages/c5/cb/49e83f0fd066937a5bd3bc5c5d63093703f3637b2824df8d856e0558beef/matplotlib-3.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:845d96568ec873be63f25fa80e9e7fae4be854a66a7e2f0c8ccc99e94a8bd4ef", size = 8458269 }, + { url = "https://files.pythonhosted.org/packages/b2/7d/2d873209536b9ee17340754118a2a17988bc18981b5b56e6715ee07373ac/matplotlib-3.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5439f4c5a3e2e8eab18e2f8c3ef929772fd5641876db71f08127eed95ab64683", size = 8599369 }, + { url = "https://files.pythonhosted.org/packages/b8/03/57d6cbbe85c61fe4cbb7c94b54dce443d68c21961830833a1f34d056e5ea/matplotlib-3.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4673ff67a36152c48ddeaf1135e74ce0d4bce1bbf836ae40ed39c29edf7e2765", size = 9405992 }, + { url = "https://files.pythonhosted.org/packages/14/cf/e382598f98be11bf51dd0bc60eca44a517f6793e3dc8b9d53634a144620c/matplotlib-3.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:7e8632baebb058555ac0cde75db885c61f1212e47723d63921879806b40bec6a", size = 8034580 }, + { url = "https://files.pythonhosted.org/packages/44/c7/6b2d8cb7cc251d53c976799cacd3200add56351c175ba89ab9cbd7c1e68a/matplotlib-3.10.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4659665bc7c9b58f8c00317c3c2a299f7f258eeae5a5d56b4c64226fca2f7c59", size = 8172465 }, + { url = "https://files.pythonhosted.org/packages/42/2a/6d66d0fba41e13e9ca6512a0a51170f43e7e7ed3a8dfa036324100775612/matplotlib-3.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d44cb942af1693cced2604c33a9abcef6205601c445f6d0dc531d813af8a2f5a", size = 8043300 }, + { url = "https://files.pythonhosted.org/packages/90/60/2a60342b27b90a16bada939a85e29589902b41073f59668b904b15ea666c/matplotlib-3.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a994f29e968ca002b50982b27168addfd65f0105610b6be7fa515ca4b5307c95", size = 8448936 }, + { url = "https://files.pythonhosted.org/packages/a7/b2/d872fc3d753516870d520595ddd8ce4dd44fa797a240999f125f58521ad7/matplotlib-3.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b0558bae37f154fffda54d779a592bc97ca8b4701f1c710055b609a3bac44c8", size = 8594151 }, + { url = "https://files.pythonhosted.org/packages/f4/bd/b2f60cf7f57d014ab33e4f74602a2b5bdc657976db8196bbc022185f6f9c/matplotlib-3.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:503feb23bd8c8acc75541548a1d709c059b7184cde26314896e10a9f14df5f12", size = 9400347 }, + { url = "https://files.pythonhosted.org/packages/9f/6e/264673e64001b99d747aff5a288eca82826c024437a3694e19aed1decf46/matplotlib-3.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:c40ba2eb08b3f5de88152c2333c58cee7edcead0a2a0d60fcafa116b17117adc", size = 8039144 }, + { url = "https://files.pythonhosted.org/packages/72/11/1b2a094d95dcb6e6edd4a0b238177c439006c6b7a9fe8d31801237bf512f/matplotlib-3.10.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:96f2886f5c1e466f21cc41b70c5a0cd47bfa0015eb2d5793c88ebce658600e25", size = 8173073 }, + { url = "https://files.pythonhosted.org/packages/0d/c4/87b6ad2723070511a411ea719f9c70fde64605423b184face4e94986de9d/matplotlib-3.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:12eaf48463b472c3c0f8dbacdbf906e573013df81a0ab82f0616ea4b11281908", size = 8043892 }, + { url = "https://files.pythonhosted.org/packages/57/69/cb0812a136550b21361335e9ffb7d459bf6d13e03cb7b015555d5143d2d6/matplotlib-3.10.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2fbbabc82fde51391c4da5006f965e36d86d95f6ee83fb594b279564a4c5d0d2", size = 8450532 }, + { url = "https://files.pythonhosted.org/packages/ea/3a/bab9deb4fb199c05e9100f94d7f1c702f78d3241e6a71b784d2b88d7bebd/matplotlib-3.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad2e15300530c1a94c63cfa546e3b7864bd18ea2901317bae8bbf06a5ade6dcf", size = 8593905 }, + { url = "https://files.pythonhosted.org/packages/8b/66/742fd242f989adc1847ddf5f445815f73ad7c46aa3440690cc889cfa423c/matplotlib-3.10.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:3547d153d70233a8496859097ef0312212e2689cdf8d7ed764441c77604095ae", size = 9399609 }, + { url = "https://files.pythonhosted.org/packages/fa/d6/54cee7142cef7d910a324a7aedf335c0c147b03658b54d49ec48166f10a6/matplotlib-3.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:c55b20591ced744aa04e8c3e4b7543ea4d650b6c3c4b208c08a05b4010e8b442", size = 8039076 }, + { url = "https://files.pythonhosted.org/packages/43/14/815d072dc36e88753433bfd0385113405efb947e6895ff7b4d2e8614a33b/matplotlib-3.10.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:9ade1003376731a971e398cc4ef38bb83ee8caf0aee46ac6daa4b0506db1fd06", size = 8211000 }, + { url = "https://files.pythonhosted.org/packages/9a/76/34e75f364194ec352678adcb540964be6f35ec7d3d8c75ebcb17e6839359/matplotlib-3.10.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:95b710fea129c76d30be72c3b38f330269363fbc6e570a5dd43580487380b5ff", size = 8087707 }, + { url = "https://files.pythonhosted.org/packages/c3/2b/b6bc0dff6a72d333bc7df94a66e6ce662d224e43daa8ad8ae4eaa9a77f55/matplotlib-3.10.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cdbaf909887373c3e094b0318d7ff230b2ad9dcb64da7ade654182872ab2593", size = 8477384 }, + { url = "https://files.pythonhosted.org/packages/c2/2d/b5949fb2b76e9b47ab05e25a5f5f887c70de20d8b0cbc704a4e2ee71c786/matplotlib-3.10.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d907fddb39f923d011875452ff1eca29a9e7f21722b873e90db32e5d8ddff12e", size = 8610334 }, + { url = "https://files.pythonhosted.org/packages/d6/9a/6e3c799d5134d9af44b01c787e1360bee38cf51850506ea2e743a787700b/matplotlib-3.10.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:3b427392354d10975c1d0f4ee18aa5844640b512d5311ef32efd4dd7db106ede", size = 9406777 }, + { url = "https://files.pythonhosted.org/packages/0e/dd/e6ae97151e5ed648ab2ea48885bc33d39202b640eec7a2910e2c843f7ac0/matplotlib-3.10.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5fd41b0ec7ee45cd960a8e71aea7c946a28a0b8a4dcee47d2856b2af051f334c", size = 8109742 }, +] + +[[package]] +name = "matplotlib-inline" +version = "0.1.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/99/5b/a36a337438a14116b16480db471ad061c36c3694df7c2084a0da7ba538b7/matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90", size = 8159 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899 }, +] + +[[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 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 }, +] + +[[package]] +name = "microviewer" +version = "1.10.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/27/5d/1982330a297b7ea3c846aacd13f075b14ef0abeb8c0ab0b97b3540ae3738/microviewer-1.10.0.tar.gz", hash = "sha256:0b776b2919b8817b9ac51839e818e87915cd7e3b51ea10c8d01a61c471fb1df0", size = 1370323 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/61/dd/84ea06befba3b11b43d87ff56bbf2e088c3b5514d8a386596f7d10dc32d0/microviewer-1.10.0-py3-none-any.whl", hash = "sha256:aedf2898ea4d9d38159d7e2cc7d90b51c2c2cf3ada24eaaf333c08399f5ecb6c", size = 150454 }, +] + +[[package]] +name = "msgpack" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cb/d0/7555686ae7ff5731205df1012ede15dd9d927f6227ea151e901c7406af4f/msgpack-1.1.0.tar.gz", hash = "sha256:dd432ccc2c72b914e4cb77afce64aab761c1137cc698be3984eee260bcb2896e", size = 167260 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/5e/a4c7154ba65d93be91f2f1e55f90e76c5f91ccadc7efc4341e6f04c8647f/msgpack-1.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3d364a55082fb2a7416f6c63ae383fbd903adb5a6cf78c5b96cc6316dc1cedc7", size = 150803 }, + { url = "https://files.pythonhosted.org/packages/60/c2/687684164698f1d51c41778c838d854965dd284a4b9d3a44beba9265c931/msgpack-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:79ec007767b9b56860e0372085f8504db5d06bd6a327a335449508bbee9648fa", size = 84343 }, + { url = "https://files.pythonhosted.org/packages/42/ae/d3adea9bb4a1342763556078b5765e666f8fdf242e00f3f6657380920972/msgpack-1.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6ad622bf7756d5a497d5b6836e7fc3752e2dd6f4c648e24b1803f6048596f701", size = 81408 }, + { url = "https://files.pythonhosted.org/packages/dc/17/6313325a6ff40ce9c3207293aee3ba50104aed6c2c1559d20d09e5c1ff54/msgpack-1.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e59bca908d9ca0de3dc8684f21ebf9a690fe47b6be93236eb40b99af28b6ea6", size = 396096 }, + { url = "https://files.pythonhosted.org/packages/a8/a1/ad7b84b91ab5a324e707f4c9761633e357820b011a01e34ce658c1dda7cc/msgpack-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e1da8f11a3dd397f0a32c76165cf0c4eb95b31013a94f6ecc0b280c05c91b59", size = 403671 }, + { url = "https://files.pythonhosted.org/packages/bb/0b/fd5b7c0b308bbf1831df0ca04ec76fe2f5bf6319833646b0a4bd5e9dc76d/msgpack-1.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:452aff037287acb1d70a804ffd022b21fa2bb7c46bee884dbc864cc9024128a0", size = 387414 }, + { url = "https://files.pythonhosted.org/packages/f0/03/ff8233b7c6e9929a1f5da3c7860eccd847e2523ca2de0d8ef4878d354cfa/msgpack-1.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8da4bf6d54ceed70e8861f833f83ce0814a2b72102e890cbdfe4b34764cdd66e", size = 383759 }, + { url = "https://files.pythonhosted.org/packages/1f/1b/eb82e1fed5a16dddd9bc75f0854b6e2fe86c0259c4353666d7fab37d39f4/msgpack-1.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:41c991beebf175faf352fb940bf2af9ad1fb77fd25f38d9142053914947cdbf6", size = 394405 }, + { url = "https://files.pythonhosted.org/packages/90/2e/962c6004e373d54ecf33d695fb1402f99b51832631e37c49273cc564ffc5/msgpack-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a52a1f3a5af7ba1c9ace055b659189f6c669cf3657095b50f9602af3a3ba0fe5", size = 396041 }, + { url = "https://files.pythonhosted.org/packages/f8/20/6e03342f629474414860c48aeffcc2f7f50ddaf351d95f20c3f1c67399a8/msgpack-1.1.0-cp311-cp311-win32.whl", hash = "sha256:58638690ebd0a06427c5fe1a227bb6b8b9fdc2bd07701bec13c2335c82131a88", size = 68538 }, + { url = "https://files.pythonhosted.org/packages/aa/c4/5a582fc9a87991a3e6f6800e9bb2f3c82972912235eb9539954f3e9997c7/msgpack-1.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:fd2906780f25c8ed5d7b323379f6138524ba793428db5d0e9d226d3fa6aa1788", size = 74871 }, + { url = "https://files.pythonhosted.org/packages/e1/d6/716b7ca1dbde63290d2973d22bbef1b5032ca634c3ff4384a958ec3f093a/msgpack-1.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d46cf9e3705ea9485687aa4001a76e44748b609d260af21c4ceea7f2212a501d", size = 152421 }, + { url = "https://files.pythonhosted.org/packages/70/da/5312b067f6773429cec2f8f08b021c06af416bba340c912c2ec778539ed6/msgpack-1.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5dbad74103df937e1325cc4bfeaf57713be0b4f15e1c2da43ccdd836393e2ea2", size = 85277 }, + { url = "https://files.pythonhosted.org/packages/28/51/da7f3ae4462e8bb98af0d5bdf2707f1b8c65a0d4f496e46b6afb06cbc286/msgpack-1.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:58dfc47f8b102da61e8949708b3eafc3504509a5728f8b4ddef84bd9e16ad420", size = 82222 }, + { url = "https://files.pythonhosted.org/packages/33/af/dc95c4b2a49cff17ce47611ca9ba218198806cad7796c0b01d1e332c86bb/msgpack-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4676e5be1b472909b2ee6356ff425ebedf5142427842aa06b4dfd5117d1ca8a2", size = 392971 }, + { url = "https://files.pythonhosted.org/packages/f1/54/65af8de681fa8255402c80eda2a501ba467921d5a7a028c9c22a2c2eedb5/msgpack-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17fb65dd0bec285907f68b15734a993ad3fc94332b5bb21b0435846228de1f39", size = 401403 }, + { url = "https://files.pythonhosted.org/packages/97/8c/e333690777bd33919ab7024269dc3c41c76ef5137b211d776fbb404bfead/msgpack-1.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a51abd48c6d8ac89e0cfd4fe177c61481aca2d5e7ba42044fd218cfd8ea9899f", size = 385356 }, + { url = "https://files.pythonhosted.org/packages/57/52/406795ba478dc1c890559dd4e89280fa86506608a28ccf3a72fbf45df9f5/msgpack-1.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2137773500afa5494a61b1208619e3871f75f27b03bcfca7b3a7023284140247", size = 383028 }, + { url = "https://files.pythonhosted.org/packages/e7/69/053b6549bf90a3acadcd8232eae03e2fefc87f066a5b9fbb37e2e608859f/msgpack-1.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:398b713459fea610861c8a7b62a6fec1882759f308ae0795b5413ff6a160cf3c", size = 391100 }, + { url = "https://files.pythonhosted.org/packages/23/f0/d4101d4da054f04274995ddc4086c2715d9b93111eb9ed49686c0f7ccc8a/msgpack-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:06f5fd2f6bb2a7914922d935d3b8bb4a7fff3a9a91cfce6d06c13bc42bec975b", size = 394254 }, + { url = "https://files.pythonhosted.org/packages/1c/12/cf07458f35d0d775ff3a2dc5559fa2e1fcd06c46f1ef510e594ebefdca01/msgpack-1.1.0-cp312-cp312-win32.whl", hash = "sha256:ad33e8400e4ec17ba782f7b9cf868977d867ed784a1f5f2ab46e7ba53b6e1e1b", size = 69085 }, + { url = "https://files.pythonhosted.org/packages/73/80/2708a4641f7d553a63bc934a3eb7214806b5b39d200133ca7f7afb0a53e8/msgpack-1.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:115a7af8ee9e8cddc10f87636767857e7e3717b7a2e97379dc2054712693e90f", size = 75347 }, + { url = "https://files.pythonhosted.org/packages/c8/b0/380f5f639543a4ac413e969109978feb1f3c66e931068f91ab6ab0f8be00/msgpack-1.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:071603e2f0771c45ad9bc65719291c568d4edf120b44eb36324dcb02a13bfddf", size = 151142 }, + { url = "https://files.pythonhosted.org/packages/c8/ee/be57e9702400a6cb2606883d55b05784fada898dfc7fd12608ab1fdb054e/msgpack-1.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0f92a83b84e7c0749e3f12821949d79485971f087604178026085f60ce109330", size = 84523 }, + { url = "https://files.pythonhosted.org/packages/7e/3a/2919f63acca3c119565449681ad08a2f84b2171ddfcff1dba6959db2cceb/msgpack-1.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4a1964df7b81285d00a84da4e70cb1383f2e665e0f1f2a7027e683956d04b734", size = 81556 }, + { url = "https://files.pythonhosted.org/packages/7c/43/a11113d9e5c1498c145a8925768ea2d5fce7cbab15c99cda655aa09947ed/msgpack-1.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59caf6a4ed0d164055ccff8fe31eddc0ebc07cf7326a2aaa0dbf7a4001cd823e", size = 392105 }, + { url = "https://files.pythonhosted.org/packages/2d/7b/2c1d74ca6c94f70a1add74a8393a0138172207dc5de6fc6269483519d048/msgpack-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0907e1a7119b337971a689153665764adc34e89175f9a34793307d9def08e6ca", size = 399979 }, + { url = "https://files.pythonhosted.org/packages/82/8c/cf64ae518c7b8efc763ca1f1348a96f0e37150061e777a8ea5430b413a74/msgpack-1.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65553c9b6da8166e819a6aa90ad15288599b340f91d18f60b2061f402b9a4915", size = 383816 }, + { url = "https://files.pythonhosted.org/packages/69/86/a847ef7a0f5ef3fa94ae20f52a4cacf596a4e4a010197fbcc27744eb9a83/msgpack-1.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7a946a8992941fea80ed4beae6bff74ffd7ee129a90b4dd5cf9c476a30e9708d", size = 380973 }, + { url = "https://files.pythonhosted.org/packages/aa/90/c74cf6e1126faa93185d3b830ee97246ecc4fe12cf9d2d31318ee4246994/msgpack-1.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4b51405e36e075193bc051315dbf29168d6141ae2500ba8cd80a522964e31434", size = 387435 }, + { url = "https://files.pythonhosted.org/packages/7a/40/631c238f1f338eb09f4acb0f34ab5862c4e9d7eda11c1b685471a4c5ea37/msgpack-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b4c01941fd2ff87c2a934ee6055bda4ed353a7846b8d4f341c428109e9fcde8c", size = 399082 }, + { url = "https://files.pythonhosted.org/packages/e9/1b/fa8a952be252a1555ed39f97c06778e3aeb9123aa4cccc0fd2acd0b4e315/msgpack-1.1.0-cp313-cp313-win32.whl", hash = "sha256:7c9a35ce2c2573bada929e0b7b3576de647b0defbd25f5139dcdaba0ae35a4cc", size = 69037 }, + { url = "https://files.pythonhosted.org/packages/b6/bc/8bd826dd03e022153bfa1766dcdec4976d6c818865ed54223d71f07862b3/msgpack-1.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:bce7d9e614a04d0883af0b3d4d501171fbfca038f12c77fa838d9f198147a23f", size = 75140 }, +] + +[[package]] +name = "multidict" +version = "6.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/be/504b89a5e9ca731cd47487e91c469064f8ae5af93b7259758dcfc2b9c848/multidict-6.1.0.tar.gz", hash = "sha256:22ae2ebf9b0c69d206c003e2f6a914ea33f0a932d4aa16f236afc049d9958f4a", size = 64002 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/93/13/df3505a46d0cd08428e4c8169a196131d1b0c4b515c3649829258843dde6/multidict-6.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3efe2c2cb5763f2f1b275ad2bf7a287d3f7ebbef35648a9726e3b69284a4f3d6", size = 48570 }, + { url = "https://files.pythonhosted.org/packages/f0/e1/a215908bfae1343cdb72f805366592bdd60487b4232d039c437fe8f5013d/multidict-6.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7053d3b0353a8b9de430a4f4b4268ac9a4fb3481af37dfe49825bf45ca24156", size = 29316 }, + { url = "https://files.pythonhosted.org/packages/70/0f/6dc70ddf5d442702ed74f298d69977f904960b82368532c88e854b79f72b/multidict-6.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:27e5fc84ccef8dfaabb09d82b7d179c7cf1a3fbc8a966f8274fcb4ab2eb4cadb", size = 29640 }, + { url = "https://files.pythonhosted.org/packages/d8/6d/9c87b73a13d1cdea30b321ef4b3824449866bd7f7127eceed066ccb9b9ff/multidict-6.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e2b90b43e696f25c62656389d32236e049568b39320e2735d51f08fd362761b", size = 131067 }, + { url = "https://files.pythonhosted.org/packages/cc/1e/1b34154fef373371fd6c65125b3d42ff5f56c7ccc6bfff91b9b3c60ae9e0/multidict-6.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d83a047959d38a7ff552ff94be767b7fd79b831ad1cd9920662db05fec24fe72", size = 138507 }, + { url = "https://files.pythonhosted.org/packages/fb/e0/0bc6b2bac6e461822b5f575eae85da6aae76d0e2a79b6665d6206b8e2e48/multidict-6.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d1a9dd711d0877a1ece3d2e4fea11a8e75741ca21954c919406b44e7cf971304", size = 133905 }, + { url = "https://files.pythonhosted.org/packages/ba/af/73d13b918071ff9b2205fcf773d316e0f8fefb4ec65354bbcf0b10908cc6/multidict-6.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec2abea24d98246b94913b76a125e855eb5c434f7c46546046372fe60f666351", size = 129004 }, + { url = "https://files.pythonhosted.org/packages/74/21/23960627b00ed39643302d81bcda44c9444ebcdc04ee5bedd0757513f259/multidict-6.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4867cafcbc6585e4b678876c489b9273b13e9fff9f6d6d66add5e15d11d926cb", size = 121308 }, + { url = "https://files.pythonhosted.org/packages/8b/5c/cf282263ffce4a596ed0bb2aa1a1dddfe1996d6a62d08842a8d4b33dca13/multidict-6.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5b48204e8d955c47c55b72779802b219a39acc3ee3d0116d5080c388970b76e3", size = 132608 }, + { url = "https://files.pythonhosted.org/packages/d7/3e/97e778c041c72063f42b290888daff008d3ab1427f5b09b714f5a8eff294/multidict-6.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d8fff389528cad1618fb4b26b95550327495462cd745d879a8c7c2115248e399", size = 127029 }, + { url = "https://files.pythonhosted.org/packages/47/ac/3efb7bfe2f3aefcf8d103e9a7162572f01936155ab2f7ebcc7c255a23212/multidict-6.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a7a9541cd308eed5e30318430a9c74d2132e9a8cb46b901326272d780bf2d423", size = 137594 }, + { url = "https://files.pythonhosted.org/packages/42/9b/6c6e9e8dc4f915fc90a9b7798c44a30773dea2995fdcb619870e705afe2b/multidict-6.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:da1758c76f50c39a2efd5e9859ce7d776317eb1dd34317c8152ac9251fc574a3", size = 134556 }, + { url = "https://files.pythonhosted.org/packages/1d/10/8e881743b26aaf718379a14ac58572a240e8293a1c9d68e1418fb11c0f90/multidict-6.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c943a53e9186688b45b323602298ab727d8865d8c9ee0b17f8d62d14b56f0753", size = 130993 }, + { url = "https://files.pythonhosted.org/packages/45/84/3eb91b4b557442802d058a7579e864b329968c8d0ea57d907e7023c677f2/multidict-6.1.0-cp311-cp311-win32.whl", hash = "sha256:90f8717cb649eea3504091e640a1b8568faad18bd4b9fcd692853a04475a4b80", size = 26405 }, + { url = "https://files.pythonhosted.org/packages/9f/0b/ad879847ecbf6d27e90a6eabb7eff6b62c129eefe617ea45eae7c1f0aead/multidict-6.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:82176036e65644a6cc5bd619f65f6f19781e8ec2e5330f51aa9ada7504cc1926", size = 28795 }, + { url = "https://files.pythonhosted.org/packages/fd/16/92057c74ba3b96d5e211b553895cd6dc7cc4d1e43d9ab8fafc727681ef71/multidict-6.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b04772ed465fa3cc947db808fa306d79b43e896beb677a56fb2347ca1a49c1fa", size = 48713 }, + { url = "https://files.pythonhosted.org/packages/94/3d/37d1b8893ae79716179540b89fc6a0ee56b4a65fcc0d63535c6f5d96f217/multidict-6.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6180c0ae073bddeb5a97a38c03f30c233e0a4d39cd86166251617d1bbd0af436", size = 29516 }, + { url = "https://files.pythonhosted.org/packages/a2/12/adb6b3200c363062f805275b4c1e656be2b3681aada66c80129932ff0bae/multidict-6.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:071120490b47aa997cca00666923a83f02c7fbb44f71cf7f136df753f7fa8761", size = 29557 }, + { url = "https://files.pythonhosted.org/packages/47/e9/604bb05e6e5bce1e6a5cf80a474e0f072e80d8ac105f1b994a53e0b28c42/multidict-6.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50b3a2710631848991d0bf7de077502e8994c804bb805aeb2925a981de58ec2e", size = 130170 }, + { url = "https://files.pythonhosted.org/packages/7e/13/9efa50801785eccbf7086b3c83b71a4fb501a4d43549c2f2f80b8787d69f/multidict-6.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b58c621844d55e71c1b7f7c498ce5aa6985d743a1a59034c57a905b3f153c1ef", size = 134836 }, + { url = "https://files.pythonhosted.org/packages/bf/0f/93808b765192780d117814a6dfcc2e75de6dcc610009ad408b8814dca3ba/multidict-6.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55b6d90641869892caa9ca42ff913f7ff1c5ece06474fbd32fb2cf6834726c95", size = 133475 }, + { url = "https://files.pythonhosted.org/packages/d3/c8/529101d7176fe7dfe1d99604e48d69c5dfdcadb4f06561f465c8ef12b4df/multidict-6.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b820514bfc0b98a30e3d85462084779900347e4d49267f747ff54060cc33925", size = 131049 }, + { url = "https://files.pythonhosted.org/packages/ca/0c/fc85b439014d5a58063e19c3a158a889deec399d47b5269a0f3b6a2e28bc/multidict-6.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10a9b09aba0c5b48c53761b7c720aaaf7cf236d5fe394cd399c7ba662d5f9966", size = 120370 }, + { url = "https://files.pythonhosted.org/packages/db/46/d4416eb20176492d2258fbd47b4abe729ff3b6e9c829ea4236f93c865089/multidict-6.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1e16bf3e5fc9f44632affb159d30a437bfe286ce9e02754759be5536b169b305", size = 125178 }, + { url = "https://files.pythonhosted.org/packages/5b/46/73697ad7ec521df7de5531a32780bbfd908ded0643cbe457f981a701457c/multidict-6.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:76f364861c3bfc98cbbcbd402d83454ed9e01a5224bb3a28bf70002a230f73e2", size = 119567 }, + { url = "https://files.pythonhosted.org/packages/cd/ed/51f060e2cb0e7635329fa6ff930aa5cffa17f4c7f5c6c3ddc3500708e2f2/multidict-6.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:820c661588bd01a0aa62a1283f20d2be4281b086f80dad9e955e690c75fb54a2", size = 129822 }, + { url = "https://files.pythonhosted.org/packages/df/9e/ee7d1954b1331da3eddea0c4e08d9142da5f14b1321c7301f5014f49d492/multidict-6.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:0e5f362e895bc5b9e67fe6e4ded2492d8124bdf817827f33c5b46c2fe3ffaca6", size = 128656 }, + { url = "https://files.pythonhosted.org/packages/77/00/8538f11e3356b5d95fa4b024aa566cde7a38aa7a5f08f4912b32a037c5dc/multidict-6.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3ec660d19bbc671e3a6443325f07263be452c453ac9e512f5eb935e7d4ac28b3", size = 125360 }, + { url = "https://files.pythonhosted.org/packages/be/05/5d334c1f2462d43fec2363cd00b1c44c93a78c3925d952e9a71caf662e96/multidict-6.1.0-cp312-cp312-win32.whl", hash = "sha256:58130ecf8f7b8112cdb841486404f1282b9c86ccb30d3519faf301b2e5659133", size = 26382 }, + { url = "https://files.pythonhosted.org/packages/a3/bf/f332a13486b1ed0496d624bcc7e8357bb8053823e8cd4b9a18edc1d97e73/multidict-6.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:188215fc0aafb8e03341995e7c4797860181562380f81ed0a87ff455b70bf1f1", size = 28529 }, + { url = "https://files.pythonhosted.org/packages/22/67/1c7c0f39fe069aa4e5d794f323be24bf4d33d62d2a348acdb7991f8f30db/multidict-6.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:d569388c381b24671589335a3be6e1d45546c2988c2ebe30fdcada8457a31008", size = 48771 }, + { url = "https://files.pythonhosted.org/packages/3c/25/c186ee7b212bdf0df2519eacfb1981a017bda34392c67542c274651daf23/multidict-6.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:052e10d2d37810b99cc170b785945421141bf7bb7d2f8799d431e7db229c385f", size = 29533 }, + { url = "https://files.pythonhosted.org/packages/67/5e/04575fd837e0958e324ca035b339cea174554f6f641d3fb2b4f2e7ff44a2/multidict-6.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f90c822a402cb865e396a504f9fc8173ef34212a342d92e362ca498cad308e28", size = 29595 }, + { url = "https://files.pythonhosted.org/packages/d3/b2/e56388f86663810c07cfe4a3c3d87227f3811eeb2d08450b9e5d19d78876/multidict-6.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b225d95519a5bf73860323e633a664b0d85ad3d5bede6d30d95b35d4dfe8805b", size = 130094 }, + { url = "https://files.pythonhosted.org/packages/6c/ee/30ae9b4186a644d284543d55d491fbd4239b015d36b23fea43b4c94f7052/multidict-6.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:23bfd518810af7de1116313ebd9092cb9aa629beb12f6ed631ad53356ed6b86c", size = 134876 }, + { url = "https://files.pythonhosted.org/packages/84/c7/70461c13ba8ce3c779503c70ec9d0345ae84de04521c1f45a04d5f48943d/multidict-6.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c09fcfdccdd0b57867577b719c69e347a436b86cd83747f179dbf0cc0d4c1f3", size = 133500 }, + { url = "https://files.pythonhosted.org/packages/4a/9f/002af221253f10f99959561123fae676148dd730e2daa2cd053846a58507/multidict-6.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf6bea52ec97e95560af5ae576bdac3aa3aae0b6758c6efa115236d9e07dae44", size = 131099 }, + { url = "https://files.pythonhosted.org/packages/82/42/d1c7a7301d52af79d88548a97e297f9d99c961ad76bbe6f67442bb77f097/multidict-6.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57feec87371dbb3520da6192213c7d6fc892d5589a93db548331954de8248fd2", size = 120403 }, + { url = "https://files.pythonhosted.org/packages/68/f3/471985c2c7ac707547553e8f37cff5158030d36bdec4414cb825fbaa5327/multidict-6.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0c3f390dc53279cbc8ba976e5f8035eab997829066756d811616b652b00a23a3", size = 125348 }, + { url = "https://files.pythonhosted.org/packages/67/2c/e6df05c77e0e433c214ec1d21ddd203d9a4770a1f2866a8ca40a545869a0/multidict-6.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:59bfeae4b25ec05b34f1956eaa1cb38032282cd4dfabc5056d0a1ec4d696d3aa", size = 119673 }, + { url = "https://files.pythonhosted.org/packages/c5/cd/bc8608fff06239c9fb333f9db7743a1b2eafe98c2666c9a196e867a3a0a4/multidict-6.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:b2f59caeaf7632cc633b5cf6fc449372b83bbdf0da4ae04d5be36118e46cc0aa", size = 129927 }, + { url = "https://files.pythonhosted.org/packages/44/8e/281b69b7bc84fc963a44dc6e0bbcc7150e517b91df368a27834299a526ac/multidict-6.1.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:37bb93b2178e02b7b618893990941900fd25b6b9ac0fa49931a40aecdf083fe4", size = 128711 }, + { url = "https://files.pythonhosted.org/packages/12/a4/63e7cd38ed29dd9f1881d5119f272c898ca92536cdb53ffe0843197f6c85/multidict-6.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4e9f48f58c2c523d5a06faea47866cd35b32655c46b443f163d08c6d0ddb17d6", size = 125519 }, + { url = "https://files.pythonhosted.org/packages/38/e0/4f5855037a72cd8a7a2f60a3952d9aa45feedb37ae7831642102604e8a37/multidict-6.1.0-cp313-cp313-win32.whl", hash = "sha256:3a37ffb35399029b45c6cc33640a92bef403c9fd388acce75cdc88f58bd19a81", size = 26426 }, + { url = "https://files.pythonhosted.org/packages/7e/a5/17ee3a4db1e310b7405f5d25834460073a8ccd86198ce044dfaf69eac073/multidict-6.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:e9aa71e15d9d9beaad2c6b9319edcdc0a49a43ef5c0a4c8265ca9ee7d6c67774", size = 28531 }, + { url = "https://files.pythonhosted.org/packages/99/b7/b9e70fde2c0f0c9af4cc5277782a89b66d35948ea3369ec9f598358c3ac5/multidict-6.1.0-py3-none-any.whl", hash = "sha256:48e171e52d1c4d33888e529b999e5900356b9ae588c2f09a52dcefb158b27506", size = 10051 }, +] + +[[package]] +name = "multiprocess" +version = "0.70.17" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "dill" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e9/34/1acca6e18697017ad5c8b45279b59305d660ecf2fbed13e5f406f69890e4/multiprocess-0.70.17.tar.gz", hash = "sha256:4ae2f11a3416809ebc9a48abfc8b14ecce0652a0944731a1493a3c1ba44ff57a", size = 1785744 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/a9/39cf856d03690af6fd570cf40331f1f79acdbb3132a9c35d2c5002f7f30b/multiprocess-0.70.17-py310-none-any.whl", hash = "sha256:38357ca266b51a2e22841b755d9a91e4bb7b937979a54d411677111716c32744", size = 134830 }, + { url = "https://files.pythonhosted.org/packages/b2/07/8cbb75d6cfbe8712d8f7f6a5615f083c6e710ab916b748fbb20373ddb142/multiprocess-0.70.17-py311-none-any.whl", hash = "sha256:2884701445d0177aec5bd5f6ee0df296773e4fb65b11903b94c613fb46cfb7d1", size = 144346 }, + { url = "https://files.pythonhosted.org/packages/a4/69/d3f343a61a2f86ef10ed7865a26beda7c71554136ce187b0384b1c2c9ca3/multiprocess-0.70.17-py312-none-any.whl", hash = "sha256:2818af14c52446b9617d1b0755fa70ca2f77c28b25ed97bdaa2c69a22c47b46c", size = 147990 }, + { url = "https://files.pythonhosted.org/packages/c8/b7/2e9a4fcd871b81e1f2a812cd5c6fb52ad1e8da7bf0d7646c55eaae220484/multiprocess-0.70.17-py313-none-any.whl", hash = "sha256:20c28ca19079a6c879258103a6d60b94d4ffe2d9da07dda93fb1c8bc6243f522", size = 149843 }, + { url = "https://files.pythonhosted.org/packages/ae/d7/fd7a092fc0ab1845a1a97ca88e61b9b7cc2e9d6fcf0ed24e9480590c2336/multiprocess-0.70.17-py38-none-any.whl", hash = "sha256:1d52f068357acd1e5bbc670b273ef8f81d57863235d9fbf9314751886e141968", size = 132635 }, + { url = "https://files.pythonhosted.org/packages/f9/41/0618ac724b8a56254962c143759e04fa01c73b37aa69dd433f16643bd38b/multiprocess-0.70.17-py39-none-any.whl", hash = "sha256:c3feb874ba574fbccfb335980020c1ac631fbf2a3f7bee4e2042ede62558a021", size = 133359 }, +] + +[[package]] +name = "napari" +version = "0.5.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "app-model" }, + { name = "appdirs" }, + { name = "cachey" }, + { name = "certifi" }, + { name = "dask", extra = ["array"] }, + { name = "imageio" }, + { name = "jsonschema" }, + { name = "lazy-loader" }, + { name = "magicgui" }, + { name = "napari-console" }, + { name = "napari-plugin-engine" }, + { name = "napari-svg" }, + { name = "npe2" }, + { name = "numpy" }, + { name = "numpydoc" }, + { name = "pandas" }, + { name = "pillow" }, + { name = "pint" }, + { name = "psutil" }, + { name = "psygnal" }, + { name = "pydantic" }, + { name = "pygments" }, + { name = "pyopengl" }, + { name = "pywin32", marker = "sys_platform == 'win32'" }, + { name = "pyyaml" }, + { name = "qtpy" }, + { name = "scikit-image", extra = ["data"] }, + { name = "scipy" }, + { name = "superqt" }, + { name = "tifffile" }, + { name = "toolz" }, + { name = "tqdm" }, + { name = "typing-extensions" }, + { name = "vispy" }, + { name = "wrapt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2a/f3/1fbb155aa6359e8ec62753c8d1e0357dc61aba1cb5f3dac5d447a437aacb/napari-0.5.5.tar.gz", hash = "sha256:8c634957f98cce20352405b1c50e9e17ad7633b87d4808fc18740060c18d3a66", size = 2837588 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/75/e3/ccc78078cdb6a8f15eeeafa69f82bd0ff72a80e1a903bd1f6447688ac87e/napari-0.5.5-py3-none-any.whl", hash = "sha256:4171b5dec707b3745e556d6a2a705a3d5b4778db6373c5df934be8689a07cfda", size = 3076865 }, +] + +[package.optional-dependencies] +all = [ + { name = "napari-plugin-manager" }, + { name = "numba" }, + { name = "pyqt5" }, + { name = "triangle", marker = "platform_machine != 'arm64'" }, + { name = "zarr" }, +] + +[[package]] +name = "napari-console" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ipykernel" }, + { name = "ipython" }, + { name = "qtconsole" }, + { name = "qtpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2d/c6/4b02a952567be03855bb86a0480ad2a9fb8890dfa0d89db14de36396aa41/napari_console-0.1.2.tar.gz", hash = "sha256:2e6311104715673c70b1d4c44d77ae19fc6ec4ca61fed1670602c5bc2cd3be68", size = 19961 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4b/98/6d2b2aa4ecf9c1ced5090763f6fb15e65fd8e8c82d0a882ecf1ac5d749bd/napari_console-0.1.2-py3-none-any.whl", hash = "sha256:104c71c4ff0e311f2089ccdc4257a37d4f8074145a42415dbec1797f3410b0dc", size = 9990 }, +] + +[[package]] +name = "napari-ome-zarr" +version = "0.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "napari" }, + { name = "numpy" }, + { name = "ome-zarr" }, + { name = "vispy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/67/50/630bff98a60e71fad6a1e9a5cee3df7a043c88668ff752dacedbf0d987d1/napari_ome_zarr-0.6.1.tar.gz", hash = "sha256:3d3054823c2adaa4d2bf370c46adcc4a54192cfec3bbbe98d144e50b95bd6f89", size = 21099 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0d/81/8088d4d695ff7b93af4b1224448ec3270990c37d4e77bdb454c0078384e7/napari_ome_zarr-0.6.1-py3-none-any.whl", hash = "sha256:5b8ff2ef448c179a63261e240b8a1dcc92f79afe67aea4d9ecd14f8bccff7585", size = 9021 }, +] + +[[package]] +name = "napari-plugin-engine" +version = "0.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c3/a1/2794988f0075bfe18d7934516fb640af20b797001901c7900bfbc44d0a7a/napari-plugin-engine-0.2.0.tar.gz", hash = "sha256:fa926f869d70e0d652c005661948cd0c7fee5508ae17d437937f34f5287590b3", size = 54725 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c9/60/eaf45290008cfb7cc1e99f6427540704fafc5c65a3a25ff0024085cd2e0d/napari_plugin_engine-0.2.0-py3-none-any.whl", hash = "sha256:bd148b46ffb76f82623a6577741712f45ff30be66b3564fdc5446dfd7007ecc3", size = 33358 }, +] + +[[package]] +name = "napari-plugin-manager" +version = "0.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "npe2" }, + { name = "pip" }, + { name = "qtpy" }, + { name = "superqt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/5c/4f305188c719d648065f711155a64490b3af061b163227ff5a3e42465bd0/napari_plugin_manager-0.1.3.tar.gz", hash = "sha256:67e73f2d280f901c2de4879534fa69612b0a1debde412995714c3bc609a44e85", size = 1176046 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/68/98c60afe5fee5471eb334b632057a39b3ab0dd17d6128b2c96d9d845c028/napari_plugin_manager-0.1.3-py3-none-any.whl", hash = "sha256:5b0a316adc637c77c7e24e68cd1e130a859b1f9187adcc1e0033eb8a34d3275c", size = 38470 }, +] + +[[package]] +name = "napari-svg" +version = "0.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "imageio" }, + { name = "numpy" }, + { name = "vispy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ec/9e/daa80264951cf85b1967ff5faf8f478439173d554ef4e113772d8baac837/napari_svg-0.2.0.tar.gz", hash = "sha256:9e2f295bae33e45c0195032bbb2cb3f372e8016f0f3d69715dac3cb3505d10f6", size = 17018 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/02/e7/8cf145b19dda544a4a4eebfb4461313aa933cf6874532b7ae696fab65a90/napari_svg-0.2.0-py3-none-any.whl", hash = "sha256:700633abe7397e3c012f0e388072b92560d64f7561223686f003de3d3bc60a14", size = 15950 }, +] + +[[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 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195 }, +] + +[[package]] +name = "networkx" +version = "3.4.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fd/1d/06475e1cd5264c0b870ea2cc6fdb3e37177c1e565c43f56ff17a10e3937f/networkx-3.4.2.tar.gz", hash = "sha256:307c3669428c5362aab27c8a1260aa8f47c4e91d3891f48be0141738d8d053e1", size = 2151368 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl", hash = "sha256:df5d4365b724cf81b8c6a7312509d0c22386097011ad1abe274afd5e9d3bbc5f", size = 1723263 }, +] + +[[package]] +name = "neuroglancer" +version = "2.40.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "atomicwrites" }, + { name = "google-apitools" }, + { name = "google-auth" }, + { name = "numpy" }, + { name = "pillow" }, + { name = "requests" }, + { name = "tornado" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fe/68/600011755c7873d69431c2662bf631414e417d283b8cc7976dfa66178800/neuroglancer-2.40.1.tar.gz", hash = "sha256:ba21309827810d669a2f76e7b814a123aafeb61b7cb07b2de11a9663ad902fdc", size = 3640302 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/59/52/3890bdc3345a1885a6eac6d4b982124d4820c11b706ce179b76c26b3eaea/neuroglancer-2.40.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:73b214772263005e2531dab6051ed1f4d5cd4c4f1c6eb181b9baf704ecb6f3f3", size = 3649794 }, + { url = "https://files.pythonhosted.org/packages/a7/37/214037aec09f43e1854173fc338eb5f20f2b2f6d57ccf9dfc9f4032b1567/neuroglancer-2.40.1-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:7466279b2cad28465edc727b994949599d2f0ece9ca22cee05bfa30c1d63a1ac", size = 3644923 }, + { url = "https://files.pythonhosted.org/packages/2f/a2/e0e01c70d7a6804eb00faeb901af341ca5518b9d58c444c133d300c48b83/neuroglancer-2.40.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b5cb9583b1668aad49c092bb047d6e74959bb3b5b343d5a624f084d82f3ede60", size = 5138950 }, + { url = "https://files.pythonhosted.org/packages/23/d9/29ae513f60f0d972789453f14b22753d9becc303f0ad7e797cf6b4878580/neuroglancer-2.40.1-cp39-abi3-win_amd64.whl", hash = "sha256:dc70a9dcd438c763515a2ca36135d10a49bd3261ac3fcf0b9183c03411554295", size = 3622988 }, +] + +[[package]] +name = "nodeenv" +version = "1.9.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314 }, +] + +[[package]] +name = "npe2" +version = "0.7.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "appdirs" }, + { name = "build" }, + { name = "psygnal" }, + { name = "pydantic" }, + { name = "pyyaml" }, + { name = "rich" }, + { name = "tomli-w" }, + { name = "typer" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c0/5a/a27548db6725f2f9415be83d0eed4e75d13b5ff71d40c5ae1a7985c04708/npe2-0.7.7.tar.gz", hash = "sha256:8e5e3ef3b2ea020c9b8bb31c589148f0fd486779a939b52e4f3c7fea422a9136", size = 117533 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6c/4c/1d459c6915cc26d61c2c182d213770670dfe7aa1a00e0006ac05fbb66df7/npe2-0.7.7-py3-none-any.whl", hash = "sha256:ad634992c2728a641511d5ff23d1a0abddb68258036a2fd066f48a9010495b58", size = 92564 }, +] + +[[package]] +name = "numba" +version = "0.60.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "llvmlite" }, + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3c/93/2849300a9184775ba274aba6f82f303343669b0592b7bb0849ea713dabb0/numba-0.60.0.tar.gz", hash = "sha256:5df6158e5584eece5fc83294b949fd30b9f1125df7708862205217e068aabf16", size = 2702171 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/98/ad/df18d492a8f00d29a30db307904b9b296e37507034eedb523876f3a2e13e/numba-0.60.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a17b70fc9e380ee29c42717e8cc0bfaa5556c416d94f9aa96ba13acb41bdece8", size = 2647254 }, + { url = "https://files.pythonhosted.org/packages/9a/51/a4dc2c01ce7a850b8e56ff6d5381d047a5daea83d12bad08aa071d34b2ee/numba-0.60.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3fb02b344a2a80efa6f677aa5c40cd5dd452e1b35f8d1c2af0dfd9ada9978e4b", size = 2649970 }, + { url = "https://files.pythonhosted.org/packages/f9/4c/8889ac94c0b33dca80bed11564b8c6d9ea14d7f094e674c58e5c5b05859b/numba-0.60.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5f4fde652ea604ea3c86508a3fb31556a6157b2c76c8b51b1d45eb40c8598703", size = 3412492 }, + { url = "https://files.pythonhosted.org/packages/57/03/2b4245b05b71c0cee667e6a0b51606dfa7f4157c9093d71c6b208385a611/numba-0.60.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4142d7ac0210cc86432b818338a2bc368dc773a2f5cf1e32ff7c5b378bd63ee8", size = 3705018 }, + { url = "https://files.pythonhosted.org/packages/79/89/2d924ca60dbf949f18a6fec223a2445f5f428d9a5f97a6b29c2122319015/numba-0.60.0-cp311-cp311-win_amd64.whl", hash = "sha256:cac02c041e9b5bc8cf8f2034ff6f0dbafccd1ae9590dc146b3a02a45e53af4e2", size = 2686920 }, + { url = "https://files.pythonhosted.org/packages/eb/5c/b5ec752c475e78a6c3676b67c514220dbde2725896bbb0b6ec6ea54b2738/numba-0.60.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d7da4098db31182fc5ffe4bc42c6f24cd7d1cb8a14b59fd755bfee32e34b8404", size = 2647866 }, + { url = "https://files.pythonhosted.org/packages/65/42/39559664b2e7c15689a638c2a38b3b74c6e69a04e2b3019b9f7742479188/numba-0.60.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:38d6ea4c1f56417076ecf8fc327c831ae793282e0ff51080c5094cb726507b1c", size = 2650208 }, + { url = "https://files.pythonhosted.org/packages/67/88/c4459ccc05674ef02119abf2888ccd3e2fed12a323f52255f4982fc95876/numba-0.60.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:62908d29fb6a3229c242e981ca27e32a6e606cc253fc9e8faeb0e48760de241e", size = 3466946 }, + { url = "https://files.pythonhosted.org/packages/8b/41/ac11cf33524def12aa5bd698226ae196a1185831c05ed29dc0c56eaa308b/numba-0.60.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0ebaa91538e996f708f1ab30ef4d3ddc344b64b5227b67a57aa74f401bb68b9d", size = 3761463 }, + { url = "https://files.pythonhosted.org/packages/ca/bd/0fe29fcd1b6a8de479a4ed25c6e56470e467e3611c079d55869ceef2b6d1/numba-0.60.0-cp312-cp312-win_amd64.whl", hash = "sha256:f75262e8fe7fa96db1dca93d53a194a38c46da28b112b8a4aca168f0df860347", size = 2707588 }, +] + +[[package]] +name = "numcodecs" +version = "0.13.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/85/56/8895a76abe4ec94ebd01eeb6d74f587bc4cddd46569670e1402852a5da13/numcodecs-0.13.1.tar.gz", hash = "sha256:a3cf37881df0898f3a9c0d4477df88133fe85185bffe57ba31bcc2fa207709bc", size = 5955215 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f0/78/34b8e869ef143e88d62e8231f4dbfcad85e5c41302a11fc5bd2228a13df5/numcodecs-0.13.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2eda97dd2f90add98df6d295f2c6ae846043396e3d51a739ca5db6c03b5eb666", size = 1580199 }, + { url = "https://files.pythonhosted.org/packages/3b/cf/f70797d86bb585d258d1e6993dced30396f2044725b96ce8bcf87a02be9c/numcodecs-0.13.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2a86f5367af9168e30f99727ff03b27d849c31ad4522060dde0bce2923b3a8bc", size = 1177203 }, + { url = "https://files.pythonhosted.org/packages/a8/b5/d14ad69b63fde041153dfd05d7181a49c0d4864de31a7a1093c8370da957/numcodecs-0.13.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233bc7f26abce24d57e44ea8ebeb5cd17084690b4e7409dd470fdb75528d615f", size = 8868743 }, + { url = "https://files.pythonhosted.org/packages/13/d4/27a7b5af0b33f6d61e198faf177fbbf3cb83ff10d9d1a6857b7efc525ad5/numcodecs-0.13.1-cp311-cp311-win_amd64.whl", hash = "sha256:796b3e6740107e4fa624cc636248a1580138b3f1c579160f260f76ff13a4261b", size = 829603 }, + { url = "https://files.pythonhosted.org/packages/37/3a/bc09808425e7d3df41e5fc73fc7a802c429ba8c6b05e55f133654ade019d/numcodecs-0.13.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5195bea384a6428f8afcece793860b1ab0ae28143c853f0b2b20d55a8947c917", size = 1575806 }, + { url = "https://files.pythonhosted.org/packages/3a/cc/dc74d0bfdf9ec192332a089d199f1e543e747c556b5659118db7a437dcca/numcodecs-0.13.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3501a848adaddce98a71a262fee15cd3618312692aa419da77acd18af4a6a3f6", size = 1178233 }, + { url = "https://files.pythonhosted.org/packages/d4/ce/434e8e3970b8e92ae9ab6d9db16cb9bc7aa1cd02e17c11de6848224100a1/numcodecs-0.13.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2230484e6102e5fa3cc1a5dd37ca1f92dfbd183d91662074d6f7574e3e8f53", size = 8857827 }, + { url = "https://files.pythonhosted.org/packages/83/e7/1d8b1b266a92f9013c755b1c146c5ad71a2bff147ecbc67f86546a2e4d6a/numcodecs-0.13.1-cp312-cp312-win_amd64.whl", hash = "sha256:e5db4824ebd5389ea30e54bc8aeccb82d514d28b6b68da6c536b8fa4596f4bca", size = 826539 }, + { url = "https://files.pythonhosted.org/packages/83/8b/06771dead2cc4a8ae1ea9907737cf1c8d37a323392fa28f938a586373468/numcodecs-0.13.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7a60d75179fd6692e301ddfb3b266d51eb598606dcae7b9fc57f986e8d65cb43", size = 1571660 }, + { url = "https://files.pythonhosted.org/packages/f9/ea/d925bf85f92dfe4635356018da9fe4bfecb07b1c72f62b01c1bc47f936b1/numcodecs-0.13.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3f593c7506b0ab248961a3b13cb148cc6e8355662ff124ac591822310bc55ecf", size = 1169925 }, + { url = "https://files.pythonhosted.org/packages/0f/d6/643a3839d571d8e439a2c77dc4b0b8cab18d96ac808e4a81dbe88e959ab6/numcodecs-0.13.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80d3071465f03522e776a31045ddf2cfee7f52df468b977ed3afdd7fe5869701", size = 8814257 }, + { url = "https://files.pythonhosted.org/packages/a6/c5/f3e56bc9b4e438a287fff738993d6d11abef368c0328a612ac2842ba9fca/numcodecs-0.13.1-cp313-cp313-win_amd64.whl", hash = "sha256:90d3065ae74c9342048ae0046006f99dcb1388b7288da5a19b3bddf9c30c3176", size = 821887 }, +] + +[[package]] +name = "numpy" +version = "2.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a9/75/10dd1f8116a8b796cb2c737b674e02d02e80454bda953fa7e65d8c12b016/numpy-2.0.2.tar.gz", hash = "sha256:883c987dee1880e2a864ab0dc9892292582510604156762362d9326444636e78", size = 18902015 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8b/cf/034500fb83041aa0286e0fb16e7c76e5c8b67c0711bb6e9e9737a717d5fe/numpy-2.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:49ca4decb342d66018b01932139c0961a8f9ddc7589611158cb3c27cbcf76448", size = 21169137 }, + { url = "https://files.pythonhosted.org/packages/4a/d9/32de45561811a4b87fbdee23b5797394e3d1504b4a7cf40c10199848893e/numpy-2.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:11a76c372d1d37437857280aa142086476136a8c0f373b2e648ab2c8f18fb195", size = 13703552 }, + { url = "https://files.pythonhosted.org/packages/c1/ca/2f384720020c7b244d22508cb7ab23d95f179fcfff33c31a6eeba8d6c512/numpy-2.0.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:807ec44583fd708a21d4a11d94aedf2f4f3c3719035c76a2bbe1fe8e217bdc57", size = 5298957 }, + { url = "https://files.pythonhosted.org/packages/0e/78/a3e4f9fb6aa4e6fdca0c5428e8ba039408514388cf62d89651aade838269/numpy-2.0.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:8cafab480740e22f8d833acefed5cc87ce276f4ece12fdaa2e8903db2f82897a", size = 6905573 }, + { url = "https://files.pythonhosted.org/packages/a0/72/cfc3a1beb2caf4efc9d0b38a15fe34025230da27e1c08cc2eb9bfb1c7231/numpy-2.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a15f476a45e6e5a3a79d8a14e62161d27ad897381fecfa4a09ed5322f2085669", size = 13914330 }, + { url = "https://files.pythonhosted.org/packages/ba/a8/c17acf65a931ce551fee11b72e8de63bf7e8a6f0e21add4c937c83563538/numpy-2.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13e689d772146140a252c3a28501da66dfecd77490b498b168b501835041f951", size = 19534895 }, + { url = "https://files.pythonhosted.org/packages/ba/86/8767f3d54f6ae0165749f84648da9dcc8cd78ab65d415494962c86fac80f/numpy-2.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9ea91dfb7c3d1c56a0e55657c0afb38cf1eeae4544c208dc465c3c9f3a7c09f9", size = 19937253 }, + { url = "https://files.pythonhosted.org/packages/df/87/f76450e6e1c14e5bb1eae6836478b1028e096fd02e85c1c37674606ab752/numpy-2.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c1c9307701fec8f3f7a1e6711f9089c06e6284b3afbbcd259f7791282d660a15", size = 14414074 }, + { url = "https://files.pythonhosted.org/packages/5c/ca/0f0f328e1e59f73754f06e1adfb909de43726d4f24c6a3f8805f34f2b0fa/numpy-2.0.2-cp311-cp311-win32.whl", hash = "sha256:a392a68bd329eafac5817e5aefeb39038c48b671afd242710b451e76090e81f4", size = 6470640 }, + { url = "https://files.pythonhosted.org/packages/eb/57/3a3f14d3a759dcf9bf6e9eda905794726b758819df4663f217d658a58695/numpy-2.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:286cd40ce2b7d652a6f22efdfc6d1edf879440e53e76a75955bc0c826c7e64dc", size = 15910230 }, + { url = "https://files.pythonhosted.org/packages/45/40/2e117be60ec50d98fa08c2f8c48e09b3edea93cfcabd5a9ff6925d54b1c2/numpy-2.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:df55d490dea7934f330006d0f81e8551ba6010a5bf035a249ef61a94f21c500b", size = 20895803 }, + { url = "https://files.pythonhosted.org/packages/46/92/1b8b8dee833f53cef3e0a3f69b2374467789e0bb7399689582314df02651/numpy-2.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8df823f570d9adf0978347d1f926b2a867d5608f434a7cff7f7908c6570dcf5e", size = 13471835 }, + { url = "https://files.pythonhosted.org/packages/7f/19/e2793bde475f1edaea6945be141aef6c8b4c669b90c90a300a8954d08f0a/numpy-2.0.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:9a92ae5c14811e390f3767053ff54eaee3bf84576d99a2456391401323f4ec2c", size = 5038499 }, + { url = "https://files.pythonhosted.org/packages/e3/ff/ddf6dac2ff0dd50a7327bcdba45cb0264d0e96bb44d33324853f781a8f3c/numpy-2.0.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:a842d573724391493a97a62ebbb8e731f8a5dcc5d285dfc99141ca15a3302d0c", size = 6633497 }, + { url = "https://files.pythonhosted.org/packages/72/21/67f36eac8e2d2cd652a2e69595a54128297cdcb1ff3931cfc87838874bd4/numpy-2.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c05e238064fc0610c840d1cf6a13bf63d7e391717d247f1bf0318172e759e692", size = 13621158 }, + { url = "https://files.pythonhosted.org/packages/39/68/e9f1126d757653496dbc096cb429014347a36b228f5a991dae2c6b6cfd40/numpy-2.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0123ffdaa88fa4ab64835dcbde75dcdf89c453c922f18dced6e27c90d1d0ec5a", size = 19236173 }, + { url = "https://files.pythonhosted.org/packages/d1/e9/1f5333281e4ebf483ba1c888b1d61ba7e78d7e910fdd8e6499667041cc35/numpy-2.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:96a55f64139912d61de9137f11bf39a55ec8faec288c75a54f93dfd39f7eb40c", size = 19634174 }, + { url = "https://files.pythonhosted.org/packages/71/af/a469674070c8d8408384e3012e064299f7a2de540738a8e414dcfd639996/numpy-2.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ec9852fb39354b5a45a80bdab5ac02dd02b15f44b3804e9f00c556bf24b4bded", size = 14099701 }, + { url = "https://files.pythonhosted.org/packages/d0/3d/08ea9f239d0e0e939b6ca52ad403c84a2bce1bde301a8eb4888c1c1543f1/numpy-2.0.2-cp312-cp312-win32.whl", hash = "sha256:671bec6496f83202ed2d3c8fdc486a8fc86942f2e69ff0e986140339a63bcbe5", size = 6174313 }, + { url = "https://files.pythonhosted.org/packages/b2/b5/4ac39baebf1fdb2e72585c8352c56d063b6126be9fc95bd2bb5ef5770c20/numpy-2.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:cfd41e13fdc257aa5778496b8caa5e856dc4896d4ccf01841daee1d96465467a", size = 15606179 }, +] + +[[package]] +name = "numpydoc" +version = "1.8.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "sphinx" }, + { name = "tabulate" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ee/59/5d1d1afb0b9598e21e7cda477935188e39ef845bcf59cb65ac20845bfd45/numpydoc-1.8.0.tar.gz", hash = "sha256:022390ab7464a44f8737f79f8b31ce1d3cfa4b4af79ccaa1aac5e8368db587fb", size = 90445 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6c/45/56d99ba9366476cd8548527667f01869279cedb9e66b28eb4dfb27701679/numpydoc-1.8.0-py3-none-any.whl", hash = "sha256:72024c7fd5e17375dec3608a27c03303e8ad00c81292667955c6fea7a3ccf541", size = 64003 }, +] + +[[package]] +name = "oauth2client" +version = "4.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "httplib2" }, + { name = "pyasn1" }, + { name = "pyasn1-modules" }, + { name = "rsa" }, + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a6/7b/17244b1083e8e604bf154cf9b716aecd6388acd656dd01893d0d244c94d9/oauth2client-4.1.3.tar.gz", hash = "sha256:d486741e451287f69568a4d26d70d9acd73a2bbfa275746c535b4209891cccc6", size = 155910 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/a9/4f25a14d23f0786b64875b91784607c2277eff25d48f915e39ff0cff505a/oauth2client-4.1.3-py2.py3-none-any.whl", hash = "sha256:b8a81cc5d60e2d364f0b1b98f958dbd472887acaf1a5b05e21c28c31a2d6d3ac", size = 98206 }, +] + +[[package]] +name = "ome-zarr" +version = "0.10.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiohttp" }, + { name = "dask" }, + { name = "distributed" }, + { name = "fsspec", extra = ["s3"] }, + { name = "numpy" }, + { name = "requests" }, + { name = "scikit-image" }, + { name = "toolz" }, + { name = "zarr" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/04/33/3f96501c7028cf9c9238d298d7ef84c59a35722b30249456801ede19ff8c/ome_zarr-0.10.2.tar.gz", hash = "sha256:9fcc401681708a67c4449d2d085c5d3182bb4d371c34c87b6dc603d485f62df3", size = 45867 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e0/d1/89b9b8fd454e05b0188f4a3dcb629a56d8a06451259553b61a32753be540/ome_zarr-0.10.2-py3-none-any.whl", hash = "sha256:524f17e2e2d7277fc11da0c527e743b427cc3953ec27d82215fff1c4c11adb00", size = 37052 }, +] + +[[package]] +name = "orjson" +version = "3.10.14" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/92/f7/3219b56f47b4f5e864fb11cdf4ac0aaa3de608730ad2dc4c6e16382f35ec/orjson-3.10.14.tar.gz", hash = "sha256:cf31f6f071a6b8e7aa1ead1fa27b935b48d00fbfa6a28ce856cfff2d5dd68eed", size = 5282116 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bf/18/26721760368e12b691fb6811692ed21ae5275ea918db409ba26866cacbe8/orjson-3.10.14-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:f506fd666dd1ecd15a832bebc66c4df45c1902fd47526292836c339f7ba665a9", size = 249437 }, + { url = "https://files.pythonhosted.org/packages/d5/5b/2adfe7cc301edeb3bffc1942956659c19ec00d51a21c53c17c0767bebf47/orjson-3.10.14-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efe5fd254cfb0eeee13b8ef7ecb20f5d5a56ddda8a587f3852ab2cedfefdb5f6", size = 135812 }, + { url = "https://files.pythonhosted.org/packages/8a/68/07df7787fd9ff6dba815b2d793eec5e039d288fdf150431ed48a660bfcbb/orjson-3.10.14-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4ddc8c866d7467f5ee2991397d2ea94bcf60d0048bdd8ca555740b56f9042725", size = 150153 }, + { url = "https://files.pythonhosted.org/packages/02/71/f68562734461b801b53bacd5365e079dcb3c78656a662f0639494880e522/orjson-3.10.14-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3af8e42ae4363773658b8d578d56dedffb4f05ceeb4d1d4dd3fb504950b45526", size = 139742 }, + { url = "https://files.pythonhosted.org/packages/04/03/1355fb27652582f00d3c62e93a32b982fa42bc31d2e07f0a317867069096/orjson-3.10.14-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:84dd83110503bc10e94322bf3ffab8bc49150176b49b4984dc1cce4c0a993bf9", size = 154479 }, + { url = "https://files.pythonhosted.org/packages/7c/47/1c2a840f27715e8bc2bbafffc851512ede6e53483593eded190919bdcaf4/orjson-3.10.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36f5bfc0399cd4811bf10ec7a759c7ab0cd18080956af8ee138097d5b5296a95", size = 130413 }, + { url = "https://files.pythonhosted.org/packages/dd/b2/5bb51006cbae85b052d1bbee7ff43ae26fa155bb3d31a71b0c07d384d5e3/orjson-3.10.14-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:868943660fb2a1e6b6b965b74430c16a79320b665b28dd4511d15ad5038d37d5", size = 138545 }, + { url = "https://files.pythonhosted.org/packages/79/30/7841a5dd46bb46b8e868791d5469c9d4788d3e26b7e69d40256647997baf/orjson-3.10.14-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:33449c67195969b1a677533dee9d76e006001213a24501333624623e13c7cc8e", size = 130953 }, + { url = "https://files.pythonhosted.org/packages/08/49/720e7c2040c0f1df630a36d83d449bd7e4d4471071d5ece47a4f7211d570/orjson-3.10.14-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:e4c9f60f9fb0b5be66e416dcd8c9d94c3eabff3801d875bdb1f8ffc12cf86905", size = 414675 }, + { url = "https://files.pythonhosted.org/packages/50/b0/ca7619f34280e7dcbd50dbc9c5fe5200c12cd7269b8858652beb3887483f/orjson-3.10.14-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0de4d6315cfdbd9ec803b945c23b3a68207fd47cbe43626036d97e8e9561a436", size = 141004 }, + { url = "https://files.pythonhosted.org/packages/75/1b/7548e3a711543f438e87a4349e00439ab7f37807942e5659f29363f35765/orjson-3.10.14-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:83adda3db595cb1a7e2237029b3249c85afbe5c747d26b41b802e7482cb3933e", size = 129629 }, + { url = "https://files.pythonhosted.org/packages/b0/1e/4930a6ff46debd6be1ff18e869b7bc43a7ad762c865610b7e745038d6f68/orjson-3.10.14-cp311-cp311-win32.whl", hash = "sha256:998019ef74a4997a9d741b1473533cdb8faa31373afc9849b35129b4b8ec048d", size = 142430 }, + { url = "https://files.pythonhosted.org/packages/28/e0/6cc1cd1dfde36555e81ac869f7847e86bb11c27f97b72fde2f1509b12163/orjson-3.10.14-cp311-cp311-win_amd64.whl", hash = "sha256:9d034abdd36f0f0f2240f91492684e5043d46f290525d1117712d5b8137784eb", size = 133516 }, + { url = "https://files.pythonhosted.org/packages/8c/dc/dc5a882be016ee8688bd867ad3b4e3b2ab039d91383099702301a1adb6ac/orjson-3.10.14-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:2ad4b7e367efba6dc3f119c9a0fcd41908b7ec0399a696f3cdea7ec477441b09", size = 249396 }, + { url = "https://files.pythonhosted.org/packages/f0/95/4c23ff5c0505cd687928608e0b7910ccb44ce59490079e1c17b7610aa0d0/orjson-3.10.14-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f496286fc85e93ce0f71cc84fc1c42de2decf1bf494094e188e27a53694777a7", size = 135689 }, + { url = "https://files.pythonhosted.org/packages/ad/39/b4bdd19604dce9d6509c4d86e8e251a1373a24204b4c4169866dcecbe5f5/orjson-3.10.14-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c7f189bbfcded40e41a6969c1068ba305850ba016665be71a217918931416fbf", size = 150136 }, + { url = "https://files.pythonhosted.org/packages/1d/92/7b9bad96353abd3e89947960252dcf1022ce2df7f29056e434de05e18b6d/orjson-3.10.14-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8cc8204f0b75606869c707da331058ddf085de29558b516fc43c73ee5ee2aadb", size = 139766 }, + { url = "https://files.pythonhosted.org/packages/a6/bd/abb13c86540b7a91b40d7d9f8549d03a026bc22d78fa93f71d68b8f4c36e/orjson-3.10.14-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:deaa2899dff7f03ab667e2ec25842d233e2a6a9e333efa484dfe666403f3501c", size = 154533 }, + { url = "https://files.pythonhosted.org/packages/c0/02/0bcb91ec9c7143012359983aca44f567f87df379957cd4af11336217b12f/orjson-3.10.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1c3ea52642c9714dc6e56de8a451a066f6d2707d273e07fe8a9cc1ba073813d", size = 130658 }, + { url = "https://files.pythonhosted.org/packages/b4/1e/b304596bb1f800d47d6e92305bd09f0eef693ed4f7b2095db63f9808b229/orjson-3.10.14-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9d3f9ed72e7458ded9a1fb1b4d4ed4c4fdbaf82030ce3f9274b4dc1bff7ace2b", size = 138546 }, + { url = "https://files.pythonhosted.org/packages/56/c7/65d72b22080186ef618a46afeb9386e20056f3237664090f3a2f8da1cd6d/orjson-3.10.14-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:07520685d408a2aba514c17ccc16199ff2934f9f9e28501e676c557f454a37fe", size = 130774 }, + { url = "https://files.pythonhosted.org/packages/4d/85/1ab35a832f32b37ccd673721e845cf302f23453603112255af611c91d1d1/orjson-3.10.14-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:76344269b550ea01488d19a2a369ab572c1ac4449a72e9f6ac0d70eb1cbfb953", size = 414649 }, + { url = "https://files.pythonhosted.org/packages/d1/7d/1d6575f779bab8fe698fa6d52e8aa3aa0a9fca4885d0bf6197700455713a/orjson-3.10.14-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e2979d0f2959990620f7e62da6cd954e4620ee815539bc57a8ae46e2dacf90e3", size = 141060 }, + { url = "https://files.pythonhosted.org/packages/f8/26/68513e28b3bd1d7633318ed2818e86d1bfc8b782c87c520c7b363092837f/orjson-3.10.14-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:03f61ca3674555adcb1aa717b9fc87ae936aa7a63f6aba90a474a88701278780", size = 129798 }, + { url = "https://files.pythonhosted.org/packages/44/ca/020fb99c98ff7267ba18ce798ff0c8c3aa97cd949b611fc76cad3c87e534/orjson-3.10.14-cp312-cp312-win32.whl", hash = "sha256:d5075c54edf1d6ad81d4c6523ce54a748ba1208b542e54b97d8a882ecd810fd1", size = 142524 }, + { url = "https://files.pythonhosted.org/packages/70/7f/f2d346819a273653825e7c92dc26418c8da506003c9fc1dfe8157e733b2e/orjson-3.10.14-cp312-cp312-win_amd64.whl", hash = "sha256:175cafd322e458603e8ce73510a068d16b6e6f389c13f69bf16de0e843d7d406", size = 133663 }, + { url = "https://files.pythonhosted.org/packages/46/bb/f1b037d89f580c79eda0940772384cc226a697be1cb4eb94ae4e792aa34c/orjson-3.10.14-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:0905ca08a10f7e0e0c97d11359609300eb1437490a7f32bbaa349de757e2e0c7", size = 249333 }, + { url = "https://files.pythonhosted.org/packages/e4/72/12958a073cace3f8acef0f9a30739d95f46bbb1544126fecad11527d4508/orjson-3.10.14-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92d13292249f9f2a3e418cbc307a9fbbef043c65f4bd8ba1eb620bc2aaba3d15", size = 125038 }, + { url = "https://files.pythonhosted.org/packages/c0/ae/461f78b1c98de1bc034af88bc21c6a792cc63373261fbc10a6ee560814fa/orjson-3.10.14-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90937664e776ad316d64251e2fa2ad69265e4443067668e4727074fe39676414", size = 130604 }, + { url = "https://files.pythonhosted.org/packages/ae/d2/17f50513f56bff7898840fddf7fb88f501305b9b2605d2793ff224789665/orjson-3.10.14-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9ed3d26c4cb4f6babaf791aa46a029265850e80ec2a566581f5c2ee1a14df4f1", size = 130756 }, + { url = "https://files.pythonhosted.org/packages/fa/bc/673856e4af94c9890dfd8e2054c05dc2ddc16d1728c2aa0c5bd198943105/orjson-3.10.14-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:56ee546c2bbe9599aba78169f99d1dc33301853e897dbaf642d654248280dc6e", size = 414613 }, + { url = "https://files.pythonhosted.org/packages/09/01/08c5b69b0756dd1790fcffa569d6a28dedcd7b97f825e4b46537b788908c/orjson-3.10.14-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:901e826cb2f1bdc1fcef3ef59adf0c451e8f7c0b5deb26c1a933fb66fb505eae", size = 141010 }, + { url = "https://files.pythonhosted.org/packages/5b/98/72883bb6cf88fd364996e62d2026622ca79bfb8dbaf96ccdd2018ada25b1/orjson-3.10.14-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:26336c0d4b2d44636e1e1e6ed1002f03c6aae4a8a9329561c8883f135e9ff010", size = 129732 }, + { url = "https://files.pythonhosted.org/packages/e4/99/347418f7ef56dcb478ba131a6112b8ddd5b747942652b6e77a53155a7e21/orjson-3.10.14-cp313-cp313-win32.whl", hash = "sha256:e2bc525e335a8545c4e48f84dd0328bc46158c9aaeb8a1c2276546e94540ea3d", size = 142504 }, + { url = "https://files.pythonhosted.org/packages/59/ac/5e96cad01083015f7bfdb02ccafa489da8e6caa7f4c519e215f04d2bd856/orjson-3.10.14-cp313-cp313-win_amd64.whl", hash = "sha256:eca04dfd792cedad53dc9a917da1a522486255360cb4e77619343a20d9f35364", size = 133388 }, +] + +[[package]] +name = "packaging" +version = "24.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f", size = 163950 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451 }, +] + +[[package]] +name = "pandas" +version = "2.2.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "python-dateutil" }, + { name = "pytz" }, + { name = "tzdata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9c/d6/9f8431bacc2e19dca897724cd097b1bb224a6ad5433784a44b587c7c13af/pandas-2.2.3.tar.gz", hash = "sha256:4f18ba62b61d7e192368b84517265a99b4d7ee8912f8708660fb4a366cc82667", size = 4399213 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a8/44/d9502bf0ed197ba9bf1103c9867d5904ddcaf869e52329787fc54ed70cc8/pandas-2.2.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:66108071e1b935240e74525006034333f98bcdb87ea116de573a6a0dccb6c039", size = 12602222 }, + { url = "https://files.pythonhosted.org/packages/52/11/9eac327a38834f162b8250aab32a6781339c69afe7574368fffe46387edf/pandas-2.2.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7c2875855b0ff77b2a64a0365e24455d9990730d6431b9e0ee18ad8acee13dbd", size = 11321274 }, + { url = "https://files.pythonhosted.org/packages/45/fb/c4beeb084718598ba19aa9f5abbc8aed8b42f90930da861fcb1acdb54c3a/pandas-2.2.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cd8d0c3be0515c12fed0bdbae072551c8b54b7192c7b1fda0ba56059a0179698", size = 15579836 }, + { url = "https://files.pythonhosted.org/packages/cd/5f/4dba1d39bb9c38d574a9a22548c540177f78ea47b32f99c0ff2ec499fac5/pandas-2.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c124333816c3a9b03fbeef3a9f230ba9a737e9e5bb4060aa2107a86cc0a497fc", size = 13058505 }, + { url = "https://files.pythonhosted.org/packages/b9/57/708135b90391995361636634df1f1130d03ba456e95bcf576fada459115a/pandas-2.2.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:63cc132e40a2e084cf01adf0775b15ac515ba905d7dcca47e9a251819c575ef3", size = 16744420 }, + { url = "https://files.pythonhosted.org/packages/86/4a/03ed6b7ee323cf30404265c284cee9c65c56a212e0a08d9ee06984ba2240/pandas-2.2.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:29401dbfa9ad77319367d36940cd8a0b3a11aba16063e39632d98b0e931ddf32", size = 14440457 }, + { url = "https://files.pythonhosted.org/packages/ed/8c/87ddf1fcb55d11f9f847e3c69bb1c6f8e46e2f40ab1a2d2abadb2401b007/pandas-2.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:3fc6873a41186404dad67245896a6e440baacc92f5b716ccd1bc9ed2995ab2c5", size = 11617166 }, + { url = "https://files.pythonhosted.org/packages/17/a3/fb2734118db0af37ea7433f57f722c0a56687e14b14690edff0cdb4b7e58/pandas-2.2.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b1d432e8d08679a40e2a6d8b2f9770a5c21793a6f9f47fdd52c5ce1948a5a8a9", size = 12529893 }, + { url = "https://files.pythonhosted.org/packages/e1/0c/ad295fd74bfac85358fd579e271cded3ac969de81f62dd0142c426b9da91/pandas-2.2.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a5a1595fe639f5988ba6a8e5bc9649af3baf26df3998a0abe56c02609392e0a4", size = 11363475 }, + { url = "https://files.pythonhosted.org/packages/c6/2a/4bba3f03f7d07207481fed47f5b35f556c7441acddc368ec43d6643c5777/pandas-2.2.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5de54125a92bb4d1c051c0659e6fcb75256bf799a732a87184e5ea503965bce3", size = 15188645 }, + { url = "https://files.pythonhosted.org/packages/38/f8/d8fddee9ed0d0c0f4a2132c1dfcf0e3e53265055da8df952a53e7eaf178c/pandas-2.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fffb8ae78d8af97f849404f21411c95062db1496aeb3e56f146f0355c9989319", size = 12739445 }, + { url = "https://files.pythonhosted.org/packages/20/e8/45a05d9c39d2cea61ab175dbe6a2de1d05b679e8de2011da4ee190d7e748/pandas-2.2.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dfcb5ee8d4d50c06a51c2fffa6cff6272098ad6540aed1a76d15fb9318194d8", size = 16359235 }, + { url = "https://files.pythonhosted.org/packages/1d/99/617d07a6a5e429ff90c90da64d428516605a1ec7d7bea494235e1c3882de/pandas-2.2.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:062309c1b9ea12a50e8ce661145c6aab431b1e99530d3cd60640e255778bd43a", size = 14056756 }, + { url = "https://files.pythonhosted.org/packages/29/d4/1244ab8edf173a10fd601f7e13b9566c1b525c4f365d6bee918e68381889/pandas-2.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:59ef3764d0fe818125a5097d2ae867ca3fa64df032331b7e0917cf5d7bf66b13", size = 11504248 }, + { url = "https://files.pythonhosted.org/packages/64/22/3b8f4e0ed70644e85cfdcd57454686b9057c6c38d2f74fe4b8bc2527214a/pandas-2.2.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f00d1345d84d8c86a63e476bb4955e46458b304b9575dcf71102b5c705320015", size = 12477643 }, + { url = "https://files.pythonhosted.org/packages/e4/93/b3f5d1838500e22c8d793625da672f3eec046b1a99257666c94446969282/pandas-2.2.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3508d914817e153ad359d7e069d752cdd736a247c322d932eb89e6bc84217f28", size = 11281573 }, + { url = "https://files.pythonhosted.org/packages/f5/94/6c79b07f0e5aab1dcfa35a75f4817f5c4f677931d4234afcd75f0e6a66ca/pandas-2.2.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:22a9d949bfc9a502d320aa04e5d02feab689d61da4e7764b62c30b991c42c5f0", size = 15196085 }, + { url = "https://files.pythonhosted.org/packages/e8/31/aa8da88ca0eadbabd0a639788a6da13bb2ff6edbbb9f29aa786450a30a91/pandas-2.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3a255b2c19987fbbe62a9dfd6cff7ff2aa9ccab3fc75218fd4b7530f01efa24", size = 12711809 }, + { url = "https://files.pythonhosted.org/packages/ee/7c/c6dbdb0cb2a4344cacfb8de1c5808ca885b2e4dcfde8008266608f9372af/pandas-2.2.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:800250ecdadb6d9c78eae4990da62743b857b470883fa27f652db8bdde7f6659", size = 16356316 }, + { url = "https://files.pythonhosted.org/packages/57/b7/8b757e7d92023b832869fa8881a992696a0bfe2e26f72c9ae9f255988d42/pandas-2.2.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6374c452ff3ec675a8f46fd9ab25c4ad0ba590b71cf0656f8b6daa5202bca3fb", size = 14022055 }, + { url = "https://files.pythonhosted.org/packages/3b/bc/4b18e2b8c002572c5a441a64826252ce5da2aa738855747247a971988043/pandas-2.2.3-cp313-cp313-win_amd64.whl", hash = "sha256:61c5ad4043f791b61dd4752191d9f07f0ae412515d59ba8f005832a532f8736d", size = 11481175 }, + { url = "https://files.pythonhosted.org/packages/76/a3/a5d88146815e972d40d19247b2c162e88213ef51c7c25993942c39dbf41d/pandas-2.2.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3b71f27954685ee685317063bf13c7709a7ba74fc996b84fc6821c59b0f06468", size = 12615650 }, + { url = "https://files.pythonhosted.org/packages/9c/8c/f0fd18f6140ddafc0c24122c8a964e48294acc579d47def376fef12bcb4a/pandas-2.2.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:38cf8125c40dae9d5acc10fa66af8ea6fdf760b2714ee482ca691fc66e6fcb18", size = 11290177 }, + { url = "https://files.pythonhosted.org/packages/ed/f9/e995754eab9c0f14c6777401f7eece0943840b7a9fc932221c19d1abee9f/pandas-2.2.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ba96630bc17c875161df3818780af30e43be9b166ce51c9a18c1feae342906c2", size = 14651526 }, + { url = "https://files.pythonhosted.org/packages/25/b0/98d6ae2e1abac4f35230aa756005e8654649d305df9a28b16b9ae4353bff/pandas-2.2.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1db71525a1538b30142094edb9adc10be3f3e176748cd7acc2240c2f2e5aa3a4", size = 11871013 }, + { url = "https://files.pythonhosted.org/packages/cc/57/0f72a10f9db6a4628744c8e8f0df4e6e21de01212c7c981d31e50ffc8328/pandas-2.2.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:15c0e1e02e93116177d29ff83e8b1619c93ddc9c49083f237d4312337a61165d", size = 15711620 }, + { url = "https://files.pythonhosted.org/packages/ab/5f/b38085618b950b79d2d9164a711c52b10aefc0ae6833b96f626b7021b2ed/pandas-2.2.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ad5b65698ab28ed8d7f18790a0dc58005c7629f227be9ecc1072aa74c0c1d43a", size = 13098436 }, +] + +[[package]] +name = "parso" +version = "0.8.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/66/94/68e2e17afaa9169cf6412ab0f28623903be73d1b32e208d9e8e541bb086d/parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d", size = 400609 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18", size = 103650 }, +] + +[[package]] +name = "partd" +version = "1.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "locket" }, + { name = "toolz" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b2/3a/3f06f34820a31257ddcabdfafc2672c5816be79c7e353b02c1f318daa7d4/partd-1.4.2.tar.gz", hash = "sha256:d022c33afbdc8405c226621b015e8067888173d85f7f5ecebb3cafed9a20f02c", size = 21029 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/e7/40fb618334dcdf7c5a316c0e7343c5cd82d3d866edc100d98e29bc945ecd/partd-1.4.2-py3-none-any.whl", hash = "sha256:978e4ac767ec4ba5b86c6eaa52e5a2a3bc748a2ca839e8cc798f1cc6ce6efb0f", size = 18905 }, +] + +[[package]] +name = "pathos" +version = "0.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "dill" }, + { name = "multiprocess" }, + { name = "pox" }, + { name = "ppft" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5b/a4/6274bddc49a00873d3269b7612c1553763bae6466c0c82913e16810abd51/pathos-0.3.3.tar.gz", hash = "sha256:dcb2a5f321aa34ca541c1c1861011ea49df357bb908379c21dd5741f666e0a58", size = 166953 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/f6/a459cf58ff6b2d1c0a1961ee7084f4bb549d50e288f064e7e7be5ae3a7ab/pathos-0.3.3-py3-none-any.whl", hash = "sha256:e04616c6448608ad1f809360be22e3f2078d949a36a81e6991da6c2dd1f82513", size = 82142 }, +] + +[[package]] +name = "pexpect" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ptyprocess", marker = "sys_platform != 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772 }, +] + +[[package]] +name = "pillow" +version = "11.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a5/26/0d95c04c868f6bdb0c447e3ee2de5564411845e36a858cfd63766bc7b563/pillow-11.0.0.tar.gz", hash = "sha256:72bacbaf24ac003fea9bff9837d1eedb6088758d41e100c1552930151f677739", size = 46737780 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f0/eb/f7e21b113dd48a9c97d364e0915b3988c6a0b6207652f5a92372871b7aa4/pillow-11.0.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:1c1d72714f429a521d8d2d018badc42414c3077eb187a59579f28e4270b4b0fc", size = 3154705 }, + { url = "https://files.pythonhosted.org/packages/25/b3/2b54a1d541accebe6bd8b1358b34ceb2c509f51cb7dcda8687362490da5b/pillow-11.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:499c3a1b0d6fc8213519e193796eb1a86a1be4b1877d678b30f83fd979811d1a", size = 2979222 }, + { url = "https://files.pythonhosted.org/packages/20/12/1a41eddad8265c5c19dda8fb6c269ce15ee25e0b9f8f26286e6202df6693/pillow-11.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c8b2351c85d855293a299038e1f89db92a2f35e8d2f783489c6f0b2b5f3fe8a3", size = 4190220 }, + { url = "https://files.pythonhosted.org/packages/a9/9b/8a8c4d07d77447b7457164b861d18f5a31ae6418ef5c07f6f878fa09039a/pillow-11.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f4dba50cfa56f910241eb7f883c20f1e7b1d8f7d91c750cd0b318bad443f4d5", size = 4291399 }, + { url = "https://files.pythonhosted.org/packages/fc/e4/130c5fab4a54d3991129800dd2801feeb4b118d7630148cd67f0e6269d4c/pillow-11.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:5ddbfd761ee00c12ee1be86c9c0683ecf5bb14c9772ddbd782085779a63dd55b", size = 4202709 }, + { url = "https://files.pythonhosted.org/packages/39/63/b3fc299528d7df1f678b0666002b37affe6b8751225c3d9c12cf530e73ed/pillow-11.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:45c566eb10b8967d71bf1ab8e4a525e5a93519e29ea071459ce517f6b903d7fa", size = 4372556 }, + { url = "https://files.pythonhosted.org/packages/c6/a6/694122c55b855b586c26c694937d36bb8d3b09c735ff41b2f315c6e66a10/pillow-11.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b4fd7bd29610a83a8c9b564d457cf5bd92b4e11e79a4ee4716a63c959699b306", size = 4287187 }, + { url = "https://files.pythonhosted.org/packages/ba/a9/f9d763e2671a8acd53d29b1e284ca298bc10a595527f6be30233cdb9659d/pillow-11.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:cb929ca942d0ec4fac404cbf520ee6cac37bf35be479b970c4ffadf2b6a1cad9", size = 4418468 }, + { url = "https://files.pythonhosted.org/packages/6e/0e/b5cbad2621377f11313a94aeb44ca55a9639adabcaaa073597a1925f8c26/pillow-11.0.0-cp311-cp311-win32.whl", hash = "sha256:006bcdd307cc47ba43e924099a038cbf9591062e6c50e570819743f5607404f5", size = 2249249 }, + { url = "https://files.pythonhosted.org/packages/dc/83/1470c220a4ff06cd75fc609068f6605e567ea51df70557555c2ab6516b2c/pillow-11.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:52a2d8323a465f84faaba5236567d212c3668f2ab53e1c74c15583cf507a0291", size = 2566769 }, + { url = "https://files.pythonhosted.org/packages/52/98/def78c3a23acee2bcdb2e52005fb2810ed54305602ec1bfcfab2bda6f49f/pillow-11.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:16095692a253047fe3ec028e951fa4221a1f3ed3d80c397e83541a3037ff67c9", size = 2254611 }, + { url = "https://files.pythonhosted.org/packages/1c/a3/26e606ff0b2daaf120543e537311fa3ae2eb6bf061490e4fea51771540be/pillow-11.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d2c0a187a92a1cb5ef2c8ed5412dd8d4334272617f532d4ad4de31e0495bd923", size = 3147642 }, + { url = "https://files.pythonhosted.org/packages/4f/d5/1caabedd8863526a6cfa44ee7a833bd97f945dc1d56824d6d76e11731939/pillow-11.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:084a07ef0821cfe4858fe86652fffac8e187b6ae677e9906e192aafcc1b69903", size = 2978999 }, + { url = "https://files.pythonhosted.org/packages/d9/ff/5a45000826a1aa1ac6874b3ec5a856474821a1b59d838c4f6ce2ee518fe9/pillow-11.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8069c5179902dcdce0be9bfc8235347fdbac249d23bd90514b7a47a72d9fecf4", size = 4196794 }, + { url = "https://files.pythonhosted.org/packages/9d/21/84c9f287d17180f26263b5f5c8fb201de0f88b1afddf8a2597a5c9fe787f/pillow-11.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f02541ef64077f22bf4924f225c0fd1248c168f86e4b7abdedd87d6ebaceab0f", size = 4300762 }, + { url = "https://files.pythonhosted.org/packages/84/39/63fb87cd07cc541438b448b1fed467c4d687ad18aa786a7f8e67b255d1aa/pillow-11.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:fcb4621042ac4b7865c179bb972ed0da0218a076dc1820ffc48b1d74c1e37fe9", size = 4210468 }, + { url = "https://files.pythonhosted.org/packages/7f/42/6e0f2c2d5c60f499aa29be14f860dd4539de322cd8fb84ee01553493fb4d/pillow-11.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:00177a63030d612148e659b55ba99527803288cea7c75fb05766ab7981a8c1b7", size = 4381824 }, + { url = "https://files.pythonhosted.org/packages/31/69/1ef0fb9d2f8d2d114db982b78ca4eeb9db9a29f7477821e160b8c1253f67/pillow-11.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8853a3bf12afddfdf15f57c4b02d7ded92c7a75a5d7331d19f4f9572a89c17e6", size = 4296436 }, + { url = "https://files.pythonhosted.org/packages/44/ea/dad2818c675c44f6012289a7c4f46068c548768bc6c7f4e8c4ae5bbbc811/pillow-11.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3107c66e43bda25359d5ef446f59c497de2b5ed4c7fdba0894f8d6cf3822dafc", size = 4429714 }, + { url = "https://files.pythonhosted.org/packages/af/3a/da80224a6eb15bba7a0dcb2346e2b686bb9bf98378c0b4353cd88e62b171/pillow-11.0.0-cp312-cp312-win32.whl", hash = "sha256:86510e3f5eca0ab87429dd77fafc04693195eec7fd6a137c389c3eeb4cfb77c6", size = 2249631 }, + { url = "https://files.pythonhosted.org/packages/57/97/73f756c338c1d86bb802ee88c3cab015ad7ce4b838f8a24f16b676b1ac7c/pillow-11.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:8ec4a89295cd6cd4d1058a5e6aec6bf51e0eaaf9714774e1bfac7cfc9051db47", size = 2567533 }, + { url = "https://files.pythonhosted.org/packages/0b/30/2b61876e2722374558b871dfbfcbe4e406626d63f4f6ed92e9c8e24cac37/pillow-11.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:27a7860107500d813fcd203b4ea19b04babe79448268403172782754870dac25", size = 2254890 }, + { url = "https://files.pythonhosted.org/packages/63/24/e2e15e392d00fcf4215907465d8ec2a2f23bcec1481a8ebe4ae760459995/pillow-11.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:bcd1fb5bb7b07f64c15618c89efcc2cfa3e95f0e3bcdbaf4642509de1942a699", size = 3147300 }, + { url = "https://files.pythonhosted.org/packages/43/72/92ad4afaa2afc233dc44184adff289c2e77e8cd916b3ddb72ac69495bda3/pillow-11.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0e038b0745997c7dcaae350d35859c9715c71e92ffb7e0f4a8e8a16732150f38", size = 2978742 }, + { url = "https://files.pythonhosted.org/packages/9e/da/c8d69c5bc85d72a8523fe862f05ababdc52c0a755cfe3d362656bb86552b/pillow-11.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ae08bd8ffc41aebf578c2af2f9d8749d91f448b3bfd41d7d9ff573d74f2a6b2", size = 4194349 }, + { url = "https://files.pythonhosted.org/packages/cd/e8/686d0caeed6b998351d57796496a70185376ed9c8ec7d99e1d19ad591fc6/pillow-11.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d69bfd8ec3219ae71bcde1f942b728903cad25fafe3100ba2258b973bd2bc1b2", size = 4298714 }, + { url = "https://files.pythonhosted.org/packages/ec/da/430015cec620d622f06854be67fd2f6721f52fc17fca8ac34b32e2d60739/pillow-11.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:61b887f9ddba63ddf62fd02a3ba7add935d053b6dd7d58998c630e6dbade8527", size = 4208514 }, + { url = "https://files.pythonhosted.org/packages/44/ae/7e4f6662a9b1cb5f92b9cc9cab8321c381ffbee309210940e57432a4063a/pillow-11.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:c6a660307ca9d4867caa8d9ca2c2658ab685de83792d1876274991adec7b93fa", size = 4380055 }, + { url = "https://files.pythonhosted.org/packages/74/d5/1a807779ac8a0eeed57f2b92a3c32ea1b696e6140c15bd42eaf908a261cd/pillow-11.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:73e3a0200cdda995c7e43dd47436c1548f87a30bb27fb871f352a22ab8dcf45f", size = 4296751 }, + { url = "https://files.pythonhosted.org/packages/38/8c/5fa3385163ee7080bc13026d59656267daaaaf3c728c233d530e2c2757c8/pillow-11.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fba162b8872d30fea8c52b258a542c5dfd7b235fb5cb352240c8d63b414013eb", size = 4430378 }, + { url = "https://files.pythonhosted.org/packages/ca/1d/ad9c14811133977ff87035bf426875b93097fb50af747793f013979facdb/pillow-11.0.0-cp313-cp313-win32.whl", hash = "sha256:f1b82c27e89fffc6da125d5eb0ca6e68017faf5efc078128cfaa42cf5cb38798", size = 2249588 }, + { url = "https://files.pythonhosted.org/packages/fb/01/3755ba287dac715e6afdb333cb1f6d69740a7475220b4637b5ce3d78cec2/pillow-11.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:8ba470552b48e5835f1d23ecb936bb7f71d206f9dfeee64245f30c3270b994de", size = 2567509 }, + { url = "https://files.pythonhosted.org/packages/c0/98/2c7d727079b6be1aba82d195767d35fcc2d32204c7a5820f822df5330152/pillow-11.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:846e193e103b41e984ac921b335df59195356ce3f71dcfd155aa79c603873b84", size = 2254791 }, + { url = "https://files.pythonhosted.org/packages/eb/38/998b04cc6f474e78b563716b20eecf42a2fa16a84589d23c8898e64b0ffd/pillow-11.0.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4ad70c4214f67d7466bea6a08061eba35c01b1b89eaa098040a35272a8efb22b", size = 3150854 }, + { url = "https://files.pythonhosted.org/packages/13/8e/be23a96292113c6cb26b2aa3c8b3681ec62b44ed5c2bd0b258bd59503d3c/pillow-11.0.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:6ec0d5af64f2e3d64a165f490d96368bb5dea8b8f9ad04487f9ab60dc4bb6003", size = 2982369 }, + { url = "https://files.pythonhosted.org/packages/97/8a/3db4eaabb7a2ae8203cd3a332a005e4aba00067fc514aaaf3e9721be31f1/pillow-11.0.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c809a70e43c7977c4a42aefd62f0131823ebf7dd73556fa5d5950f5b354087e2", size = 4333703 }, + { url = "https://files.pythonhosted.org/packages/28/ac/629ffc84ff67b9228fe87a97272ab125bbd4dc462745f35f192d37b822f1/pillow-11.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:4b60c9520f7207aaf2e1d94de026682fc227806c6e1f55bba7606d1c94dd623a", size = 4412550 }, + { url = "https://files.pythonhosted.org/packages/d6/07/a505921d36bb2df6868806eaf56ef58699c16c388e378b0dcdb6e5b2fb36/pillow-11.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:1e2688958a840c822279fda0086fec1fdab2f95bf2b717b66871c4ad9859d7e8", size = 4461038 }, + { url = "https://files.pythonhosted.org/packages/d6/b9/fb620dd47fc7cc9678af8f8bd8c772034ca4977237049287e99dda360b66/pillow-11.0.0-cp313-cp313t-win32.whl", hash = "sha256:607bbe123c74e272e381a8d1957083a9463401f7bd01287f50521ecb05a313f8", size = 2253197 }, + { url = "https://files.pythonhosted.org/packages/df/86/25dde85c06c89d7fc5db17940f07aae0a56ac69aa9ccb5eb0f09798862a8/pillow-11.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5c39ed17edea3bc69c743a8dd3e9853b7509625c2462532e62baa0732163a904", size = 2572169 }, + { url = "https://files.pythonhosted.org/packages/51/85/9c33f2517add612e17f3381aee7c4072779130c634921a756c97bc29fb49/pillow-11.0.0-cp313-cp313t-win_arm64.whl", hash = "sha256:75acbbeb05b86bc53cbe7b7e6fe00fbcf82ad7c684b3ad82e3d711da9ba287d3", size = 2256828 }, +] + +[[package]] +name = "pint" +version = "0.24.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "flexcache" }, + { name = "flexparser" }, + { name = "platformdirs" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/20/bb/52b15ddf7b7706ed591134a895dbf6e41c8348171fb635e655e0a4bbb0ea/pint-0.24.4.tar.gz", hash = "sha256:35275439b574837a6cd3020a5a4a73645eb125ce4152a73a2f126bf164b91b80", size = 342225 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/16/bd2f5904557265882108dc2e04f18abc05ab0c2b7082ae9430091daf1d5c/Pint-0.24.4-py3-none-any.whl", hash = "sha256:aa54926c8772159fcf65f82cc0d34de6768c151b32ad1deb0331291c38fe7659", size = 302029 }, +] + +[[package]] +name = "pip" +version = "24.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f4/b1/b422acd212ad7eedddaf7981eee6e5de085154ff726459cf2da7c5a184c1/pip-24.3.1.tar.gz", hash = "sha256:ebcb60557f2aefabc2e0f918751cd24ea0d56d8ec5445fe1807f1d2109660b99", size = 1931073 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/7d/500c9ad20238fcfcb4cb9243eede163594d7020ce87bd9610c9e02771876/pip-24.3.1-py3-none-any.whl", hash = "sha256:3790624780082365f47549d032f3770eeb2b1e8bd1f7b2e02dace1afa361b4ed", size = 1822182 }, +] + +[[package]] +name = "platformdirs" +version = "4.3.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/13/fc/128cc9cb8f03208bdbf93d3aa862e16d376844a14f9a0ce5cf4507372de4/platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907", size = 21302 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/a6/bc1012356d8ece4d66dd75c4b9fc6c1f6650ddd5991e421177d9f8f671be/platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb", size = 18439 }, +] + +[[package]] +name = "pluggy" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556 }, +] + +[[package]] +name = "pooch" +version = "1.8.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, + { name = "platformdirs" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c6/77/b3d3e00c696c16cf99af81ef7b1f5fe73bd2a307abca41bd7605429fe6e5/pooch-1.8.2.tar.gz", hash = "sha256:76561f0de68a01da4df6af38e9955c4c9d1a5c90da73f7e40276a5728ec83d10", size = 59353 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a8/87/77cc11c7a9ea9fd05503def69e3d18605852cd0d4b0d3b8f15bbeb3ef1d1/pooch-1.8.2-py3-none-any.whl", hash = "sha256:3529a57096f7198778a5ceefd5ac3ef0e4d06a6ddaf9fc2d609b806f25302c47", size = 64574 }, +] + +[[package]] +name = "posix-ipc" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/07/7f/b954f224a226960a4aa98b6c5fa3d4f3fafb20bb8461446e41b563aee863/posix_ipc-1.1.1.tar.gz", hash = "sha256:e2456ba0cfb2ee5ba14121450e8d825b3c4a1461fca0761220aab66d4111cbb7", size = 94341 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0e/53/211e950779de0e0337db5370dcfc7645d56fdf534c4c774924282a8f3e84/posix_ipc-1.1.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:516259a7f1b1ba49a16ebe06ae23e9246162cb26e3eb825e6535c487e67478d2", size = 20084 }, +] + +[[package]] +name = "pox" +version = "0.3.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2e/0d/f2eb94b4d1358a60f3539a6abcbbd757fbcb78538fe8d4cfa49850356ccf/pox-0.3.5.tar.gz", hash = "sha256:8120ee4c94e950e6e0483e050a4f0e56076e590ba0a9add19524c254bd23c2d1", size = 119452 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/4c/490d8f7825f38fa77bff188c568163f222d01f6c6d76f574429135edfc49/pox-0.3.5-py3-none-any.whl", hash = "sha256:9e82bcc9e578b43e80a99cad80f0d8f44f4d424f0ee4ee8d4db27260a6aa365a", size = 29492 }, +] + +[[package]] +name = "ppft" +version = "1.7.6.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2b/06/305532df3e1b0c601f60854b6e080991835809d077934cf41976d0f224ce/ppft-1.7.6.9.tar.gz", hash = "sha256:73161c67474ea9d81d04bcdad166d399cff3f084d5d2dc21ebdd46c075bbc265", size = 136395 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/02/b3/45a04dabc39d93ad4836d99625e7c5350257b48e9ae2c5b701f3d5da6960/ppft-1.7.6.9-py3-none-any.whl", hash = "sha256:dab36548db5ca3055067fbe6b1a17db5fee29f3c366c579a9a27cebb52ed96f0", size = 56792 }, +] + +[[package]] +name = "pre-commit" +version = "4.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cfgv" }, + { name = "identify" }, + { name = "nodeenv" }, + { name = "pyyaml" }, + { name = "virtualenv" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2e/c8/e22c292035f1bac8b9f5237a2622305bc0304e776080b246f3df57c4ff9f/pre_commit-4.0.1.tar.gz", hash = "sha256:80905ac375958c0444c65e9cebebd948b3cdb518f335a091a670a89d652139d2", size = 191678 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/16/8f/496e10d51edd6671ebe0432e33ff800aa86775d2d147ce7d43389324a525/pre_commit-4.0.1-py2.py3-none-any.whl", hash = "sha256:efde913840816312445dc98787724647c65473daefe420785f885e8ed9a06878", size = 218713 }, +] + +[[package]] +name = "prompt-toolkit" +version = "3.0.48" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wcwidth" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2d/4f/feb5e137aff82f7c7f3248267b97451da3644f6cdc218edfe549fb354127/prompt_toolkit-3.0.48.tar.gz", hash = "sha256:d6623ab0477a80df74e646bdbc93621143f5caf104206aa29294d53de1a03d90", size = 424684 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/6a/fd08d94654f7e67c52ca30523a178b3f8ccc4237fce4be90d39c938a831a/prompt_toolkit-3.0.48-py3-none-any.whl", hash = "sha256:f49a827f90062e411f1ce1f854f2aedb3c23353244f8108b89283587397ac10e", size = 386595 }, +] + +[[package]] +name = "propcache" +version = "0.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/c8/2a13f78d82211490855b2fb303b6721348d0787fdd9a12ac46d99d3acde1/propcache-0.2.1.tar.gz", hash = "sha256:3f77ce728b19cb537714499928fe800c3dda29e8d9428778fc7c186da4c09a64", size = 41735 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bc/0f/2913b6791ebefb2b25b4efd4bb2299c985e09786b9f5b19184a88e5778dd/propcache-0.2.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1ffc3cca89bb438fb9c95c13fc874012f7b9466b89328c3c8b1aa93cdcfadd16", size = 79297 }, + { url = "https://files.pythonhosted.org/packages/cf/73/af2053aeccd40b05d6e19058419ac77674daecdd32478088b79375b9ab54/propcache-0.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f174bbd484294ed9fdf09437f889f95807e5f229d5d93588d34e92106fbf6717", size = 45611 }, + { url = "https://files.pythonhosted.org/packages/3c/09/8386115ba7775ea3b9537730e8cf718d83bbf95bffe30757ccf37ec4e5da/propcache-0.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:70693319e0b8fd35dd863e3e29513875eb15c51945bf32519ef52927ca883bc3", size = 45146 }, + { url = "https://files.pythonhosted.org/packages/03/7a/793aa12f0537b2e520bf09f4c6833706b63170a211ad042ca71cbf79d9cb/propcache-0.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b480c6a4e1138e1aa137c0079b9b6305ec6dcc1098a8ca5196283e8a49df95a9", size = 232136 }, + { url = "https://files.pythonhosted.org/packages/f1/38/b921b3168d72111769f648314100558c2ea1d52eb3d1ba7ea5c4aa6f9848/propcache-0.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d27b84d5880f6d8aa9ae3edb253c59d9f6642ffbb2c889b78b60361eed449787", size = 239706 }, + { url = "https://files.pythonhosted.org/packages/14/29/4636f500c69b5edea7786db3c34eb6166f3384b905665ce312a6e42c720c/propcache-0.2.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:857112b22acd417c40fa4595db2fe28ab900c8c5fe4670c7989b1c0230955465", size = 238531 }, + { url = "https://files.pythonhosted.org/packages/85/14/01fe53580a8e1734ebb704a3482b7829a0ef4ea68d356141cf0994d9659b/propcache-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf6c4150f8c0e32d241436526f3c3f9cbd34429492abddbada2ffcff506c51af", size = 231063 }, + { url = "https://files.pythonhosted.org/packages/33/5c/1d961299f3c3b8438301ccfbff0143b69afcc30c05fa28673cface692305/propcache-0.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66d4cfda1d8ed687daa4bc0274fcfd5267873db9a5bc0418c2da19273040eeb7", size = 220134 }, + { url = "https://files.pythonhosted.org/packages/00/d0/ed735e76db279ba67a7d3b45ba4c654e7b02bc2f8050671ec365d8665e21/propcache-0.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c2f992c07c0fca81655066705beae35fc95a2fa7366467366db627d9f2ee097f", size = 220009 }, + { url = "https://files.pythonhosted.org/packages/75/90/ee8fab7304ad6533872fee982cfff5a53b63d095d78140827d93de22e2d4/propcache-0.2.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:4a571d97dbe66ef38e472703067021b1467025ec85707d57e78711c085984e54", size = 212199 }, + { url = "https://files.pythonhosted.org/packages/eb/ec/977ffaf1664f82e90737275873461695d4c9407d52abc2f3c3e24716da13/propcache-0.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:bb6178c241278d5fe853b3de743087be7f5f4c6f7d6d22a3b524d323eecec505", size = 214827 }, + { url = "https://files.pythonhosted.org/packages/57/48/031fb87ab6081764054821a71b71942161619549396224cbb242922525e8/propcache-0.2.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:ad1af54a62ffe39cf34db1aa6ed1a1873bd548f6401db39d8e7cd060b9211f82", size = 228009 }, + { url = "https://files.pythonhosted.org/packages/1a/06/ef1390f2524850838f2390421b23a8b298f6ce3396a7cc6d39dedd4047b0/propcache-0.2.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:e7048abd75fe40712005bcfc06bb44b9dfcd8e101dda2ecf2f5aa46115ad07ca", size = 231638 }, + { url = "https://files.pythonhosted.org/packages/38/2a/101e6386d5a93358395da1d41642b79c1ee0f3b12e31727932b069282b1d/propcache-0.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:160291c60081f23ee43d44b08a7e5fb76681221a8e10b3139618c5a9a291b84e", size = 222788 }, + { url = "https://files.pythonhosted.org/packages/db/81/786f687951d0979007e05ad9346cd357e50e3d0b0f1a1d6074df334b1bbb/propcache-0.2.1-cp311-cp311-win32.whl", hash = "sha256:819ce3b883b7576ca28da3861c7e1a88afd08cc8c96908e08a3f4dd64a228034", size = 40170 }, + { url = "https://files.pythonhosted.org/packages/cf/59/7cc7037b295d5772eceb426358bb1b86e6cab4616d971bd74275395d100d/propcache-0.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:edc9fc7051e3350643ad929df55c451899bb9ae6d24998a949d2e4c87fb596d3", size = 44404 }, + { url = "https://files.pythonhosted.org/packages/4c/28/1d205fe49be8b1b4df4c50024e62480a442b1a7b818e734308bb0d17e7fb/propcache-0.2.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:081a430aa8d5e8876c6909b67bd2d937bfd531b0382d3fdedb82612c618bc41a", size = 79588 }, + { url = "https://files.pythonhosted.org/packages/21/ee/fc4d893f8d81cd4971affef2a6cb542b36617cd1d8ce56b406112cb80bf7/propcache-0.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d2ccec9ac47cf4e04897619c0e0c1a48c54a71bdf045117d3a26f80d38ab1fb0", size = 45825 }, + { url = "https://files.pythonhosted.org/packages/4a/de/bbe712f94d088da1d237c35d735f675e494a816fd6f54e9db2f61ef4d03f/propcache-0.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:14d86fe14b7e04fa306e0c43cdbeebe6b2c2156a0c9ce56b815faacc193e320d", size = 45357 }, + { url = "https://files.pythonhosted.org/packages/7f/14/7ae06a6cf2a2f1cb382586d5a99efe66b0b3d0c6f9ac2f759e6f7af9d7cf/propcache-0.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:049324ee97bb67285b49632132db351b41e77833678432be52bdd0289c0e05e4", size = 241869 }, + { url = "https://files.pythonhosted.org/packages/cc/59/227a78be960b54a41124e639e2c39e8807ac0c751c735a900e21315f8c2b/propcache-0.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1cd9a1d071158de1cc1c71a26014dcdfa7dd3d5f4f88c298c7f90ad6f27bb46d", size = 247884 }, + { url = "https://files.pythonhosted.org/packages/84/58/f62b4ffaedf88dc1b17f04d57d8536601e4e030feb26617228ef930c3279/propcache-0.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98110aa363f1bb4c073e8dcfaefd3a5cea0f0834c2aab23dda657e4dab2f53b5", size = 248486 }, + { url = "https://files.pythonhosted.org/packages/1c/07/ebe102777a830bca91bbb93e3479cd34c2ca5d0361b83be9dbd93104865e/propcache-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:647894f5ae99c4cf6bb82a1bb3a796f6e06af3caa3d32e26d2350d0e3e3faf24", size = 243649 }, + { url = "https://files.pythonhosted.org/packages/ed/bc/4f7aba7f08f520376c4bb6a20b9a981a581b7f2e385fa0ec9f789bb2d362/propcache-0.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bfd3223c15bebe26518d58ccf9a39b93948d3dcb3e57a20480dfdd315356baff", size = 229103 }, + { url = "https://files.pythonhosted.org/packages/fe/d5/04ac9cd4e51a57a96f78795e03c5a0ddb8f23ec098b86f92de028d7f2a6b/propcache-0.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d71264a80f3fcf512eb4f18f59423fe82d6e346ee97b90625f283df56aee103f", size = 226607 }, + { url = "https://files.pythonhosted.org/packages/e3/f0/24060d959ea41d7a7cc7fdbf68b31852331aabda914a0c63bdb0e22e96d6/propcache-0.2.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:e73091191e4280403bde6c9a52a6999d69cdfde498f1fdf629105247599b57ec", size = 221153 }, + { url = "https://files.pythonhosted.org/packages/77/a7/3ac76045a077b3e4de4859a0753010765e45749bdf53bd02bc4d372da1a0/propcache-0.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3935bfa5fede35fb202c4b569bb9c042f337ca4ff7bd540a0aa5e37131659348", size = 222151 }, + { url = "https://files.pythonhosted.org/packages/e7/af/5e29da6f80cebab3f5a4dcd2a3240e7f56f2c4abf51cbfcc99be34e17f0b/propcache-0.2.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f508b0491767bb1f2b87fdfacaba5f7eddc2f867740ec69ece6d1946d29029a6", size = 233812 }, + { url = "https://files.pythonhosted.org/packages/8c/89/ebe3ad52642cc5509eaa453e9f4b94b374d81bae3265c59d5c2d98efa1b4/propcache-0.2.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:1672137af7c46662a1c2be1e8dc78cb6d224319aaa40271c9257d886be4363a6", size = 238829 }, + { url = "https://files.pythonhosted.org/packages/e9/2f/6b32f273fa02e978b7577159eae7471b3cfb88b48563b1c2578b2d7ca0bb/propcache-0.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b74c261802d3d2b85c9df2dfb2fa81b6f90deeef63c2db9f0e029a3cac50b518", size = 230704 }, + { url = "https://files.pythonhosted.org/packages/5c/2e/f40ae6ff5624a5f77edd7b8359b208b5455ea113f68309e2b00a2e1426b6/propcache-0.2.1-cp312-cp312-win32.whl", hash = "sha256:d09c333d36c1409d56a9d29b3a1b800a42c76a57a5a8907eacdbce3f18768246", size = 40050 }, + { url = "https://files.pythonhosted.org/packages/3b/77/a92c3ef994e47180862b9d7d11e37624fb1c00a16d61faf55115d970628b/propcache-0.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:c214999039d4f2a5b2073ac506bba279945233da8c786e490d411dfc30f855c1", size = 44117 }, + { url = "https://files.pythonhosted.org/packages/0f/2a/329e0547cf2def8857157f9477669043e75524cc3e6251cef332b3ff256f/propcache-0.2.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aca405706e0b0a44cc6bfd41fbe89919a6a56999157f6de7e182a990c36e37bc", size = 77002 }, + { url = "https://files.pythonhosted.org/packages/12/2d/c4df5415e2382f840dc2ecbca0eeb2293024bc28e57a80392f2012b4708c/propcache-0.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:12d1083f001ace206fe34b6bdc2cb94be66d57a850866f0b908972f90996b3e9", size = 44639 }, + { url = "https://files.pythonhosted.org/packages/d0/5a/21aaa4ea2f326edaa4e240959ac8b8386ea31dedfdaa636a3544d9e7a408/propcache-0.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d93f3307ad32a27bda2e88ec81134b823c240aa3abb55821a8da553eed8d9439", size = 44049 }, + { url = "https://files.pythonhosted.org/packages/4e/3e/021b6cd86c0acc90d74784ccbb66808b0bd36067a1bf3e2deb0f3845f618/propcache-0.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba278acf14471d36316159c94a802933d10b6a1e117b8554fe0d0d9b75c9d536", size = 224819 }, + { url = "https://files.pythonhosted.org/packages/3c/57/c2fdeed1b3b8918b1770a133ba5c43ad3d78e18285b0c06364861ef5cc38/propcache-0.2.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4e6281aedfca15301c41f74d7005e6e3f4ca143584ba696ac69df4f02f40d629", size = 229625 }, + { url = "https://files.pythonhosted.org/packages/9d/81/70d4ff57bf2877b5780b466471bebf5892f851a7e2ca0ae7ffd728220281/propcache-0.2.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b750a8e5a1262434fb1517ddf64b5de58327f1adc3524a5e44c2ca43305eb0b", size = 232934 }, + { url = "https://files.pythonhosted.org/packages/3c/b9/bb51ea95d73b3fb4100cb95adbd4e1acaf2cbb1fd1083f5468eeb4a099a8/propcache-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf72af5e0fb40e9babf594308911436c8efde3cb5e75b6f206c34ad18be5c052", size = 227361 }, + { url = "https://files.pythonhosted.org/packages/f1/20/3c6d696cd6fd70b29445960cc803b1851a1131e7a2e4ee261ee48e002bcd/propcache-0.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b2d0a12018b04f4cb820781ec0dffb5f7c7c1d2a5cd22bff7fb055a2cb19ebce", size = 213904 }, + { url = "https://files.pythonhosted.org/packages/a1/cb/1593bfc5ac6d40c010fa823f128056d6bc25b667f5393781e37d62f12005/propcache-0.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e800776a79a5aabdb17dcc2346a7d66d0777e942e4cd251defeb084762ecd17d", size = 212632 }, + { url = "https://files.pythonhosted.org/packages/6d/5c/e95617e222be14a34c709442a0ec179f3207f8a2b900273720501a70ec5e/propcache-0.2.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:4160d9283bd382fa6c0c2b5e017acc95bc183570cd70968b9202ad6d8fc48dce", size = 207897 }, + { url = "https://files.pythonhosted.org/packages/8e/3b/56c5ab3dc00f6375fbcdeefdede5adf9bee94f1fab04adc8db118f0f9e25/propcache-0.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:30b43e74f1359353341a7adb783c8f1b1c676367b011709f466f42fda2045e95", size = 208118 }, + { url = "https://files.pythonhosted.org/packages/86/25/d7ef738323fbc6ebcbce33eb2a19c5e07a89a3df2fded206065bd5e868a9/propcache-0.2.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:58791550b27d5488b1bb52bc96328456095d96206a250d28d874fafe11b3dfaf", size = 217851 }, + { url = "https://files.pythonhosted.org/packages/b3/77/763e6cef1852cf1ba740590364ec50309b89d1c818e3256d3929eb92fabf/propcache-0.2.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:0f022d381747f0dfe27e99d928e31bc51a18b65bb9e481ae0af1380a6725dd1f", size = 222630 }, + { url = "https://files.pythonhosted.org/packages/4f/e9/0f86be33602089c701696fbed8d8c4c07b6ee9605c5b7536fd27ed540c5b/propcache-0.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:297878dc9d0a334358f9b608b56d02e72899f3b8499fc6044133f0d319e2ec30", size = 216269 }, + { url = "https://files.pythonhosted.org/packages/cc/02/5ac83217d522394b6a2e81a2e888167e7ca629ef6569a3f09852d6dcb01a/propcache-0.2.1-cp313-cp313-win32.whl", hash = "sha256:ddfab44e4489bd79bda09d84c430677fc7f0a4939a73d2bba3073036f487a0a6", size = 39472 }, + { url = "https://files.pythonhosted.org/packages/f4/33/d6f5420252a36034bc8a3a01171bc55b4bff5df50d1c63d9caa50693662f/propcache-0.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:556fc6c10989f19a179e4321e5d678db8eb2924131e64652a51fe83e4c3db0e1", size = 43363 }, + { url = "https://files.pythonhosted.org/packages/41/b6/c5319caea262f4821995dca2107483b94a3345d4607ad797c76cb9c36bcc/propcache-0.2.1-py3-none-any.whl", hash = "sha256:52277518d6aae65536e9cea52d4e7fd2f7a66f4aa2d30ed3f2fcea620ace3c54", size = 11818 }, +] + +[[package]] +name = "proto-plus" +version = "1.25.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7e/05/74417b2061e1bf1b82776037cad97094228fa1c1b6e82d08a78d3fb6ddb6/proto_plus-1.25.0.tar.gz", hash = "sha256:fbb17f57f7bd05a68b7707e745e26528b0b3c34e378db91eef93912c54982d91", size = 56124 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dd/25/0b7cc838ae3d76d46539020ec39fc92bfc9acc29367e58fe912702c2a79e/proto_plus-1.25.0-py3-none-any.whl", hash = "sha256:c91fc4a65074ade8e458e95ef8bac34d4008daa7cce4a12d6707066fca648961", size = 50126 }, +] + +[[package]] +name = "protobuf" +version = "5.29.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f7/d1/e0a911544ca9993e0f17ce6d3cc0932752356c1b0a834397f28e63479344/protobuf-5.29.3.tar.gz", hash = "sha256:5da0f41edaf117bde316404bad1a486cb4ededf8e4a54891296f648e8e076620", size = 424945 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dc/7a/1e38f3cafa022f477ca0f57a1f49962f21ad25850c3ca0acd3b9d0091518/protobuf-5.29.3-cp310-abi3-win32.whl", hash = "sha256:3ea51771449e1035f26069c4c7fd51fba990d07bc55ba80701c78f886bf9c888", size = 422708 }, + { url = "https://files.pythonhosted.org/packages/61/fa/aae8e10512b83de633f2646506a6d835b151edf4b30d18d73afd01447253/protobuf-5.29.3-cp310-abi3-win_amd64.whl", hash = "sha256:a4fa6f80816a9a0678429e84973f2f98cbc218cca434abe8db2ad0bffc98503a", size = 434508 }, + { url = "https://files.pythonhosted.org/packages/dd/04/3eaedc2ba17a088961d0e3bd396eac764450f431621b58a04ce898acd126/protobuf-5.29.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a8434404bbf139aa9e1300dbf989667a83d42ddda9153d8ab76e0d5dcaca484e", size = 417825 }, + { url = "https://files.pythonhosted.org/packages/4f/06/7c467744d23c3979ce250397e26d8ad8eeb2bea7b18ca12ad58313c1b8d5/protobuf-5.29.3-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:daaf63f70f25e8689c072cfad4334ca0ac1d1e05a92fc15c54eb9cf23c3efd84", size = 319573 }, + { url = "https://files.pythonhosted.org/packages/a8/45/2ebbde52ad2be18d3675b6bee50e68cd73c9e0654de77d595540b5129df8/protobuf-5.29.3-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:c027e08a08be10b67c06bf2370b99c811c466398c357e615ca88c91c07f0910f", size = 319672 }, + { url = "https://files.pythonhosted.org/packages/fd/b2/ab07b09e0f6d143dfb839693aa05765257bceaa13d03bf1a696b78323e7a/protobuf-5.29.3-py3-none-any.whl", hash = "sha256:0a18ed4a24198528f2333802eb075e59dea9d679ab7a6c5efb017a59004d849f", size = 172550 }, +] + +[[package]] +name = "psutil" +version = "6.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/26/10/2a30b13c61e7cf937f4adf90710776b7918ed0a9c434e2c38224732af310/psutil-6.1.0.tar.gz", hash = "sha256:353815f59a7f64cdaca1c0307ee13558a0512f6db064e92fe833784f08539c7a", size = 508565 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/01/9e/8be43078a171381953cfee33c07c0d628594b5dbfc5157847b85022c2c1b/psutil-6.1.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6e2dcd475ce8b80522e51d923d10c7871e45f20918e027ab682f94f1c6351688", size = 247762 }, + { url = "https://files.pythonhosted.org/packages/1d/cb/313e80644ea407f04f6602a9e23096540d9dc1878755f3952ea8d3d104be/psutil-6.1.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:0895b8414afafc526712c498bd9de2b063deaac4021a3b3c34566283464aff8e", size = 248777 }, + { url = "https://files.pythonhosted.org/packages/65/8e/bcbe2025c587b5d703369b6a75b65d41d1367553da6e3f788aff91eaf5bd/psutil-6.1.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9dcbfce5d89f1d1f2546a2090f4fcf87c7f669d1d90aacb7d7582addece9fb38", size = 284259 }, + { url = "https://files.pythonhosted.org/packages/58/4d/8245e6f76a93c98aab285a43ea71ff1b171bcd90c9d238bf81f7021fb233/psutil-6.1.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:498c6979f9c6637ebc3a73b3f87f9eb1ec24e1ce53a7c5173b8508981614a90b", size = 287255 }, + { url = "https://files.pythonhosted.org/packages/27/c2/d034856ac47e3b3cdfa9720d0e113902e615f4190d5d1bdb8df4b2015fb2/psutil-6.1.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d905186d647b16755a800e7263d43df08b790d709d575105d419f8b6ef65423a", size = 288804 }, + { url = "https://files.pythonhosted.org/packages/ea/55/5389ed243c878725feffc0d6a3bc5ef6764312b6fc7c081faaa2cfa7ef37/psutil-6.1.0-cp37-abi3-win32.whl", hash = "sha256:1ad45a1f5d0b608253b11508f80940985d1d0c8f6111b5cb637533a0e6ddc13e", size = 250386 }, + { url = "https://files.pythonhosted.org/packages/11/91/87fa6f060e649b1e1a7b19a4f5869709fbf750b7c8c262ee776ec32f3028/psutil-6.1.0-cp37-abi3-win_amd64.whl", hash = "sha256:a8fb3752b491d246034fa4d279ff076501588ce8cbcdbb62c32fd7a377d996be", size = 254228 }, +] + +[[package]] +name = "psygnal" +version = "0.11.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bc/b0/194cfbcb76dbf9c4a1c4271ccc825b38406d20fb7f95fd18320c28708800/psygnal-0.11.1.tar.gz", hash = "sha256:f9b02ca246ab0adb108c4010b4a486e464f940543201074591e50370cd7b0cc0", size = 102103 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a6/a8/ed06fe70c8bd03f02ab0c1df020f53f079a6dbae056eba0a91823c0d1242/psygnal-0.11.1-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:3c04baec10f882cdf784a7312e23892416188417ad85607e6d1de2e8a9e70709", size = 427499 }, + { url = "https://files.pythonhosted.org/packages/25/92/6dcab17c3bb91fa3f250ebdbb66de55332436da836c4c547c26e3942877e/psygnal-0.11.1-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:8f77317cbd11fbed5bfdd40ea41b4e551ee0cf37881cdbc325b67322af577485", size = 453373 }, + { url = "https://files.pythonhosted.org/packages/84/6f/868f1d7d22c76b96e0c8a75f8eb196deaff83916ad2da7bd78d1d0f6a5df/psygnal-0.11.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24e69ea57ee39e3677298f38a18828af87cdc0bf0aa64685d44259e608bae3ec", size = 717571 }, + { url = "https://files.pythonhosted.org/packages/da/7d/24ca61d177b26e6ab89e9c520dca9c6341083920ab0ea8ac763a31b2b029/psygnal-0.11.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d77f1a71fe9859c0335c87d92afe1b17c520a4137326810e94351839342d8fc7", size = 695336 }, + { url = "https://files.pythonhosted.org/packages/33/5d/9b2d8f91a9198dda6ad0eaa276f975207b1314ac2d22a2f905f0a6e34524/psygnal-0.11.1-cp312-cp312-macosx_10_16_arm64.whl", hash = "sha256:0b55cb42e468f3a7de75392520778604fef2bc518b7df36c639b35ce4ed92016", size = 425244 }, + { url = "https://files.pythonhosted.org/packages/c4/66/e1bd57a8efef6582141939876d014f86792adbbb8853bd475a1cbf3649ca/psygnal-0.11.1-cp312-cp312-macosx_10_16_x86_64.whl", hash = "sha256:c7dd3cf809c9c1127d90c6b11fbbd1eb2d66d512ccd4d5cab048786f13d11220", size = 444681 }, + { url = "https://files.pythonhosted.org/packages/49/ad/8ee3f8ac1d59cf269ae2d55f7cac7c65fe3b3f41cada5d6a17bc2f4c5d6d/psygnal-0.11.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:885922a6e65ece9ff8ccf2b6810f435ca8067f410889f7a8fffb6b0d61421a0d", size = 743785 }, + { url = "https://files.pythonhosted.org/packages/14/54/b29b854dff0e27bdaf42a7c1edc65f6d3ea35866e9d9250f1dbabf6381a0/psygnal-0.11.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1c2388360a9ffcd1381e9b36d0f794287a270d58e69bf17658a194bbf86685c1", size = 725134 }, + { url = "https://files.pythonhosted.org/packages/68/76/d5c5bf5a932ec2dcdc4a23565815a1cc5fd96b03b26ff3f647cdff5ea62c/psygnal-0.11.1-py3-none-any.whl", hash = "sha256:04255fe28828060a80320f8fda937c47bc0c21ca14f55a13eb7c494b165ea395", size = 76998 }, +] + +[[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 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993 }, +] + +[[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 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842 }, +] + +[[package]] +name = "pyasn1" +version = "0.6.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ba/e9/01f1a64245b89f039897cb0130016d79f77d52669aae6ee7b159a6c4c018/pyasn1-0.6.1.tar.gz", hash = "sha256:6f580d2bdd84365380830acf45550f2511469f673cb4a5ae3857a3170128b034", size = 145322 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/f1/d6a797abb14f6283c0ddff96bbdd46937f64122b8c925cab503dd37f8214/pyasn1-0.6.1-py3-none-any.whl", hash = "sha256:0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629", size = 83135 }, +] + +[[package]] +name = "pyasn1-modules" +version = "0.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyasn1" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1d/67/6afbf0d507f73c32d21084a79946bfcfca5fbc62a72057e9c23797a737c9/pyasn1_modules-0.4.1.tar.gz", hash = "sha256:c28e2dbf9c06ad61c71a075c7e0f9fd0f1b0bb2d2ad4377f240d33ac2ab60a7c", size = 310028 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/89/bc88a6711935ba795a679ea6ebee07e128050d6382eaa35a0a47c8032bdc/pyasn1_modules-0.4.1-py3-none-any.whl", hash = "sha256:49bfa96b45a292b711e986f222502c1c9a5e1f4e568fc30e2574a6c7d07838fd", size = 181537 }, +] + +[[package]] +name = "pyconify" +version = "0.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dd/21/8b703dd994e4833dcfa611536485ce2096c215aa74cbf610c2ff51a7dea8/pyconify-0.1.6.tar.gz", hash = "sha256:25272f7a29965f32ee698c9da6aab8bbbeb0756ca3bfeadd3d9effab689d239d", size = 22236 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/34/fc/be68d2acc43d22dbfe6d52d573dc83da14e4fd45821acaf42992e8803682/pyconify-0.1.6-py3-none-any.whl", hash = "sha256:63040836b344ec351c05531231609edd30425c145ff68478b6250f33135b8fc5", size = 18929 }, +] + +[[package]] +name = "pycparser" +version = "2.22" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552 }, +] + +[[package]] +name = "pydantic" +version = "2.10.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/70/7e/fb60e6fee04d0ef8f15e4e01ff187a196fa976eb0f0ab524af4599e5754c/pydantic-2.10.4.tar.gz", hash = "sha256:82f12e9723da6de4fe2ba888b5971157b3be7ad914267dea8f05f82b28254f06", size = 762094 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f3/26/3e1bbe954fde7ee22a6e7d31582c642aad9e84ffe4b5fb61e63b87cd326f/pydantic-2.10.4-py3-none-any.whl", hash = "sha256:597e135ea68be3a37552fb524bc7d0d66dcf93d395acd93a00682f1efcb8ee3d", size = 431765 }, +] + +[[package]] +name = "pydantic-compat" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pydantic" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9c/7e/43400b6e0800065a982efcfa3e87c8f8d247d60ea75ca1a9d01702e050f8/pydantic_compat-0.1.2.tar.gz", hash = "sha256:c5c5bca39ca2d22cad00c02898e400e1920e5127649a8e860637f15566739373", size = 12838 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7f/65/2edf586ff7b3dfc520977c6529c9b718c86ef8459ece088f1ef1f74bf1d4/pydantic_compat-0.1.2-py3-none-any.whl", hash = "sha256:37a4df48565a35aedc947f0fde5edbdff270a30836d995923287292bb59d5677", size = 13092 }, +] + +[[package]] +name = "pydantic-core" +version = "2.27.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/01/f3e5ac5e7c25833db5eb555f7b7ab24cd6f8c322d3a3ad2d67a952dc0abc/pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39", size = 413443 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/89/f3450af9d09d44eea1f2c369f49e8f181d742f28220f88cc4dfaae91ea6e/pydantic_core-2.27.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8e10c99ef58cfdf2a66fc15d66b16c4a04f62bca39db589ae8cba08bc55331bc", size = 1893421 }, + { url = "https://files.pythonhosted.org/packages/9e/e3/71fe85af2021f3f386da42d291412e5baf6ce7716bd7101ea49c810eda90/pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7", size = 1814998 }, + { url = "https://files.pythonhosted.org/packages/a6/3c/724039e0d848fd69dbf5806894e26479577316c6f0f112bacaf67aa889ac/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c19d1ea0673cd13cc2f872f6c9ab42acc4e4f492a7ca9d3795ce2b112dd7e15", size = 1826167 }, + { url = "https://files.pythonhosted.org/packages/2b/5b/1b29e8c1fb5f3199a9a57c1452004ff39f494bbe9bdbe9a81e18172e40d3/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e68c4446fe0810e959cdff46ab0a41ce2f2c86d227d96dc3847af0ba7def306", size = 1865071 }, + { url = "https://files.pythonhosted.org/packages/89/6c/3985203863d76bb7d7266e36970d7e3b6385148c18a68cc8915fd8c84d57/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9640b0059ff4f14d1f37321b94061c6db164fbe49b334b31643e0528d100d99", size = 2036244 }, + { url = "https://files.pythonhosted.org/packages/0e/41/f15316858a246b5d723f7d7f599f79e37493b2e84bfc789e58d88c209f8a/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:40d02e7d45c9f8af700f3452f329ead92da4c5f4317ca9b896de7ce7199ea459", size = 2737470 }, + { url = "https://files.pythonhosted.org/packages/a8/7c/b860618c25678bbd6d1d99dbdfdf0510ccb50790099b963ff78a124b754f/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c1fd185014191700554795c99b347d64f2bb637966c4cfc16998a0ca700d048", size = 1992291 }, + { url = "https://files.pythonhosted.org/packages/bf/73/42c3742a391eccbeab39f15213ecda3104ae8682ba3c0c28069fbcb8c10d/pydantic_core-2.27.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d81d2068e1c1228a565af076598f9e7451712700b673de8f502f0334f281387d", size = 1994613 }, + { url = "https://files.pythonhosted.org/packages/94/7a/941e89096d1175d56f59340f3a8ebaf20762fef222c298ea96d36a6328c5/pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a4207639fb02ec2dbb76227d7c751a20b1a6b4bc52850568e52260cae64ca3b", size = 2002355 }, + { url = "https://files.pythonhosted.org/packages/6e/95/2359937a73d49e336a5a19848713555605d4d8d6940c3ec6c6c0ca4dcf25/pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:3de3ce3c9ddc8bbd88f6e0e304dea0e66d843ec9de1b0042b0911c1663ffd474", size = 2126661 }, + { url = "https://files.pythonhosted.org/packages/2b/4c/ca02b7bdb6012a1adef21a50625b14f43ed4d11f1fc237f9d7490aa5078c/pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:30c5f68ded0c36466acede341551106821043e9afaad516adfb6e8fa80a4e6a6", size = 2153261 }, + { url = "https://files.pythonhosted.org/packages/72/9d/a241db83f973049a1092a079272ffe2e3e82e98561ef6214ab53fe53b1c7/pydantic_core-2.27.2-cp311-cp311-win32.whl", hash = "sha256:c70c26d2c99f78b125a3459f8afe1aed4d9687c24fd677c6a4436bc042e50d6c", size = 1812361 }, + { url = "https://files.pythonhosted.org/packages/e8/ef/013f07248041b74abd48a385e2110aa3a9bbfef0fbd97d4e6d07d2f5b89a/pydantic_core-2.27.2-cp311-cp311-win_amd64.whl", hash = "sha256:08e125dbdc505fa69ca7d9c499639ab6407cfa909214d500897d02afb816e7cc", size = 1982484 }, + { url = "https://files.pythonhosted.org/packages/10/1c/16b3a3e3398fd29dca77cea0a1d998d6bde3902fa2706985191e2313cc76/pydantic_core-2.27.2-cp311-cp311-win_arm64.whl", hash = "sha256:26f0d68d4b235a2bae0c3fc585c585b4ecc51382db0e3ba402a22cbc440915e4", size = 1867102 }, + { url = "https://files.pythonhosted.org/packages/d6/74/51c8a5482ca447871c93e142d9d4a92ead74de6c8dc5e66733e22c9bba89/pydantic_core-2.27.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0", size = 1893127 }, + { url = "https://files.pythonhosted.org/packages/d3/f3/c97e80721735868313c58b89d2de85fa80fe8dfeeed84dc51598b92a135e/pydantic_core-2.27.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:83097677b8e3bd7eaa6775720ec8e0405f1575015a463285a92bfdfe254529ef", size = 1811340 }, + { url = "https://files.pythonhosted.org/packages/9e/91/840ec1375e686dbae1bd80a9e46c26a1e0083e1186abc610efa3d9a36180/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:172fce187655fece0c90d90a678424b013f8fbb0ca8b036ac266749c09438cb7", size = 1822900 }, + { url = "https://files.pythonhosted.org/packages/f6/31/4240bc96025035500c18adc149aa6ffdf1a0062a4b525c932065ceb4d868/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:519f29f5213271eeeeb3093f662ba2fd512b91c5f188f3bb7b27bc5973816934", size = 1869177 }, + { url = "https://files.pythonhosted.org/packages/fa/20/02fbaadb7808be578317015c462655c317a77a7c8f0ef274bc016a784c54/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05e3a55d124407fffba0dd6b0c0cd056d10e983ceb4e5dbd10dda135c31071d6", size = 2038046 }, + { url = "https://files.pythonhosted.org/packages/06/86/7f306b904e6c9eccf0668248b3f272090e49c275bc488a7b88b0823444a4/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c3ed807c7b91de05e63930188f19e921d1fe90de6b4f5cd43ee7fcc3525cb8c", size = 2685386 }, + { url = "https://files.pythonhosted.org/packages/8d/f0/49129b27c43396581a635d8710dae54a791b17dfc50c70164866bbf865e3/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2", size = 1997060 }, + { url = "https://files.pythonhosted.org/packages/0d/0f/943b4af7cd416c477fd40b187036c4f89b416a33d3cc0ab7b82708a667aa/pydantic_core-2.27.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28ccb213807e037460326424ceb8b5245acb88f32f3d2777427476e1b32c48c4", size = 2004870 }, + { url = "https://files.pythonhosted.org/packages/35/40/aea70b5b1a63911c53a4c8117c0a828d6790483f858041f47bab0b779f44/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:de3cd1899e2c279b140adde9357c4495ed9d47131b4a4eaff9052f23398076b3", size = 1999822 }, + { url = "https://files.pythonhosted.org/packages/f2/b3/807b94fd337d58effc5498fd1a7a4d9d59af4133e83e32ae39a96fddec9d/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:220f892729375e2d736b97d0e51466252ad84c51857d4d15f5e9692f9ef12be4", size = 2130364 }, + { url = "https://files.pythonhosted.org/packages/fc/df/791c827cd4ee6efd59248dca9369fb35e80a9484462c33c6649a8d02b565/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a0fcd29cd6b4e74fe8ddd2c90330fd8edf2e30cb52acda47f06dd615ae72da57", size = 2158303 }, + { url = "https://files.pythonhosted.org/packages/9b/67/4e197c300976af185b7cef4c02203e175fb127e414125916bf1128b639a9/pydantic_core-2.27.2-cp312-cp312-win32.whl", hash = "sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc", size = 1834064 }, + { url = "https://files.pythonhosted.org/packages/1f/ea/cd7209a889163b8dcca139fe32b9687dd05249161a3edda62860430457a5/pydantic_core-2.27.2-cp312-cp312-win_amd64.whl", hash = "sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9", size = 1989046 }, + { url = "https://files.pythonhosted.org/packages/bc/49/c54baab2f4658c26ac633d798dab66b4c3a9bbf47cff5284e9c182f4137a/pydantic_core-2.27.2-cp312-cp312-win_arm64.whl", hash = "sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b", size = 1885092 }, + { url = "https://files.pythonhosted.org/packages/41/b1/9bc383f48f8002f99104e3acff6cba1231b29ef76cfa45d1506a5cad1f84/pydantic_core-2.27.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b", size = 1892709 }, + { url = "https://files.pythonhosted.org/packages/10/6c/e62b8657b834f3eb2961b49ec8e301eb99946245e70bf42c8817350cbefc/pydantic_core-2.27.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154", size = 1811273 }, + { url = "https://files.pythonhosted.org/packages/ba/15/52cfe49c8c986e081b863b102d6b859d9defc63446b642ccbbb3742bf371/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9", size = 1823027 }, + { url = "https://files.pythonhosted.org/packages/b1/1c/b6f402cfc18ec0024120602bdbcebc7bdd5b856528c013bd4d13865ca473/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9", size = 1868888 }, + { url = "https://files.pythonhosted.org/packages/bd/7b/8cb75b66ac37bc2975a3b7de99f3c6f355fcc4d89820b61dffa8f1e81677/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1", size = 2037738 }, + { url = "https://files.pythonhosted.org/packages/c8/f1/786d8fe78970a06f61df22cba58e365ce304bf9b9f46cc71c8c424e0c334/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a", size = 2685138 }, + { url = "https://files.pythonhosted.org/packages/a6/74/d12b2cd841d8724dc8ffb13fc5cef86566a53ed358103150209ecd5d1999/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e", size = 1997025 }, + { url = "https://files.pythonhosted.org/packages/a0/6e/940bcd631bc4d9a06c9539b51f070b66e8f370ed0933f392db6ff350d873/pydantic_core-2.27.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4", size = 2004633 }, + { url = "https://files.pythonhosted.org/packages/50/cc/a46b34f1708d82498c227d5d80ce615b2dd502ddcfd8376fc14a36655af1/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27", size = 1999404 }, + { url = "https://files.pythonhosted.org/packages/ca/2d/c365cfa930ed23bc58c41463bae347d1005537dc8db79e998af8ba28d35e/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee", size = 2130130 }, + { url = "https://files.pythonhosted.org/packages/f4/d7/eb64d015c350b7cdb371145b54d96c919d4db516817f31cd1c650cae3b21/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1", size = 2157946 }, + { url = "https://files.pythonhosted.org/packages/a4/99/bddde3ddde76c03b65dfd5a66ab436c4e58ffc42927d4ff1198ffbf96f5f/pydantic_core-2.27.2-cp313-cp313-win32.whl", hash = "sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130", size = 1834387 }, + { url = "https://files.pythonhosted.org/packages/71/47/82b5e846e01b26ac6f1893d3c5f9f3a2eb6ba79be26eef0b759b4fe72946/pydantic_core-2.27.2-cp313-cp313-win_amd64.whl", hash = "sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee", size = 1990453 }, + { url = "https://files.pythonhosted.org/packages/51/b2/b2b50d5ecf21acf870190ae5d093602d95f66c9c31f9d5de6062eb329ad1/pydantic_core-2.27.2-cp313-cp313-win_arm64.whl", hash = "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b", size = 1885186 }, +] + +[[package]] +name = "pygments" +version = "2.18.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8e/62/8336eff65bcbc8e4cb5d05b55faf041285951b6e80f33e2bff2024788f31/pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199", size = 4891905 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a", size = 1205513 }, +] + +[[package]] +name = "pyopengl" +version = "3.1.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/b6/970868d44b619292f1f54501923c69c9bd0ab1d2d44cf02590eac2706f4f/PyOpenGL-3.1.7.tar.gz", hash = "sha256:eef31a3888e6984fd4d8e6c9961b184c9813ca82604d37fe3da80eb000a76c86", size = 1896446 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/99/48/00e31747821d3fc56faddd00a4725454d1e694a8b67d715cf20f531506a5/PyOpenGL-3.1.7-py3-none-any.whl", hash = "sha256:a6ab19cf290df6101aaf7470843a9c46207789855746399d0af92521a0a92b7a", size = 2416834 }, +] + +[[package]] +name = "pyparsing" +version = "3.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8b/1a/3544f4f299a47911c2ab3710f534e52fea62a633c96806995da5d25be4b2/pyparsing-3.2.1.tar.gz", hash = "sha256:61980854fd66de3a90028d679a954d5f2623e83144b5afe5ee86f43d762e5f0a", size = 1067694 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1c/a7/c8a2d361bf89c0d9577c934ebb7421b25dc84bf3a8e3ac0a40aed9acc547/pyparsing-3.2.1-py3-none-any.whl", hash = "sha256:506ff4f4386c4cec0590ec19e6302d3aedb992fdc02c761e90416f158dacf8e1", size = 107716 }, +] + +[[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 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bd/24/12818598c362d7f300f18e74db45963dbcb85150324092410c8b49405e42/pyproject_hooks-1.2.0-py3-none-any.whl", hash = "sha256:9e5c6bfa8dcc30091c74b0cf803c81fdd29d94f01992a7707bc97babb1141913", size = 10216 }, +] + +[[package]] +name = "pyqt5" +version = "5.15.11" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyqt5-qt5" }, + { name = "pyqt5-sip" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0e/07/c9ed0bd428df6f87183fca565a79fee19fa7c88c7f00a7f011ab4379e77a/PyQt5-5.15.11.tar.gz", hash = "sha256:fda45743ebb4a27b4b1a51c6d8ef455c4c1b5d610c90d2934c7802b5c1557c52", size = 3216775 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/64/42ec1b0bd72d87f87bde6ceb6869f444d91a2d601f2e67cd05febc0346a1/PyQt5-5.15.11-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:c8b03dd9380bb13c804f0bdb0f4956067f281785b5e12303d529f0462f9afdc2", size = 6579776 }, + { url = "https://files.pythonhosted.org/packages/49/f5/3fb696f4683ea45d68b7e77302eff173493ac81e43d63adb60fa760b9f91/PyQt5-5.15.11-cp38-abi3-macosx_11_0_x86_64.whl", hash = "sha256:6cd75628f6e732b1ffcfe709ab833a0716c0445d7aec8046a48d5843352becb6", size = 7016415 }, + { url = "https://files.pythonhosted.org/packages/b4/8c/4065950f9d013c4b2e588fe33cf04e564c2322842d84dbcbce5ba1dc28b0/PyQt5-5.15.11-cp38-abi3-manylinux_2_17_x86_64.whl", hash = "sha256:cd672a6738d1ae33ef7d9efa8e6cb0a1525ecf53ec86da80a9e1b6ec38c8d0f1", size = 8188103 }, + { url = "https://files.pythonhosted.org/packages/f3/f0/ae5a5b4f9b826b29ea4be841b2f2d951bcf5ae1d802f3732b145b57c5355/PyQt5-5.15.11-cp38-abi3-win32.whl", hash = "sha256:76be0322ceda5deecd1708a8d628e698089a1cea80d1a49d242a6d579a40babd", size = 5433308 }, + { url = "https://files.pythonhosted.org/packages/56/d5/68eb9f3d19ce65df01b6c7b7a577ad3bbc9ab3a5dd3491a4756e71838ec9/PyQt5-5.15.11-cp38-abi3-win_amd64.whl", hash = "sha256:bdde598a3bb95022131a5c9ea62e0a96bd6fb28932cc1619fd7ba211531b7517", size = 6865864 }, +] + +[[package]] +name = "pyqt5-qt5" +version = "5.15.16" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ff/89/65a4b9c6bc89012182ff46bf8e503a8aa5e5570df7cb628211c93012beca/PyQt5_Qt5-5.15.16-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:18b6fec012de60921fcb131cf2a21368171dc29050d43e4b81a64be407a36105", size = 39957063 }, + { url = "https://files.pythonhosted.org/packages/0a/60/b6db285c87666b02aa11d0946d7bb381d8bdcc815cc5aa61fa91272b321b/PyQt5_Qt5-5.15.16-py3-none-macosx_11_0_arm64.whl", hash = "sha256:e1a0e7ae35a7615c74a293705204579650930486a89af23082462f429dae504a", size = 37122434 }, + { url = "https://files.pythonhosted.org/packages/dc/1a/c4f861c4d7a9844a207b8bc3aa9dd84c51f823784d405469cde83d736cf1/PyQt5_Qt5-5.15.16-py3-none-manylinux2014_x86_64.whl", hash = "sha256:5ee1754a6460849cba76c0f0c490c0ccc3b514abc780b141cf772db22b76b54b", size = 59854452 }, +] + +[[package]] +name = "pyqt5-sip" +version = "12.16.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3c/cd/f6f957107447bc53e398f6149f55a7f335c434f201e77dcfb8a3c20dc42c/pyqt5_sip-12.16.1.tar.gz", hash = "sha256:8c831f8b619811a32369d72339faa50ae53a963f5fdfa4d71f845c63e9673125", size = 103975 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ea/69/b23bb48eeea59d934587ae5e11d9fce2cfa0536a311c78a177190134a62d/PyQt5_sip-12.16.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:09bfdb5f9adea15a542cbe4b89873a6b290c4f1669f66bb5f1a24993ce8bbdd0", size = 122619 }, + { url = "https://files.pythonhosted.org/packages/30/b7/78f68147ce4dfac84d705a9dbbb1c41878a365597fa08918bf2bdfd86809/PyQt5_sip-12.16.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:98b99fcdebbbfc999f4ab10829749151eb371b79201ecd98f20e934c16d0193e", size = 276217 }, + { url = "https://files.pythonhosted.org/packages/3c/01/0387b81f4b0797cb3762e1a2cbbe17086b7c15ba13de37e0f6e94b601a18/PyQt5_sip-12.16.1-cp311-cp311-win32.whl", hash = "sha256:67dbdc1b3be045caebfc75ee87966e23c6bee61d94cb634ddd71b634c9089890", size = 49044 }, + { url = "https://files.pythonhosted.org/packages/9a/96/67914c5e17456365b9d7bc71d6eec2a878340904aa9905ae48554a3f6f18/PyQt5_sip-12.16.1-cp311-cp311-win_amd64.whl", hash = "sha256:8afd633d5f35e4e5205680d310800d10d30fcbfb6bb7b852bfaa31097c1be449", size = 58997 }, + { url = "https://files.pythonhosted.org/packages/7f/3d/8dc6b2ef0132ab1cc534485905b594e6f4176176924e54e35a3f6a0fb164/PyQt5_sip-12.16.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f6724c590de3d556c730ebda8b8f906b38373934472209e94d99357b52b56f5f", size = 124549 }, + { url = "https://files.pythonhosted.org/packages/45/eb/fa72094f2ca861941d38a4df49d0a34bd024972cd458f516ef3c65d128e3/PyQt5_sip-12.16.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:633cba509a98bd626def951bb948d4e736635acbd0b7fabd7be55a3a096a8a0b", size = 281640 }, + { url = "https://files.pythonhosted.org/packages/12/a5/9439567dbf513bfc0fd71a5bb3797fae649338715749e89571ad86b4b3e3/PyQt5_sip-12.16.1-cp312-cp312-win32.whl", hash = "sha256:2b35ff92caa569e540675ffcd79ffbf3e7092cccf7166f89e2a8b388db80aa1c", size = 49428 }, + { url = "https://files.pythonhosted.org/packages/a7/33/d91e003b85ff7ab227d0fff236d48c18ada2f0cd49d5e35cb514867ba609/PyQt5_sip-12.16.1-cp312-cp312-win_amd64.whl", hash = "sha256:a0f83f554727f43dfe92afbf3a8c51e83bb8b78c5f160b635d4359fad681cebe", size = 57957 }, + { url = "https://files.pythonhosted.org/packages/1b/fe/d679c70e719f2ec46ee77bb6e878f23eb8d6ad8bc140e2ba6e732d99899d/PyQt5_sip-12.16.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2349f118dc6f01ee71fe57d8bab9e606ecf241468989abb23b5691d5538d7a69", size = 124520 }, + { url = "https://files.pythonhosted.org/packages/22/5d/35ffa29def1db02c06b70a77988b07daf989a8860ad7bf2fabe9726373af/PyQt5_sip-12.16.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:bbabdcc031e40417333bdd9e59d8add815c8f0663ebfcbcd3024bdeb55f35e9c", size = 281298 }, + { url = "https://files.pythonhosted.org/packages/07/96/88e6dd303c7891a55ab03b4159793252e06c020f7d56b8e0897fb4301681/PyQt5_sip-12.16.1-cp313-cp313-win32.whl", hash = "sha256:b6d06f6b49c7cd70db44277e21134390dcabb709da434d63754c9968ff6d98e2", size = 49372 }, + { url = "https://files.pythonhosted.org/packages/ba/e7/45e83e131f863377fd779fec1d6bbed364e202a9580240bbcee6c177d830/PyQt5_sip-12.16.1-cp313-cp313-win_amd64.whl", hash = "sha256:e2bd572cfb969089c2813c85d6e1393ec1a0aeecebc53934ba9f062acf440b50", size = 57943 }, +] + +[[package]] +name = "pysimdjson" +version = "6.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/88/a0/2ed02ea282713e84099a07b96e736062d93ac32d81cae482a9ceee39e9c1/pysimdjson-6.0.2.tar.gz", hash = "sha256:ddbd6fecd42aa01c5c87d3c79b8ede1885b6763337d21745587a5392572c1f45", size = 1213207 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/44/76/d046ad6827913684bc22beb2fea316e502ea41da542c2565ab3c30f55c18/pysimdjson-6.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:37329102c9df4a5b6374f4a5b95e968186882eed61508b7bc6bda14a8d4dbbbc", size = 377827 }, + { url = "https://files.pythonhosted.org/packages/61/62/3834d75e35566ed5d9ab2d23daeaa8b60d0a92479706d9f612035efdb898/pysimdjson-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:506dc63094f8ee40284349a37d1d138eb8fc24e373b9c4d985fedb30e606d9b1", size = 215969 }, + { url = "https://files.pythonhosted.org/packages/14/73/65ca3c044a9f3c0308df5a885a79c5fa23ef19231d9ad557e2f209217932/pysimdjson-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41a8b9238445b636cbaf6862c6bee627dbf3b091a08d9b3e15ac9ae8dc117b94", size = 1384936 }, + { url = "https://files.pythonhosted.org/packages/e7/2a/3e3dc32f8e1feaff3bab32c84754509d065bf68df9c184b1fc05b7635cc6/pysimdjson-6.0.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2cd21f86adc0ebef763e251749d108f27d3f7f4076341a64c1a54d57fbfc2a0b", size = 1199313 }, + { url = "https://files.pythonhosted.org/packages/fd/06/f7499e2baad3d6e67bf6e9d40f0761aaadc6bab6087d95ddcaeea6e22cf2/pysimdjson-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7ec815595177c08a7298f527ea28554f9516474f678a01c54e9eb8a81be7510", size = 1865655 }, + { url = "https://files.pythonhosted.org/packages/e0/93/85d923bc99ea7beaffaa1e8a2fca4e83dffdad63335dadd9e4334880404f/pysimdjson-6.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c90c88f1881a9f88f4826fa03d7e73d640585d1040610aeabc855b02bf4f73d3", size = 1149453 }, + { url = "https://files.pythonhosted.org/packages/4b/77/092cb99e59c525b8d55187ebaa3433e4857ab5bccf348a5ff32c22cd8600/pysimdjson-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4c93d80adde25ce1464999a1965854432cc85c4941ec7dc9811880ce31b598b7", size = 1890229 }, + { url = "https://files.pythonhosted.org/packages/3d/fe/4417d7b61d58fdb2e3c7c63bcf91985abdd8c51934e82ed53c7ef2125917/pysimdjson-6.0.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:704bba03578f9260c13c386a3ba3566d52dbc097bef92b3890493a65c437ef5a", size = 1699254 }, + { url = "https://files.pythonhosted.org/packages/f5/06/d02003eff3e6652306d1369605e7831edd087b0225221bb41ba5b17c161c/pysimdjson-6.0.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:08130a1d9e7b16864f36c8a6d6ccada987c8561554664b038e0b519bffed29be", size = 1739907 }, + { url = "https://files.pythonhosted.org/packages/7a/b2/4687a4b47314a508f72f68c4592e23e83128c74bc0cb2df4e1387e4034b0/pysimdjson-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:58fe0db35c8015a82f876a844f59c3fc1a3cb6d0b3cbf53c21c806814236205f", size = 2380626 }, + { url = "https://files.pythonhosted.org/packages/5c/3d/991159659f25935a9a194212e6fa5889479e35edae5e1a954de54d3c3055/pysimdjson-6.0.2-cp311-cp311-win32.whl", hash = "sha256:c99e93ef7d561f67e60b5a7093bdd385d49b25eff8a8be2bcea91cf1cc6237b0", size = 126088 }, + { url = "https://files.pythonhosted.org/packages/9b/41/f14326aa024b31d5f65b2f8e20771df5531a370e245e76bdd65520a4afb5/pysimdjson-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:084150c8064c0d0079fa0acafa47e0c9cb855fae8307ad05d91657fa216c7ea6", size = 173771 }, + { url = "https://files.pythonhosted.org/packages/ec/0f/2d54463c3ed685b8f874a7e1f1511c07380467242268ea7d74b7bdbafd70/pysimdjson-6.0.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1312105f88a84eb45e15718ff315276e3f325e6463b6f82299ec769e3245a713", size = 379542 }, + { url = "https://files.pythonhosted.org/packages/7c/d1/e24d10b15b1639541fc2532aee5b2bbad7c747a2fc08a76a8e9f5ae9bcca/pysimdjson-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3feb31f9f14edf7f696a5129195d5063d8053c3d77b84edd74db09f548a49a0f", size = 217141 }, + { url = "https://files.pythonhosted.org/packages/fa/d7/dc4e81f18e00555a6cbe101dfe8006f21fab5d056bb8090d06b60a282c59/pysimdjson-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88d6a37f4cc6a59d8c9301f5517de2fda7702f9307e3eeebf3b661d7f93d29fa", size = 1370913 }, + { url = "https://files.pythonhosted.org/packages/bb/05/a82de260dcbc32ae1ff5190ce19deb76f9d7d9178b3e04d6da104972e49e/pysimdjson-6.0.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dab9620a5666ff56200d5d28adb871cdafef14d4acd6ae0da1c9ea633039aab1", size = 1179986 }, + { url = "https://files.pythonhosted.org/packages/5e/79/7ef516116f27b65dfb0fe9ac658a1364a8bf1cdbf55129d71a1db822ec15/pysimdjson-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07c9ce9b84d5e926581ebef48fa9e9e44d2dbde42a9d7931a9479c3a696fe38c", size = 1855680 }, + { url = "https://files.pythonhosted.org/packages/cb/62/e29aac17a348d84b3b958811593b50e249c17a8553bb54bbd53813bba6cb/pysimdjson-6.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f8bf66143bc51c10ed304eeb34a9b4916fdaf5e108db0912f886a724b8f0aa7", size = 1133029 }, + { url = "https://files.pythonhosted.org/packages/88/70/ec055c13188ec51274c7b1fb0a2c330560e32a357ef6563993eb7351455f/pysimdjson-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3d0677a64874dcf9db19982b5339a8f79ef590d0514041390a3611851b918c90", size = 1872958 }, + { url = "https://files.pythonhosted.org/packages/11/f7/53b0cf8457d4878a418ad7be9e716d6351bcd440cd74395d8301a9f53ea8/pysimdjson-6.0.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:ac7436bba6eaa04bd8e74dfed2aa539e6753c41fe85e045a33eb1e8dc18af650", size = 1685416 }, + { url = "https://files.pythonhosted.org/packages/1d/9a/832e27d0966900757d991cdc07375d7b72af6392738ac56de005a298d987/pysimdjson-6.0.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:7335c83d99aa63917537cd57b59d4eb914d8d961a5bd79508094d0938b431dd1", size = 1722004 }, + { url = "https://files.pythonhosted.org/packages/dd/6e/d79dc7b7a83f33c35096dfa5b78cc21b37c208e2766ecfcf746f59cf14fa/pysimdjson-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:146fcf72d2479cd4d788fbc19d02108ad1183460b8e930ec53359b1163075f60", size = 2369835 }, + { url = "https://files.pythonhosted.org/packages/29/bb/9b867f84a9916ba9f2d73d7ad64ae669c4f1d7e68c3f9310fd6fcfe35e97/pysimdjson-6.0.2-cp312-cp312-win32.whl", hash = "sha256:257de8d41bad74e1c195cf1f69df12b3899aa9c7911583960d680870c7665faf", size = 127161 }, + { url = "https://files.pythonhosted.org/packages/d2/c5/5ac56fedd7dff700769dfded8bad80b6da9a6ff33bfa993f8a41535c1223/pysimdjson-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:c4efb641eefce647c347d5df7175830960cc0f8d2c9a5158c0a1950278493521", size = 175291 }, +] + +[[package]] +name = "pytest" +version = "8.3.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "iniconfig" }, + { name = "packaging" }, + { name = "pluggy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/05/35/30e0d83068951d90a01852cb1cef56e5d8a09d20c7f511634cc2f7e0372a/pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761", size = 1445919 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/92/76a1c94d3afee238333bc0a42b82935dd8f9cf8ce9e336ff87ee14d9e1cf/pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6", size = 343083 }, +] + +[[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 } +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 }, +] + +[[package]] +name = "python-jsonschema-objects" +version = "0.5.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "inflection" }, + { name = "jsonschema" }, + { name = "markdown" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e7/7c/4d92e057ab8733cca4f444ba39a896444b6ae0d332fdaaf8ddcb5c022fbf/python_jsonschema_objects-0.5.7.tar.gz", hash = "sha256:0af1a9fd207a3158a73baa895256ce0ee91bb99c5f92b07fd4fac6ff6d007c90", size = 82302 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5f/c8/8687dcf8cd09b8c76da19ce96cd6cdfe10fba042d3bfdd9f002462fadcf5/python_jsonschema_objects-0.5.7-py2.py3-none-any.whl", hash = "sha256:5b45b7e776cb9cc86256721e102400da2fe92021f8a9566a570c1d0a15c4065d", size = 29548 }, +] + +[[package]] +name = "pytz" +version = "2024.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3a/31/3c70bf7603cc2dca0f19bdc53b4537a797747a58875b552c8c413d963a3f/pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a", size = 319692 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/c3/005fcca25ce078d2cc29fd559379817424e94885510568bc1bc53d7d5846/pytz-2024.2-py2.py3-none-any.whl", hash = "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725", size = 508002 }, +] + +[[package]] +name = "pywin32" +version = "308" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/eb/e2/02652007469263fe1466e98439831d65d4ca80ea1a2df29abecedf7e47b7/pywin32-308-cp311-cp311-win32.whl", hash = "sha256:5d8c8015b24a7d6855b1550d8e660d8daa09983c80e5daf89a273e5c6fb5095a", size = 5928156 }, + { url = "https://files.pythonhosted.org/packages/48/ef/f4fb45e2196bc7ffe09cad0542d9aff66b0e33f6c0954b43e49c33cad7bd/pywin32-308-cp311-cp311-win_amd64.whl", hash = "sha256:575621b90f0dc2695fec346b2d6302faebd4f0f45c05ea29404cefe35d89442b", size = 6559559 }, + { url = "https://files.pythonhosted.org/packages/79/ef/68bb6aa865c5c9b11a35771329e95917b5559845bd75b65549407f9fc6b4/pywin32-308-cp311-cp311-win_arm64.whl", hash = "sha256:100a5442b7332070983c4cd03f2e906a5648a5104b8a7f50175f7906efd16bb6", size = 7972495 }, + { url = "https://files.pythonhosted.org/packages/00/7c/d00d6bdd96de4344e06c4afbf218bc86b54436a94c01c71a8701f613aa56/pywin32-308-cp312-cp312-win32.whl", hash = "sha256:587f3e19696f4bf96fde9d8a57cec74a57021ad5f204c9e627e15c33ff568897", size = 5939729 }, + { url = "https://files.pythonhosted.org/packages/21/27/0c8811fbc3ca188f93b5354e7c286eb91f80a53afa4e11007ef661afa746/pywin32-308-cp312-cp312-win_amd64.whl", hash = "sha256:00b3e11ef09ede56c6a43c71f2d31857cf7c54b0ab6e78ac659497abd2834f47", size = 6543015 }, + { url = "https://files.pythonhosted.org/packages/9d/0f/d40f8373608caed2255781a3ad9a51d03a594a1248cd632d6a298daca693/pywin32-308-cp312-cp312-win_arm64.whl", hash = "sha256:9b4de86c8d909aed15b7011182c8cab38c8850de36e6afb1f0db22b8959e3091", size = 7976033 }, + { url = "https://files.pythonhosted.org/packages/a9/a4/aa562d8935e3df5e49c161b427a3a2efad2ed4e9cf81c3de636f1fdddfd0/pywin32-308-cp313-cp313-win32.whl", hash = "sha256:1c44539a37a5b7b21d02ab34e6a4d314e0788f1690d65b48e9b0b89f31abbbed", size = 5938579 }, + { url = "https://files.pythonhosted.org/packages/c7/50/b0efb8bb66210da67a53ab95fd7a98826a97ee21f1d22949863e6d588b22/pywin32-308-cp313-cp313-win_amd64.whl", hash = "sha256:fd380990e792eaf6827fcb7e187b2b4b1cede0585e3d0c9e84201ec27b9905e4", size = 6542056 }, + { url = "https://files.pythonhosted.org/packages/26/df/2b63e3e4f2df0224f8aaf6d131f54fe4e8c96400eb9df563e2aae2e1a1f9/pywin32-308-cp313-cp313-win_arm64.whl", hash = "sha256:ef313c46d4c18dfb82a2431e3051ac8f112ccee1a34f29c263c583c568db63cd", size = 7974986 }, +] + +[[package]] +name = "pyyaml" +version = "6.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/aa/7af4e81f7acba21a4c6be026da38fd2b872ca46226673c89a758ebdc4fd2/PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774", size = 184612 }, + { url = "https://files.pythonhosted.org/packages/8b/62/b9faa998fd185f65c1371643678e4d58254add437edb764a08c5a98fb986/PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee", size = 172040 }, + { url = "https://files.pythonhosted.org/packages/ad/0c/c804f5f922a9a6563bab712d8dcc70251e8af811fce4524d57c2c0fd49a4/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c", size = 736829 }, + { url = "https://files.pythonhosted.org/packages/51/16/6af8d6a6b210c8e54f1406a6b9481febf9c64a3109c541567e35a49aa2e7/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317", size = 764167 }, + { url = "https://files.pythonhosted.org/packages/75/e4/2c27590dfc9992f73aabbeb9241ae20220bd9452df27483b6e56d3975cc5/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85", size = 762952 }, + { url = "https://files.pythonhosted.org/packages/9b/97/ecc1abf4a823f5ac61941a9c00fe501b02ac3ab0e373c3857f7d4b83e2b6/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4", size = 735301 }, + { url = "https://files.pythonhosted.org/packages/45/73/0f49dacd6e82c9430e46f4a027baa4ca205e8b0a9dce1397f44edc23559d/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e", size = 756638 }, + { url = "https://files.pythonhosted.org/packages/22/5f/956f0f9fc65223a58fbc14459bf34b4cc48dec52e00535c79b8db361aabd/PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5", size = 143850 }, + { url = "https://files.pythonhosted.org/packages/ed/23/8da0bbe2ab9dcdd11f4f4557ccaf95c10b9811b13ecced089d43ce59c3c8/PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44", size = 161980 }, + { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873 }, + { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302 }, + { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154 }, + { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223 }, + { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542 }, + { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164 }, + { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611 }, + { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591 }, + { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338 }, + { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309 }, + { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679 }, + { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428 }, + { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361 }, + { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523 }, + { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660 }, + { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597 }, + { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527 }, + { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446 }, +] + +[[package]] +name = "pyzmq" +version = "26.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "implementation_name == 'pypy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fd/05/bed626b9f7bb2322cdbbf7b4bd8f54b1b617b0d2ab2d3547d6e39428a48e/pyzmq-26.2.0.tar.gz", hash = "sha256:070672c258581c8e4f640b5159297580a9974b026043bd4ab0470be9ed324f1f", size = 271975 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/20/de7442172f77f7c96299a0ac70e7d4fb78cd51eca67aa2cf552b66c14196/pyzmq-26.2.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:8f7e66c7113c684c2b3f1c83cdd3376103ee0ce4c49ff80a648643e57fb22218", size = 1340639 }, + { url = "https://files.pythonhosted.org/packages/98/4d/5000468bd64c7910190ed0a6c76a1ca59a68189ec1f007c451dc181a22f4/pyzmq-26.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3a495b30fc91db2db25120df5847d9833af237546fd59170701acd816ccc01c4", size = 1008710 }, + { url = "https://files.pythonhosted.org/packages/e1/bf/c67fd638c2f9fbbab8090a3ee779370b97c82b84cc12d0c498b285d7b2c0/pyzmq-26.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77eb0968da535cba0470a5165468b2cac7772cfb569977cff92e240f57e31bef", size = 673129 }, + { url = "https://files.pythonhosted.org/packages/86/94/99085a3f492aa538161cbf27246e8886ff850e113e0c294a5b8245f13b52/pyzmq-26.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ace4f71f1900a548f48407fc9be59c6ba9d9aaf658c2eea6cf2779e72f9f317", size = 910107 }, + { url = "https://files.pythonhosted.org/packages/31/1d/346809e8a9b999646d03f21096428453465b1bca5cd5c64ecd048d9ecb01/pyzmq-26.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92a78853d7280bffb93df0a4a6a2498cba10ee793cc8076ef797ef2f74d107cf", size = 867960 }, + { url = "https://files.pythonhosted.org/packages/ab/68/6fb6ae5551846ad5beca295b7bca32bf0a7ce19f135cb30e55fa2314e6b6/pyzmq-26.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:689c5d781014956a4a6de61d74ba97b23547e431e9e7d64f27d4922ba96e9d6e", size = 869204 }, + { url = "https://files.pythonhosted.org/packages/0f/f9/18417771dee223ccf0f48e29adf8b4e25ba6d0e8285e33bcbce078070bc3/pyzmq-26.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0aca98bc423eb7d153214b2df397c6421ba6373d3397b26c057af3c904452e37", size = 1203351 }, + { url = "https://files.pythonhosted.org/packages/e0/46/f13e67fe0d4f8a2315782cbad50493de6203ea0d744610faf4d5f5b16e90/pyzmq-26.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1f3496d76b89d9429a656293744ceca4d2ac2a10ae59b84c1da9b5165f429ad3", size = 1514204 }, + { url = "https://files.pythonhosted.org/packages/50/11/ddcf7343b7b7a226e0fc7b68cbf5a5bb56291fac07f5c3023bb4c319ebb4/pyzmq-26.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5c2b3bfd4b9689919db068ac6c9911f3fcb231c39f7dd30e3138be94896d18e6", size = 1414339 }, + { url = "https://files.pythonhosted.org/packages/01/14/1c18d7d5b7be2708f513f37c61bfadfa62161c10624f8733f1c8451b3509/pyzmq-26.2.0-cp311-cp311-win32.whl", hash = "sha256:eac5174677da084abf378739dbf4ad245661635f1600edd1221f150b165343f4", size = 576928 }, + { url = "https://files.pythonhosted.org/packages/3b/1b/0a540edd75a41df14ec416a9a500b9fec66e554aac920d4c58fbd5756776/pyzmq-26.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:5a509df7d0a83a4b178d0f937ef14286659225ef4e8812e05580776c70e155d5", size = 642317 }, + { url = "https://files.pythonhosted.org/packages/98/77/1cbfec0358078a4c5add529d8a70892db1be900980cdb5dd0898b3d6ab9d/pyzmq-26.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:c0e6091b157d48cbe37bd67233318dbb53e1e6327d6fc3bb284afd585d141003", size = 543834 }, + { url = "https://files.pythonhosted.org/packages/28/2f/78a766c8913ad62b28581777ac4ede50c6d9f249d39c2963e279524a1bbe/pyzmq-26.2.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:ded0fc7d90fe93ae0b18059930086c51e640cdd3baebdc783a695c77f123dcd9", size = 1343105 }, + { url = "https://files.pythonhosted.org/packages/b7/9c/4b1e2d3d4065be715e007fe063ec7885978fad285f87eae1436e6c3201f4/pyzmq-26.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:17bf5a931c7f6618023cdacc7081f3f266aecb68ca692adac015c383a134ca52", size = 1008365 }, + { url = "https://files.pythonhosted.org/packages/4f/ef/5a23ec689ff36d7625b38d121ef15abfc3631a9aecb417baf7a4245e4124/pyzmq-26.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55cf66647e49d4621a7e20c8d13511ef1fe1efbbccf670811864452487007e08", size = 665923 }, + { url = "https://files.pythonhosted.org/packages/ae/61/d436461a47437d63c6302c90724cf0981883ec57ceb6073873f32172d676/pyzmq-26.2.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4661c88db4a9e0f958c8abc2b97472e23061f0bc737f6f6179d7a27024e1faa5", size = 903400 }, + { url = "https://files.pythonhosted.org/packages/47/42/fc6d35ecefe1739a819afaf6f8e686f7f02a4dd241c78972d316f403474c/pyzmq-26.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea7f69de383cb47522c9c208aec6dd17697db7875a4674c4af3f8cfdac0bdeae", size = 860034 }, + { url = "https://files.pythonhosted.org/packages/07/3b/44ea6266a6761e9eefaa37d98fabefa112328808ac41aa87b4bbb668af30/pyzmq-26.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:7f98f6dfa8b8ccaf39163ce872bddacca38f6a67289116c8937a02e30bbe9711", size = 860579 }, + { url = "https://files.pythonhosted.org/packages/38/6f/4df2014ab553a6052b0e551b37da55166991510f9e1002c89cab7ce3b3f2/pyzmq-26.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e3e0210287329272539eea617830a6a28161fbbd8a3271bf4150ae3e58c5d0e6", size = 1196246 }, + { url = "https://files.pythonhosted.org/packages/38/9d/ee240fc0c9fe9817f0c9127a43238a3e28048795483c403cc10720ddef22/pyzmq-26.2.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6b274e0762c33c7471f1a7471d1a2085b1a35eba5cdc48d2ae319f28b6fc4de3", size = 1507441 }, + { url = "https://files.pythonhosted.org/packages/85/4f/01711edaa58d535eac4a26c294c617c9a01f09857c0ce191fd574d06f359/pyzmq-26.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:29c6a4635eef69d68a00321e12a7d2559fe2dfccfa8efae3ffb8e91cd0b36a8b", size = 1406498 }, + { url = "https://files.pythonhosted.org/packages/07/18/907134c85c7152f679ed744e73e645b365f3ad571f38bdb62e36f347699a/pyzmq-26.2.0-cp312-cp312-win32.whl", hash = "sha256:989d842dc06dc59feea09e58c74ca3e1678c812a4a8a2a419046d711031f69c7", size = 575533 }, + { url = "https://files.pythonhosted.org/packages/ce/2c/a6f4a20202a4d3c582ad93f95ee78d79bbdc26803495aec2912b17dbbb6c/pyzmq-26.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:2a50625acdc7801bc6f74698c5c583a491c61d73c6b7ea4dee3901bb99adb27a", size = 637768 }, + { url = "https://files.pythonhosted.org/packages/5f/0e/eb16ff731632d30554bf5af4dbba3ffcd04518219d82028aea4ae1b02ca5/pyzmq-26.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:4d29ab8592b6ad12ebbf92ac2ed2bedcfd1cec192d8e559e2e099f648570e19b", size = 540675 }, + { url = "https://files.pythonhosted.org/packages/04/a7/0f7e2f6c126fe6e62dbae0bc93b1bd3f1099cf7fea47a5468defebe3f39d/pyzmq-26.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9dd8cd1aeb00775f527ec60022004d030ddc51d783d056e3e23e74e623e33726", size = 1006564 }, + { url = "https://files.pythonhosted.org/packages/31/b6/a187165c852c5d49f826a690857684333a6a4a065af0a6015572d2284f6a/pyzmq-26.2.0-cp313-cp313-macosx_10_15_universal2.whl", hash = "sha256:28c812d9757fe8acecc910c9ac9dafd2ce968c00f9e619db09e9f8f54c3a68a3", size = 1340447 }, + { url = "https://files.pythonhosted.org/packages/68/ba/f4280c58ff71f321602a6e24fd19879b7e79793fb8ab14027027c0fb58ef/pyzmq-26.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d80b1dd99c1942f74ed608ddb38b181b87476c6a966a88a950c7dee118fdf50", size = 665485 }, + { url = "https://files.pythonhosted.org/packages/77/b5/c987a5c53c7d8704216f29fc3d810b32f156bcea488a940e330e1bcbb88d/pyzmq-26.2.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c997098cc65e3208eca09303630e84d42718620e83b733d0fd69543a9cab9cb", size = 903484 }, + { url = "https://files.pythonhosted.org/packages/29/c9/07da157d2db18c72a7eccef8e684cefc155b712a88e3d479d930aa9eceba/pyzmq-26.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ad1bc8d1b7a18497dda9600b12dc193c577beb391beae5cd2349184db40f187", size = 859981 }, + { url = "https://files.pythonhosted.org/packages/43/09/e12501bd0b8394b7d02c41efd35c537a1988da67fc9c745cae9c6c776d31/pyzmq-26.2.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:bea2acdd8ea4275e1278350ced63da0b166421928276c7c8e3f9729d7402a57b", size = 860334 }, + { url = "https://files.pythonhosted.org/packages/eb/ff/f5ec1d455f8f7385cc0a8b2acd8c807d7fade875c14c44b85c1bddabae21/pyzmq-26.2.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:23f4aad749d13698f3f7b64aad34f5fc02d6f20f05999eebc96b89b01262fb18", size = 1196179 }, + { url = "https://files.pythonhosted.org/packages/ec/8a/bb2ac43295b1950fe436a81fc5b298be0b96ac76fb029b514d3ed58f7b27/pyzmq-26.2.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:a4f96f0d88accc3dbe4a9025f785ba830f968e21e3e2c6321ccdfc9aef755115", size = 1507668 }, + { url = "https://files.pythonhosted.org/packages/a9/49/dbc284ebcfd2dca23f6349227ff1616a7ee2c4a35fe0a5d6c3deff2b4fed/pyzmq-26.2.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ced65e5a985398827cc9276b93ef6dfabe0273c23de8c7931339d7e141c2818e", size = 1406539 }, + { url = "https://files.pythonhosted.org/packages/00/68/093cdce3fe31e30a341d8e52a1ad86392e13c57970d722c1f62a1d1a54b6/pyzmq-26.2.0-cp313-cp313-win32.whl", hash = "sha256:31507f7b47cc1ead1f6e86927f8ebb196a0bab043f6345ce070f412a59bf87b5", size = 575567 }, + { url = "https://files.pythonhosted.org/packages/92/ae/6cc4657148143412b5819b05e362ae7dd09fb9fe76e2a539dcff3d0386bc/pyzmq-26.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:70fc7fcf0410d16ebdda9b26cbd8bf8d803d220a7f3522e060a69a9c87bf7bad", size = 637551 }, + { url = "https://files.pythonhosted.org/packages/6c/67/fbff102e201688f97c8092e4c3445d1c1068c2f27bbd45a578df97ed5f94/pyzmq-26.2.0-cp313-cp313-win_arm64.whl", hash = "sha256:c3789bd5768ab5618ebf09cef6ec2b35fed88709b104351748a63045f0ff9797", size = 540378 }, + { url = "https://files.pythonhosted.org/packages/3f/fe/2d998380b6e0122c6c4bdf9b6caf490831e5f5e2d08a203b5adff060c226/pyzmq-26.2.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:034da5fc55d9f8da09015d368f519478a52675e558c989bfcb5cf6d4e16a7d2a", size = 1007378 }, + { url = "https://files.pythonhosted.org/packages/4a/f4/30d6e7157f12b3a0390bde94d6a8567cdb88846ed068a6e17238a4ccf600/pyzmq-26.2.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c92d73464b886931308ccc45b2744e5968cbaade0b1d6aeb40d8ab537765f5bc", size = 1329532 }, + { url = "https://files.pythonhosted.org/packages/82/86/3fe917870e15ee1c3ad48229a2a64458e36036e64b4afa9659045d82bfa8/pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:794a4562dcb374f7dbbfb3f51d28fb40123b5a2abadee7b4091f93054909add5", size = 653242 }, + { url = "https://files.pythonhosted.org/packages/50/2d/242e7e6ef6c8c19e6cb52d095834508cd581ffb925699fd3c640cdc758f1/pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aee22939bb6075e7afededabad1a56a905da0b3c4e3e0c45e75810ebe3a52672", size = 888404 }, + { url = "https://files.pythonhosted.org/packages/ac/11/7270566e1f31e4ea73c81ec821a4b1688fd551009a3d2bab11ec66cb1e8f/pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ae90ff9dad33a1cfe947d2c40cb9cb5e600d759ac4f0fd22616ce6540f72797", size = 845858 }, + { url = "https://files.pythonhosted.org/packages/91/d5/72b38fbc69867795c8711bdd735312f9fef1e3d9204e2f63ab57085434b9/pyzmq-26.2.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:43a47408ac52647dfabbc66a25b05b6a61700b5165807e3fbd40063fcaf46386", size = 847375 }, + { url = "https://files.pythonhosted.org/packages/dd/9a/10ed3c7f72b4c24e719c59359fbadd1a27556a28b36cdf1cd9e4fb7845d5/pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:25bf2374a2a8433633c65ccb9553350d5e17e60c8eb4de4d92cc6bd60f01d306", size = 1183489 }, + { url = "https://files.pythonhosted.org/packages/72/2d/8660892543fabf1fe41861efa222455811adac9f3c0818d6c3170a1153e3/pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_i686.whl", hash = "sha256:007137c9ac9ad5ea21e6ad97d3489af654381324d5d3ba614c323f60dab8fae6", size = 1492932 }, + { url = "https://files.pythonhosted.org/packages/7b/d6/32fd69744afb53995619bc5effa2a405ae0d343cd3e747d0fbc43fe894ee/pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:470d4a4f6d48fb34e92d768b4e8a5cc3780db0d69107abf1cd7ff734b9766eb0", size = 1392485 }, +] + +[[package]] +name = "qtconsole" +version = "5.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ipykernel" }, + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "packaging" }, + { name = "pygments" }, + { name = "qtpy" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f1/83/d2b11f2f737c276d8650a04ad3bf478d10fbcd55fe39f129cdb9e6843d31/qtconsole-5.6.1.tar.gz", hash = "sha256:5cad1c7e6c75d3ef8143857fd2ed28062b4b92b933c2cc328252d18a9cfd0be5", size = 435808 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/8a/635610fb6131bc702229e2780d7b042416866ab78f8ed1ff24c4b23a2f4c/qtconsole-5.6.1-py3-none-any.whl", hash = "sha256:3d22490d9589bace566ad4f3455b61fa2209156f40e87e19e2c3cb64e9264950", size = 125035 }, +] + +[[package]] +name = "qtpy" +version = "2.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e5/10/51e0e50dd1e4a160c54ac0717b8ff11b2063d441e721c2037f61931cf38d/qtpy-2.4.2.tar.gz", hash = "sha256:9d6ec91a587cc1495eaebd23130f7619afa5cdd34a277acb87735b4ad7c65156", size = 66849 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0a/0c/58a1e48209b0b1220ca2368435573f39ff1fa3577b7eef913f8960c5d429/QtPy-2.4.2-py3-none-any.whl", hash = "sha256:5a696b1dd7a354cb330657da1d17c20c2190c72d4888ba923f8461da67aa1a1c", size = 95155 }, +] + +[[package]] +name = "referencing" +version = "0.35.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/99/5b/73ca1f8e72fff6fa52119dbd185f73a907b1989428917b24cff660129b6d/referencing-0.35.1.tar.gz", hash = "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c", size = 62991 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/59/2056f61236782a2c86b33906c025d4f4a0b17be0161b63b70fd9e8775d36/referencing-0.35.1-py3-none-any.whl", hash = "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de", size = 26684 }, +] + +[[package]] +name = "requests" +version = "2.32.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, +] + +[[package]] +name = "rich" +version = "13.9.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ab/3a/0316b28d0761c6734d6bc14e770d85506c986c85ffb239e688eeaab2c2bc/rich-13.9.4.tar.gz", hash = "sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098", size = 223149 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", size = 242424 }, +] + +[[package]] +name = "rpds-py" +version = "0.22.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/01/80/cce854d0921ff2f0a9fa831ba3ad3c65cee3a46711addf39a2af52df2cfd/rpds_py-0.22.3.tar.gz", hash = "sha256:e32fee8ab45d3c2db6da19a5323bc3362237c8b653c70194414b892fd06a080d", size = 26771 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/ad/8d1ddf78f2805a71253fcd388017e7b4a0615c22c762b6d35301fef20106/rpds_py-0.22.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d20cfb4e099748ea39e6f7b16c91ab057989712d31761d3300d43134e26e165f", size = 359773 }, + { url = "https://files.pythonhosted.org/packages/c8/75/68c15732293a8485d79fe4ebe9045525502a067865fa4278f178851b2d87/rpds_py-0.22.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:68049202f67380ff9aa52f12e92b1c30115f32e6895cd7198fa2a7961621fc5a", size = 349214 }, + { url = "https://files.pythonhosted.org/packages/3c/4c/7ce50f3070083c2e1b2bbd0fb7046f3da55f510d19e283222f8f33d7d5f4/rpds_py-0.22.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb4f868f712b2dd4bcc538b0a0c1f63a2b1d584c925e69a224d759e7070a12d5", size = 380477 }, + { url = "https://files.pythonhosted.org/packages/9a/e9/835196a69cb229d5c31c13b8ae603bd2da9a6695f35fe4270d398e1db44c/rpds_py-0.22.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bc51abd01f08117283c5ebf64844a35144a0843ff7b2983e0648e4d3d9f10dbb", size = 386171 }, + { url = "https://files.pythonhosted.org/packages/f9/8e/33fc4eba6683db71e91e6d594a2cf3a8fbceb5316629f0477f7ece5e3f75/rpds_py-0.22.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0f3cec041684de9a4684b1572fe28c7267410e02450f4561700ca5a3bc6695a2", size = 422676 }, + { url = "https://files.pythonhosted.org/packages/37/47/2e82d58f8046a98bb9497a8319604c92b827b94d558df30877c4b3c6ccb3/rpds_py-0.22.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7ef9d9da710be50ff6809fed8f1963fecdfecc8b86656cadfca3bc24289414b0", size = 446152 }, + { url = "https://files.pythonhosted.org/packages/e1/78/79c128c3e71abbc8e9739ac27af11dc0f91840a86fce67ff83c65d1ba195/rpds_py-0.22.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59f4a79c19232a5774aee369a0c296712ad0e77f24e62cad53160312b1c1eaa1", size = 381300 }, + { url = "https://files.pythonhosted.org/packages/c9/5b/2e193be0e8b228c1207f31fa3ea79de64dadb4f6a4833111af8145a6bc33/rpds_py-0.22.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a60bce91f81ddaac922a40bbb571a12c1070cb20ebd6d49c48e0b101d87300d", size = 409636 }, + { url = "https://files.pythonhosted.org/packages/c2/3f/687c7100b762d62186a1c1100ffdf99825f6fa5ea94556844bbbd2d0f3a9/rpds_py-0.22.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e89391e6d60251560f0a8f4bd32137b077a80d9b7dbe6d5cab1cd80d2746f648", size = 556708 }, + { url = "https://files.pythonhosted.org/packages/8c/a2/c00cbc4b857e8b3d5e7f7fc4c81e23afd8c138b930f4f3ccf9a41a23e9e4/rpds_py-0.22.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e3fb866d9932a3d7d0c82da76d816996d1667c44891bd861a0f97ba27e84fc74", size = 583554 }, + { url = "https://files.pythonhosted.org/packages/d0/08/696c9872cf56effdad9ed617ac072f6774a898d46b8b8964eab39ec562d2/rpds_py-0.22.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1352ae4f7c717ae8cba93421a63373e582d19d55d2ee2cbb184344c82d2ae55a", size = 552105 }, + { url = "https://files.pythonhosted.org/packages/18/1f/4df560be1e994f5adf56cabd6c117e02de7c88ee238bb4ce03ed50da9d56/rpds_py-0.22.3-cp311-cp311-win32.whl", hash = "sha256:b0b4136a252cadfa1adb705bb81524eee47d9f6aab4f2ee4fa1e9d3cd4581f64", size = 220199 }, + { url = "https://files.pythonhosted.org/packages/b8/1b/c29b570bc5db8237553002788dc734d6bd71443a2ceac2a58202ec06ef12/rpds_py-0.22.3-cp311-cp311-win_amd64.whl", hash = "sha256:8bd7c8cfc0b8247c8799080fbff54e0b9619e17cdfeb0478ba7295d43f635d7c", size = 231775 }, + { url = "https://files.pythonhosted.org/packages/75/47/3383ee3bd787a2a5e65a9b9edc37ccf8505c0a00170e3a5e6ea5fbcd97f7/rpds_py-0.22.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:27e98004595899949bd7a7b34e91fa7c44d7a97c40fcaf1d874168bb652ec67e", size = 352334 }, + { url = "https://files.pythonhosted.org/packages/40/14/aa6400fa8158b90a5a250a77f2077c0d0cd8a76fce31d9f2b289f04c6dec/rpds_py-0.22.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1978d0021e943aae58b9b0b196fb4895a25cc53d3956b8e35e0b7682eefb6d56", size = 342111 }, + { url = "https://files.pythonhosted.org/packages/7d/06/395a13bfaa8a28b302fb433fb285a67ce0ea2004959a027aea8f9c52bad4/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:655ca44a831ecb238d124e0402d98f6212ac527a0ba6c55ca26f616604e60a45", size = 384286 }, + { url = "https://files.pythonhosted.org/packages/43/52/d8eeaffab047e6b7b7ef7f00d5ead074a07973968ffa2d5820fa131d7852/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:feea821ee2a9273771bae61194004ee2fc33f8ec7db08117ef9147d4bbcbca8e", size = 391739 }, + { url = "https://files.pythonhosted.org/packages/83/31/52dc4bde85c60b63719610ed6f6d61877effdb5113a72007679b786377b8/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:22bebe05a9ffc70ebfa127efbc429bc26ec9e9b4ee4d15a740033efda515cf3d", size = 427306 }, + { url = "https://files.pythonhosted.org/packages/70/d5/1bab8e389c2261dba1764e9e793ed6830a63f830fdbec581a242c7c46bda/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3af6e48651c4e0d2d166dc1b033b7042ea3f871504b6805ba5f4fe31581d8d38", size = 442717 }, + { url = "https://files.pythonhosted.org/packages/82/a1/a45f3e30835b553379b3a56ea6c4eb622cf11e72008229af840e4596a8ea/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e67ba3c290821343c192f7eae1d8fd5999ca2dc99994114643e2f2d3e6138b15", size = 385721 }, + { url = "https://files.pythonhosted.org/packages/a6/27/780c942de3120bdd4d0e69583f9c96e179dfff082f6ecbb46b8d6488841f/rpds_py-0.22.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:02fbb9c288ae08bcb34fb41d516d5eeb0455ac35b5512d03181d755d80810059", size = 415824 }, + { url = "https://files.pythonhosted.org/packages/94/0b/aa0542ca88ad20ea719b06520f925bae348ea5c1fdf201b7e7202d20871d/rpds_py-0.22.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f56a6b404f74ab372da986d240e2e002769a7d7102cc73eb238a4f72eec5284e", size = 561227 }, + { url = "https://files.pythonhosted.org/packages/0d/92/3ed77d215f82c8f844d7f98929d56cc321bb0bcfaf8f166559b8ec56e5f1/rpds_py-0.22.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0a0461200769ab3b9ab7e513f6013b7a97fdeee41c29b9db343f3c5a8e2b9e61", size = 587424 }, + { url = "https://files.pythonhosted.org/packages/09/42/cacaeb047a22cab6241f107644f230e2935d4efecf6488859a7dd82fc47d/rpds_py-0.22.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8633e471c6207a039eff6aa116e35f69f3156b3989ea3e2d755f7bc41754a4a7", size = 555953 }, + { url = "https://files.pythonhosted.org/packages/e6/52/c921dc6d5f5d45b212a456c1f5b17df1a471127e8037eb0972379e39dff4/rpds_py-0.22.3-cp312-cp312-win32.whl", hash = "sha256:593eba61ba0c3baae5bc9be2f5232430453fb4432048de28399ca7376de9c627", size = 221339 }, + { url = "https://files.pythonhosted.org/packages/f2/c7/f82b5be1e8456600395366f86104d1bd8d0faed3802ad511ef6d60c30d98/rpds_py-0.22.3-cp312-cp312-win_amd64.whl", hash = "sha256:d115bffdd417c6d806ea9069237a4ae02f513b778e3789a359bc5856e0404cc4", size = 235786 }, + { url = "https://files.pythonhosted.org/packages/d0/bf/36d5cc1f2c609ae6e8bf0fc35949355ca9d8790eceb66e6385680c951e60/rpds_py-0.22.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:ea7433ce7e4bfc3a85654aeb6747babe3f66eaf9a1d0c1e7a4435bbdf27fea84", size = 351657 }, + { url = "https://files.pythonhosted.org/packages/24/2a/f1e0fa124e300c26ea9382e59b2d582cba71cedd340f32d1447f4f29fa4e/rpds_py-0.22.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6dd9412824c4ce1aca56c47b0991e65bebb7ac3f4edccfd3f156150c96a7bf25", size = 341829 }, + { url = "https://files.pythonhosted.org/packages/cf/c2/0da1231dd16953845bed60d1a586fcd6b15ceaeb965f4d35cdc71f70f606/rpds_py-0.22.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20070c65396f7373f5df4005862fa162db5d25d56150bddd0b3e8214e8ef45b4", size = 384220 }, + { url = "https://files.pythonhosted.org/packages/c7/73/a4407f4e3a00a9d4b68c532bf2d873d6b562854a8eaff8faa6133b3588ec/rpds_py-0.22.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0b09865a9abc0ddff4e50b5ef65467cd94176bf1e0004184eb915cbc10fc05c5", size = 391009 }, + { url = "https://files.pythonhosted.org/packages/a9/c3/04b7353477ab360fe2563f5f0b176d2105982f97cd9ae80a9c5a18f1ae0f/rpds_py-0.22.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3453e8d41fe5f17d1f8e9c383a7473cd46a63661628ec58e07777c2fff7196dc", size = 426989 }, + { url = "https://files.pythonhosted.org/packages/8d/e6/e4b85b722bcf11398e17d59c0f6049d19cd606d35363221951e6d625fcb0/rpds_py-0.22.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5d36399a1b96e1a5fdc91e0522544580dbebeb1f77f27b2b0ab25559e103b8b", size = 441544 }, + { url = "https://files.pythonhosted.org/packages/27/fc/403e65e56f65fff25f2973216974976d3f0a5c3f30e53758589b6dc9b79b/rpds_py-0.22.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009de23c9c9ee54bf11303a966edf4d9087cd43a6003672e6aa7def643d06518", size = 385179 }, + { url = "https://files.pythonhosted.org/packages/57/9b/2be9ff9700d664d51fd96b33d6595791c496d2778cb0b2a634f048437a55/rpds_py-0.22.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1aef18820ef3e4587ebe8b3bc9ba6e55892a6d7b93bac6d29d9f631a3b4befbd", size = 415103 }, + { url = "https://files.pythonhosted.org/packages/bb/a5/03c2ad8ca10994fcf22dd2150dd1d653bc974fa82d9a590494c84c10c641/rpds_py-0.22.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f60bd8423be1d9d833f230fdbccf8f57af322d96bcad6599e5a771b151398eb2", size = 560916 }, + { url = "https://files.pythonhosted.org/packages/ba/2e/be4fdfc8b5b576e588782b56978c5b702c5a2307024120d8aeec1ab818f0/rpds_py-0.22.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:62d9cfcf4948683a18a9aff0ab7e1474d407b7bab2ca03116109f8464698ab16", size = 587062 }, + { url = "https://files.pythonhosted.org/packages/67/e0/2034c221937709bf9c542603d25ad43a68b4b0a9a0c0b06a742f2756eb66/rpds_py-0.22.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9253fc214112405f0afa7db88739294295f0e08466987f1d70e29930262b4c8f", size = 555734 }, + { url = "https://files.pythonhosted.org/packages/ea/ce/240bae07b5401a22482b58e18cfbabaa392409b2797da60223cca10d7367/rpds_py-0.22.3-cp313-cp313-win32.whl", hash = "sha256:fb0ba113b4983beac1a2eb16faffd76cb41e176bf58c4afe3e14b9c681f702de", size = 220663 }, + { url = "https://files.pythonhosted.org/packages/cb/f0/d330d08f51126330467edae2fa4efa5cec8923c87551a79299380fdea30d/rpds_py-0.22.3-cp313-cp313-win_amd64.whl", hash = "sha256:c58e2339def52ef6b71b8f36d13c3688ea23fa093353f3a4fee2556e62086ec9", size = 235503 }, + { url = "https://files.pythonhosted.org/packages/f7/c4/dbe1cc03df013bf2feb5ad00615038050e7859f381e96fb5b7b4572cd814/rpds_py-0.22.3-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:f82a116a1d03628a8ace4859556fb39fd1424c933341a08ea3ed6de1edb0283b", size = 347698 }, + { url = "https://files.pythonhosted.org/packages/a4/3a/684f66dd6b0f37499cad24cd1c0e523541fd768576fa5ce2d0a8799c3cba/rpds_py-0.22.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3dfcbc95bd7992b16f3f7ba05af8a64ca694331bd24f9157b49dadeeb287493b", size = 337330 }, + { url = "https://files.pythonhosted.org/packages/82/eb/e022c08c2ce2e8f7683baa313476492c0e2c1ca97227fe8a75d9f0181e95/rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59259dc58e57b10e7e18ce02c311804c10c5a793e6568f8af4dead03264584d1", size = 380022 }, + { url = "https://files.pythonhosted.org/packages/e4/21/5a80e653e4c86aeb28eb4fea4add1f72e1787a3299687a9187105c3ee966/rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5725dd9cc02068996d4438d397e255dcb1df776b7ceea3b9cb972bdb11260a83", size = 390754 }, + { url = "https://files.pythonhosted.org/packages/37/a4/d320a04ae90f72d080b3d74597074e62be0a8ecad7d7321312dfe2dc5a6a/rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99b37292234e61325e7a5bb9689e55e48c3f5f603af88b1642666277a81f1fbd", size = 423840 }, + { url = "https://files.pythonhosted.org/packages/87/70/674dc47d93db30a6624279284e5631be4c3a12a0340e8e4f349153546728/rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:27b1d3b3915a99208fee9ab092b8184c420f2905b7d7feb4aeb5e4a9c509b8a1", size = 438970 }, + { url = "https://files.pythonhosted.org/packages/3f/64/9500f4d66601d55cadd21e90784cfd5d5f4560e129d72e4339823129171c/rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f612463ac081803f243ff13cccc648578e2279295048f2a8d5eb430af2bae6e3", size = 383146 }, + { url = "https://files.pythonhosted.org/packages/4d/45/630327addb1d17173adcf4af01336fd0ee030c04798027dfcb50106001e0/rpds_py-0.22.3-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f73d3fef726b3243a811121de45193c0ca75f6407fe66f3f4e183c983573e130", size = 408294 }, + { url = "https://files.pythonhosted.org/packages/5f/ef/8efb3373cee54ea9d9980b772e5690a0c9e9214045a4e7fa35046e399fee/rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:3f21f0495edea7fdbaaa87e633a8689cd285f8f4af5c869f27bc8074638ad69c", size = 556345 }, + { url = "https://files.pythonhosted.org/packages/54/01/151d3b9ef4925fc8f15bfb131086c12ec3c3d6dd4a4f7589c335bf8e85ba/rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1e9663daaf7a63ceccbbb8e3808fe90415b0757e2abddbfc2e06c857bf8c5e2b", size = 582292 }, + { url = "https://files.pythonhosted.org/packages/30/89/35fc7a6cdf3477d441c7aca5e9bbf5a14e0f25152aed7f63f4e0b141045d/rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:a76e42402542b1fae59798fab64432b2d015ab9d0c8c47ba7addddbaf7952333", size = 553855 }, + { url = "https://files.pythonhosted.org/packages/8f/e0/830c02b2457c4bd20a8c5bb394d31d81f57fbefce2dbdd2e31feff4f7003/rpds_py-0.22.3-cp313-cp313t-win32.whl", hash = "sha256:69803198097467ee7282750acb507fba35ca22cc3b85f16cf45fb01cb9097730", size = 219100 }, + { url = "https://files.pythonhosted.org/packages/f8/30/7ac943f69855c2db77407ae363484b915d861702dbba1aa82d68d57f42be/rpds_py-0.22.3-cp313-cp313t-win_amd64.whl", hash = "sha256:f5cf2a0c2bdadf3791b5c205d55a37a54025c6e18a71c71f82bb536cf9a454bf", size = 233794 }, +] + +[[package]] +name = "rsa" +version = "4.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyasn1" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/aa/65/7d973b89c4d2351d7fb232c2e452547ddfa243e93131e7cfa766da627b52/rsa-4.9.tar.gz", hash = "sha256:e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21", size = 29711 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/49/97/fa78e3d2f65c02c8e1268b9aba606569fe97f6c8f7c2d74394553347c145/rsa-4.9-py3-none-any.whl", hash = "sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7", size = 34315 }, +] + +[[package]] +name = "s3fs" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "botocore" }, + { name = "fsspec" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d9/9a/504cb277632c4d325beabbd03bb43778f0decb9be22d9e0e6c62f44540c7/s3fs-0.4.2.tar.gz", hash = "sha256:2ca5de8dc18ad7ad350c0bd01aef0406aa5d0fff78a561f0f710f9d9858abdd0", size = 57527 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b8/e4/b8fc59248399d2482b39340ec9be4bb2493846ac23641b43115a7e5cd675/s3fs-0.4.2-py3-none-any.whl", hash = "sha256:91c1dfb45e5217bd441a7a560946fe865ced6225ff7eb0fb459fe6e601a95ed3", size = 19791 }, +] + +[[package]] +name = "s3transfer" +version = "0.11.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "botocore" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1a/aa/fdd958c626b00e3f046d4004363e7f1a2aba4354f78d65ceb3b217fa5eb8/s3transfer-0.11.1.tar.gz", hash = "sha256:3f25c900a367c8b7f7d8f9c34edc87e300bde424f779dc9f0a8ae4f9df9264f6", size = 146952 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5f/ce/22673f4a85ccc640735b4f8d12178a0f41b5d3c6eda7f33756d10ce56901/s3transfer-0.11.1-py3-none-any.whl", hash = "sha256:8fa0aa48177be1f3425176dfe1ab85dcd3d962df603c3dbfc585e6bf857ef0ff", size = 84111 }, +] + +[[package]] +name = "scikit-image" +version = "0.25.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "imageio" }, + { name = "lazy-loader" }, + { name = "networkx" }, + { name = "numpy" }, + { name = "packaging" }, + { name = "pillow" }, + { name = "scipy" }, + { name = "tifffile" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e6/8d/383e5438c807804b66d68ed2c09202d185ea781b6022aa8b9fac3851137f/scikit_image-0.25.0.tar.gz", hash = "sha256:58d94fea11b6b3306b3770417dc1cbca7fa9bcbd6a13945d7910399c88c2018c", size = 22696477 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3e/5c/8182c9e7560a46a7c138c855b8b1804ddf5dc4c0a926fbc0f3c4092d2112/scikit_image-0.25.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7e235726d9b404527445679030209965c5365767b8728584fadd8dbfa29e29de", size = 13998703 }, + { url = "https://files.pythonhosted.org/packages/ed/26/0188429b5a81cb58255b73a9c22bd22853438ab3c066f287db045efb5938/scikit_image-0.25.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:854b88b7d8b862ccd8f22e660c16fd54f9430c87e079c8dfe46c7f0cebbb1de3", size = 13175073 }, + { url = "https://files.pythonhosted.org/packages/24/12/46688700f5c3b54976a56500f8f4294147fbbd252dde357e228671024436/scikit_image-0.25.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70e2d90b5bfffffe0880d25d40ddab9ca5c145912461d6c8f6bd3449f4e527bb", size = 14144390 }, + { url = "https://files.pythonhosted.org/packages/35/e8/67e4bd1c5f6c4cd0f53505ebb9eb15f143d6fed1fb4938b542013fa3ec25/scikit_image-0.25.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4287052dcd8fe63934daa6cbe28b2abe817d75e9b952290fdb4de42254740fc", size = 14783976 }, + { url = "https://files.pythonhosted.org/packages/26/72/0653e3274310972bd053fc9271aa29df2de0d51ad2db2d47b199bf6070d5/scikit_image-0.25.0-cp311-cp311-win_amd64.whl", hash = "sha256:d1e25ff6a3cdd8be938a5a06b441020aac304fa9f457a808bd359f5260468739", size = 12787254 }, + { url = "https://files.pythonhosted.org/packages/21/6a/a8df6953a85042a8a219c97e1758486b997c9dd319e1c474362229406e57/scikit_image-0.25.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7e63f18b10f9b74590d2ca62cbc4147e696a5e72cfcbcd4af52395fd94fcdc6e", size = 13981411 }, + { url = "https://files.pythonhosted.org/packages/dd/4c/e40a77c57a6b90dda710bc64ed761c93e7b3dd1cef3815675a2bc6807755/scikit_image-0.25.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:bad4af5edf58775607c153af5bc3f193c2b67261ea9817b62362c746e439d094", size = 13230600 }, + { url = "https://files.pythonhosted.org/packages/63/3f/fac8e1eefbe4a885fa1c9a384db8e11e47c19ab5558b25f370ade3901868/scikit_image-0.25.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44f7681ff99eed2c33d993bc4bfc17b62e6cadbca1081c7fdbb3607ce89b15e6", size = 14173033 }, + { url = "https://files.pythonhosted.org/packages/47/fe/f09efbf54782996a7f1d3db0e33cb9097f3cc6033392fb53459d7254fa7c/scikit_image-0.25.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:758f55d858aa796114a4275051ca4bb41d8b40c53eb78cb60f0b1ed235d4144b", size = 15002211 }, + { url = "https://files.pythonhosted.org/packages/89/30/4f95a7462411def5563c01d56674bd122bd6db55ae1e8c31ad68586e2d27/scikit_image-0.25.0-cp312-cp312-win_amd64.whl", hash = "sha256:4f7178c6fb6163710571522847326ad936a603646255b22d3d76b6ba58153890", size = 12894520 }, + { url = "https://files.pythonhosted.org/packages/bc/e4/066d0ed167eb146877c50109e94ec254e266391f385c72d545f34cf51755/scikit_image-0.25.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d3b08a8894190bc49038dc1a61f6ef0991ff520e5268604abd7ad217f693a0cc", size = 13917192 }, + { url = "https://files.pythonhosted.org/packages/3f/7c/ada573675ad528caff75c8b175c2e28e62c65c7192cf2292a25c3d9774fa/scikit_image-0.25.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:8438eac699c8b2820e5956960191d0c3b302bf9c4d42dbf194a229db04abacc3", size = 13191642 }, + { url = "https://files.pythonhosted.org/packages/cf/c4/16dbe7f7ef7b675c7a11dd51280f09001abca9f3cd4f455f342765b81b43/scikit_image-0.25.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9920673ef08ea44026c80deb14cf84d5c0cc1a68efad914c126b76110ed017a8", size = 14113112 }, + { url = "https://files.pythonhosted.org/packages/8c/d2/84d658db2abecac5f7225213a69d211d95157e8fa155b4e017903549a922/scikit_image-0.25.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0fe2f05cda852a5f90872054dd3709e9c4e670fc7332aef169867944e1b37431", size = 14974308 }, + { url = "https://files.pythonhosted.org/packages/b0/0d/4f017d5b85bf742624f8ccd6a03fb9cbf90704b52dbaefa7ffdb28e34775/scikit_image-0.25.0-cp313-cp313-win_amd64.whl", hash = "sha256:8ede552097ee281d01b25dc4ce121fdc17b6a43c36bbc3c13e39f0e3d8fb5239", size = 12880013 }, +] + +[package.optional-dependencies] +data = [ + { name = "pooch" }, +] + +[[package]] +name = "scipy" +version = "1.14.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/62/11/4d44a1f274e002784e4dbdb81e0ea96d2de2d1045b2132d5af62cc31fd28/scipy-1.14.1.tar.gz", hash = "sha256:5a275584e726026a5699459aa72f828a610821006228e841b94275c4a7c08417", size = 58620554 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b2/ab/070ccfabe870d9f105b04aee1e2860520460ef7ca0213172abfe871463b9/scipy-1.14.1-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:2da0469a4ef0ecd3693761acbdc20f2fdeafb69e6819cc081308cc978153c675", size = 39076999 }, + { url = "https://files.pythonhosted.org/packages/a7/c5/02ac82f9bb8f70818099df7e86c3ad28dae64e1347b421d8e3adf26acab6/scipy-1.14.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:c0ee987efa6737242745f347835da2cc5bb9f1b42996a4d97d5c7ff7928cb6f2", size = 29894570 }, + { url = "https://files.pythonhosted.org/packages/ed/05/7f03e680cc5249c4f96c9e4e845acde08eb1aee5bc216eff8a089baa4ddb/scipy-1.14.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3a1b111fac6baec1c1d92f27e76511c9e7218f1695d61b59e05e0fe04dc59617", size = 23103567 }, + { url = "https://files.pythonhosted.org/packages/5e/fc/9f1413bef53171f379d786aabc104d4abeea48ee84c553a3e3d8c9f96a9c/scipy-1.14.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:8475230e55549ab3f207bff11ebfc91c805dc3463ef62eda3ccf593254524ce8", size = 25499102 }, + { url = "https://files.pythonhosted.org/packages/c2/4b/b44bee3c2ddc316b0159b3d87a3d467ef8d7edfd525e6f7364a62cd87d90/scipy-1.14.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:278266012eb69f4a720827bdd2dc54b2271c97d84255b2faaa8f161a158c3b37", size = 35586346 }, + { url = "https://files.pythonhosted.org/packages/93/6b/701776d4bd6bdd9b629c387b5140f006185bd8ddea16788a44434376b98f/scipy-1.14.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fef8c87f8abfb884dac04e97824b61299880c43f4ce675dd2cbeadd3c9b466d2", size = 41165244 }, + { url = "https://files.pythonhosted.org/packages/06/57/e6aa6f55729a8f245d8a6984f2855696c5992113a5dc789065020f8be753/scipy-1.14.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b05d43735bb2f07d689f56f7b474788a13ed8adc484a85aa65c0fd931cf9ccd2", size = 42817917 }, + { url = "https://files.pythonhosted.org/packages/ea/c2/5ecadc5fcccefaece775feadcd795060adf5c3b29a883bff0e678cfe89af/scipy-1.14.1-cp311-cp311-win_amd64.whl", hash = "sha256:716e389b694c4bb564b4fc0c51bc84d381735e0d39d3f26ec1af2556ec6aad94", size = 44781033 }, + { url = "https://files.pythonhosted.org/packages/c0/04/2bdacc8ac6387b15db6faa40295f8bd25eccf33f1f13e68a72dc3c60a99e/scipy-1.14.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:631f07b3734d34aced009aaf6fedfd0eb3498a97e581c3b1e5f14a04164a456d", size = 39128781 }, + { url = "https://files.pythonhosted.org/packages/c8/53/35b4d41f5fd42f5781dbd0dd6c05d35ba8aa75c84ecddc7d44756cd8da2e/scipy-1.14.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:af29a935803cc707ab2ed7791c44288a682f9c8107bc00f0eccc4f92c08d6e07", size = 29939542 }, + { url = "https://files.pythonhosted.org/packages/66/67/6ef192e0e4d77b20cc33a01e743b00bc9e68fb83b88e06e636d2619a8767/scipy-1.14.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:2843f2d527d9eebec9a43e6b406fb7266f3af25a751aa91d62ff416f54170bc5", size = 23148375 }, + { url = "https://files.pythonhosted.org/packages/f6/32/3a6dedd51d68eb7b8e7dc7947d5d841bcb699f1bf4463639554986f4d782/scipy-1.14.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:eb58ca0abd96911932f688528977858681a59d61a7ce908ffd355957f7025cfc", size = 25578573 }, + { url = "https://files.pythonhosted.org/packages/f0/5a/efa92a58dc3a2898705f1dc9dbaf390ca7d4fba26d6ab8cfffb0c72f656f/scipy-1.14.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30ac8812c1d2aab7131a79ba62933a2a76f582d5dbbc695192453dae67ad6310", size = 35319299 }, + { url = "https://files.pythonhosted.org/packages/8e/ee/8a26858ca517e9c64f84b4c7734b89bda8e63bec85c3d2f432d225bb1886/scipy-1.14.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f9ea80f2e65bdaa0b7627fb00cbeb2daf163caa015e59b7516395fe3bd1e066", size = 40849331 }, + { url = "https://files.pythonhosted.org/packages/a5/cd/06f72bc9187840f1c99e1a8750aad4216fc7dfdd7df46e6280add14b4822/scipy-1.14.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:edaf02b82cd7639db00dbff629995ef185c8df4c3ffa71a5562a595765a06ce1", size = 42544049 }, + { url = "https://files.pythonhosted.org/packages/aa/7d/43ab67228ef98c6b5dd42ab386eae2d7877036970a0d7e3dd3eb47a0d530/scipy-1.14.1-cp312-cp312-win_amd64.whl", hash = "sha256:2ff38e22128e6c03ff73b6bb0f85f897d2362f8c052e3b8ad00532198fbdae3f", size = 44521212 }, + { url = "https://files.pythonhosted.org/packages/50/ef/ac98346db016ff18a6ad7626a35808f37074d25796fd0234c2bb0ed1e054/scipy-1.14.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1729560c906963fc8389f6aac023739ff3983e727b1a4d87696b7bf108316a79", size = 39091068 }, + { url = "https://files.pythonhosted.org/packages/b9/cc/70948fe9f393b911b4251e96b55bbdeaa8cca41f37c26fd1df0232933b9e/scipy-1.14.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:4079b90df244709e675cdc8b93bfd8a395d59af40b72e339c2287c91860deb8e", size = 29875417 }, + { url = "https://files.pythonhosted.org/packages/3b/2e/35f549b7d231c1c9f9639f9ef49b815d816bf54dd050da5da1c11517a218/scipy-1.14.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:e0cf28db0f24a38b2a0ca33a85a54852586e43cf6fd876365c86e0657cfe7d73", size = 23084508 }, + { url = "https://files.pythonhosted.org/packages/3f/d6/b028e3f3e59fae61fb8c0f450db732c43dd1d836223a589a8be9f6377203/scipy-1.14.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:0c2f95de3b04e26f5f3ad5bb05e74ba7f68b837133a4492414b3afd79dfe540e", size = 25503364 }, + { url = "https://files.pythonhosted.org/packages/a7/2f/6c142b352ac15967744d62b165537a965e95d557085db4beab2a11f7943b/scipy-1.14.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b99722ea48b7ea25e8e015e8341ae74624f72e5f21fc2abd45f3a93266de4c5d", size = 35292639 }, + { url = "https://files.pythonhosted.org/packages/56/46/2449e6e51e0d7c3575f289f6acb7f828938eaab8874dbccfeb0cd2b71a27/scipy-1.14.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5149e3fd2d686e42144a093b206aef01932a0059c2a33ddfa67f5f035bdfe13e", size = 40798288 }, + { url = "https://files.pythonhosted.org/packages/32/cd/9d86f7ed7f4497c9fd3e39f8918dd93d9f647ba80d7e34e4946c0c2d1a7c/scipy-1.14.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e4f5a7c49323533f9103d4dacf4e4f07078f360743dec7f7596949149efeec06", size = 42524647 }, + { url = "https://files.pythonhosted.org/packages/f5/1b/6ee032251bf4cdb0cc50059374e86a9f076308c1512b61c4e003e241efb7/scipy-1.14.1-cp313-cp313-win_amd64.whl", hash = "sha256:baff393942b550823bfce952bb62270ee17504d02a1801d7fd0719534dfb9c84", size = 44469524 }, +] + +[[package]] +name = "setuptools" +version = "75.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/54/292f26c208734e9a7f067aea4a7e282c080750c4546559b58e2e45413ca0/setuptools-75.6.0.tar.gz", hash = "sha256:8199222558df7c86216af4f84c30e9b34a61d8ba19366cc914424cdbd28252f6", size = 1337429 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/55/21/47d163f615df1d30c094f6c8bbb353619274edccf0327b185cc2493c2c33/setuptools-75.6.0-py3-none-any.whl", hash = "sha256:ce74b49e8f7110f9bf04883b730f4765b774ef3ef28f722cce7c273d253aaf7d", size = 1224032 }, +] + +[[package]] +name = "setuptools-scm" +version = "8.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, + { name = "setuptools" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4f/a4/00a9ac1b555294710d4a68d2ce8dfdf39d72aa4d769a7395d05218d88a42/setuptools_scm-8.1.0.tar.gz", hash = "sha256:42dea1b65771cba93b7a515d65a65d8246e560768a66b9106a592c8e7f26c8a7", size = 76465 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/b9/1906bfeb30f2fc13bb39bf7ddb8749784c05faadbd18a21cf141ba37bff2/setuptools_scm-8.1.0-py3-none-any.whl", hash = "sha256:897a3226a6fd4a6eb2f068745e49733261a21f70b1bb28fce0339feb978d9af3", size = 43666 }, +] + +[[package]] +name = "shellingham" +version = "1.5.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755 }, +] + +[[package]] +name = "simplejpeg" +version = "1.7.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a8/7f/48ed799e98f96a853cf903899880632f8a96a94de895db4f98a45309c13a/simplejpeg-1.7.6.tar.gz", hash = "sha256:89ea4784eaa09edd11b0caded9c40326c4872ba9232ff1705d5b732492e7aca8", size = 5793293 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/db/b2/015cbf433900c1a101bc7c60048852f892ed2aaaded6d59785cf4fbaaac8/simplejpeg-1.7.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a729e38dfe8254bdefc062dcb37597db5ea47412b6ed77bb42c5e6476567d2f9", size = 493474 }, + { url = "https://files.pythonhosted.org/packages/19/dc/d9ba97a5ae34625337fd0f01c03ef0bb2924ffcec19a2910eb0ecd81a3ba/simplejpeg-1.7.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bcecde64d55ac6dac34e32e8c4f944139b0b65d34a5ae90d97cacf31f77e46c1", size = 430395 }, + { url = "https://files.pythonhosted.org/packages/84/bd/53b4599d4d594438ec99c7fbb4c6e50ffac7258d33842f09d9181e97a4ef/simplejpeg-1.7.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d77602b573fb017ad2dde774ace91f448d755ff7c4bb05a05aac8fc7f50edec0", size = 432383 }, + { url = "https://files.pythonhosted.org/packages/b8/04/5520ded57be48a62929df87257bf7066b65e1c8a674c5f207cdb8be589c1/simplejpeg-1.7.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d96b7ea5d0293299a692bb526500ad051093705d807e8e55f034d27084015f7", size = 408814 }, + { url = "https://files.pythonhosted.org/packages/bc/05/d7eaf2ef9683788e220b5f439372e6e508a7d1ccc51fee53bd985f14bf8e/simplejpeg-1.7.6-cp311-cp311-win_amd64.whl", hash = "sha256:fd9d755a3b42d9a89cf13c408852e0b11b1ab630073d3c47ee98f5ab51ac2c99", size = 295744 }, + { url = "https://files.pythonhosted.org/packages/e4/e0/9bf79ec9bd993dff64d6ea4fbc3046172fa61e16209571d85c478cc67013/simplejpeg-1.7.6-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3f34fd17bb5347fc9251c936425ef5342e16b2a46f40ec2df3cda063519566ad", size = 494223 }, + { url = "https://files.pythonhosted.org/packages/3e/6a/0e2be7a56b440c085a3159a31833248f0db1620951286c98434eeacd2ae6/simplejpeg-1.7.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0a078ab7c242608137aae62a57d08677a6b4d2f974f51679aa0fa7db6127872b", size = 430405 }, + { url = "https://files.pythonhosted.org/packages/51/8b/0c9059be3e4246f80b8688822d1ef3fab27d117a08bac72c4cef37bbc6ae/simplejpeg-1.7.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12319e9045f7f5ae5d3af985aeed86bd438e240a1feb348f5535f7f3fb14c9d0", size = 430696 }, + { url = "https://files.pythonhosted.org/packages/e5/17/46741913917b68f1f31041077e84c23cfddad1d79312be6fe3d6ef20fd61/simplejpeg-1.7.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b0387029b26f2c7f85443320f7af6ad75cd9ee958ff3925214cba0210208251", size = 407309 }, + { url = "https://files.pythonhosted.org/packages/08/a4/466d874c9cd6d6d561a4c193568779f1e50ba97c65d33c49ed4bb4259dca/simplejpeg-1.7.6-cp312-cp312-win_amd64.whl", hash = "sha256:bc9434378e30a485aded0fc9deff401981224737237db901e801da7719fc6026", size = 296026 }, + { url = "https://files.pythonhosted.org/packages/b1/43/4baf44c50e503d01087f628fd365d28eface2c8084479369dc7730f1f598/simplejpeg-1.7.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:dfe768fb8b79253a3c9f49b86760f4c1c48c98870113856c98c37865c7ae8ae5", size = 492345 }, + { url = "https://files.pythonhosted.org/packages/c0/68/ccc77aff0b6a8d6547712417aac3631ee74474f6547a17d7dea95be0606e/simplejpeg-1.7.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8505a335fd4bc92e46d9b97f51780a1ba782780fdd9036cc68e1a248a08f9e7c", size = 428999 }, + { url = "https://files.pythonhosted.org/packages/39/d0/5a204419a6eec6e988979f9750af7d59feae5618ec72a4a996c9339d6e7f/simplejpeg-1.7.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b19f967d0b3aa7d8294a1ddc103d269f53044f9827068b5a2b98c7197003c92", size = 429078 }, + { url = "https://files.pythonhosted.org/packages/f1/85/a6bb8773d431cd96e28b923c3d6795d1e18a93aa3a5b147e158cf6a6fc98/simplejpeg-1.7.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b03f6dc376a139473704955503b64582d289335b09f267c2097451aad3224c8a", size = 405822 }, + { url = "https://files.pythonhosted.org/packages/a8/5e/0a6238d987af2953ae7c1fb5d51b6f945f85846fb39642343ac1656f93ae/simplejpeg-1.7.6-cp313-cp313-win_amd64.whl", hash = "sha256:635a3bb01ccc330ea8672bf451805641525c37a60769124705280ad5ccb726cc", size = 295691 }, +] + +[[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 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 }, +] + +[[package]] +name = "snowballstemmer" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/44/7b/af302bebf22c749c56c9c3e8ae13190b5b5db37a33d9068652e8f73b7089/snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1", size = 86699 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/dc/c02e01294f7265e63a7315fe086dd1df7dacb9f840a804da846b96d01b96/snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a", size = 93002 }, +] + +[[package]] +name = "sortedcontainers" +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e8/c4/ba2f8066cceb6f23394729afe52f3bf7adec04bf9ed2c820b39e19299111/sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88", size = 30594 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0", size = 29575 }, +] + +[[package]] +name = "sphinx" +version = "8.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "alabaster" }, + { name = "babel" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, + { 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/6f/6d/be0b61178fe2cdcb67e2a92fc9ebb488e3c51c4f74a36a7824c0adf23425/sphinx-8.1.3.tar.gz", hash = "sha256:43c1911eecb0d3e161ad78611bc905d1ad0e523e4ddc202a58a821773dc4c927", size = 8184611 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/60/1ddff83a56d33aaf6f10ec8ce84b4c007d9368b21008876fceda7e7381ef/sphinx-8.1.3-py3-none-any.whl", hash = "sha256:09719015511837b76bf6e03e42eb7595ac8c2e41eeb9c29c5b755c6b677992a2", size = 3487125 }, +] + +[[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 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5d/85/9ebeae2f76e9e77b952f4b274c27238156eae7979c5421fba91a28f4970d/sphinxcontrib_applehelp-2.0.0-py3-none-any.whl", hash = "sha256:4cd3f0ec4ac5dd9c17ec65e9ab272c9b867ea77425228e68ecf08d6b28ddbdb5", size = 119300 }, +] + +[[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 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl", hash = "sha256:aefb8b83854e4b0998877524d1029fd3e6879210422ee3780459e28a1f03a8a2", size = 82530 }, +] + +[[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 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0a/7b/18a8c0bcec9182c05a0b3ec2a776bba4ead82750a55ff798e8d406dae604/sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl", hash = "sha256:166759820b47002d22914d64a075ce08f4c46818e17cfc9470a9786b759b19f8", size = 98705 }, +] + +[[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 } +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 }, +] + +[[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 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl", hash = "sha256:b18a828cdba941ccd6ee8445dbe72ffa3ef8cbe7505d8cd1fa0d42d3f2d5f3eb", size = 88743 }, +] + +[[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 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl", hash = "sha256:6e2cb0eef194e10c27ec0023bfeb25badbbb5868244cf5bc5bdc04e4464bf331", size = 92072 }, +] + +[[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 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521 }, +] + +[[package]] +name = "superqt" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pygments" }, + { name = "qtpy" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4a/7b/10b854842f76b20fc8a13ea5b62f78346c84bf9664b7d54ee82e53d88b6d/superqt-0.7.0.tar.gz", hash = "sha256:fa8014a0ffead7f618a85346ac355ba5e9529b177f50caf5093edeec566c6f5d", size = 97558 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/77/47289ce2c607f72446811230ec96406ace44db7669e443793a13fd7b3486/superqt-0.7.0-py3-none-any.whl", hash = "sha256:395d3f511fe5143882eba6e9ffb8d79bd4c782b6d571c1edb4141cea977612d3", size = 91179 }, +] + +[package.optional-dependencies] +iconify = [ + { name = "pyconify" }, +] + +[[package]] +name = "tabulate" +version = "0.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/fe/802052aecb21e3797b8f7902564ab6ea0d60ff8ca23952079064155d1ae1/tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c", size = 81090 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f", size = 35252 }, +] + +[[package]] +name = "tblib" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1a/df/4f2cd7eaa6d41a7994d46527349569d46e34d9cdd07590b5c5b0dcf53de3/tblib-3.0.0.tar.gz", hash = "sha256:93622790a0a29e04f0346458face1e144dc4d32f493714c6c3dff82a4adb77e6", size = 30616 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/87/ce70db7cae60e67851eb94e1a2127d4abb573d3866d2efd302ceb0d4d2a5/tblib-3.0.0-py3-none-any.whl", hash = "sha256:80a6c77e59b55e83911e1e607c649836a69c103963c5f28a46cbeef44acf8129", size = 12478 }, +] + +[[package]] +name = "tenacity" +version = "9.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/94/91fccdb4b8110642462e653d5dcb27e7b674742ad68efd146367da7bdb10/tenacity-9.0.0.tar.gz", hash = "sha256:807f37ca97d62aa361264d497b0e31e92b8027044942bfa756160d908320d73b", size = 47421 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b6/cb/b86984bed139586d01532a587464b5805f12e397594f19f931c4c2fbfa61/tenacity-9.0.0-py3-none-any.whl", hash = "sha256:93de0c98785b27fcf659856aa9f54bfbd399e29969b0621bc7f762bd441b4539", size = 28169 }, +] + +[[package]] +name = "tifffile" +version = "2024.12.12" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/37/c9/fc4e490c5b0ccad68c98ea1d6e0f409bd7d50e2e8fc30a0725594d3104ff/tifffile-2024.12.12.tar.gz", hash = "sha256:c38e929bf74c04b6c8708d87f16b32c85c6d7c2514b99559ea3db8003ba4edda", size = 365416 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d8/1e/76cbc758f6865a9da18001ac70d1a4154603b71e233f704401fc7d62493e/tifffile-2024.12.12-py3-none-any.whl", hash = "sha256:6ff0f196a46a75c8c0661c70995e06ea4d08a81fe343193e69f1673f4807d508", size = 227538 }, +] + +[[package]] +name = "tomli-w" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d4/19/b65f1a088ee23e37cdea415b357843eca8b1422a7b11a9eee6e35d4ec273/tomli_w-1.1.0.tar.gz", hash = "sha256:49e847a3a304d516a169a601184932ef0f6b61623fe680f836a2aa7128ed0d33", size = 6929 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c4/ac/ce90573ba446a9bbe65838ded066a805234d159b4446ae9f8ec5bbd36cbd/tomli_w-1.1.0-py3-none-any.whl", hash = "sha256:1403179c78193e3184bfaade390ddbd071cba48a32a2e62ba11aae47490c63f7", size = 6440 }, +] + +[[package]] +name = "toolz" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8a/0b/d80dfa675bf592f636d1ea0b835eab4ec8df6e9415d8cfd766df54456123/toolz-1.0.0.tar.gz", hash = "sha256:2c86e3d9a04798ac556793bced838816296a2f085017664e4995cb40a1047a02", size = 66790 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/03/98/eb27cc78ad3af8e302c9d8ff4977f5026676e130d28dd7578132a457170c/toolz-1.0.0-py3-none-any.whl", hash = "sha256:292c8f1c4e7516bf9086f8850935c799a874039c8bcf959d47b600e4c44a6236", size = 56383 }, +] + +[[package]] +name = "tornado" +version = "6.4.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/59/45/a0daf161f7d6f36c3ea5fc0c2de619746cc3dd4c76402e9db545bd920f63/tornado-6.4.2.tar.gz", hash = "sha256:92bad5b4746e9879fd7bf1eb21dce4e3fc5128d71601f80005afa39237ad620b", size = 501135 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/7e/71f604d8cea1b58f82ba3590290b66da1e72d840aeb37e0d5f7291bd30db/tornado-6.4.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e828cce1123e9e44ae2a50a9de3055497ab1d0aeb440c5ac23064d9e44880da1", size = 436299 }, + { url = "https://files.pythonhosted.org/packages/96/44/87543a3b99016d0bf54fdaab30d24bf0af2e848f1d13d34a3a5380aabe16/tornado-6.4.2-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:072ce12ada169c5b00b7d92a99ba089447ccc993ea2143c9ede887e0937aa803", size = 434253 }, + { url = "https://files.pythonhosted.org/packages/cb/fb/fdf679b4ce51bcb7210801ef4f11fdac96e9885daa402861751353beea6e/tornado-6.4.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a017d239bd1bb0919f72af256a970624241f070496635784d9bf0db640d3fec", size = 437602 }, + { url = "https://files.pythonhosted.org/packages/4f/3b/e31aeffffc22b475a64dbeb273026a21b5b566f74dee48742817626c47dc/tornado-6.4.2-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c36e62ce8f63409301537222faffcef7dfc5284f27eec227389f2ad11b09d946", size = 436972 }, + { url = "https://files.pythonhosted.org/packages/22/55/b78a464de78051a30599ceb6983b01d8f732e6f69bf37b4ed07f642ac0fc/tornado-6.4.2-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bca9eb02196e789c9cb5c3c7c0f04fb447dc2adffd95265b2c7223a8a615ccbf", size = 437173 }, + { url = "https://files.pythonhosted.org/packages/79/5e/be4fb0d1684eb822c9a62fb18a3e44a06188f78aa466b2ad991d2ee31104/tornado-6.4.2-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:304463bd0772442ff4d0f5149c6f1c2135a1fae045adf070821c6cdc76980634", size = 437892 }, + { url = "https://files.pythonhosted.org/packages/f5/33/4f91fdd94ea36e1d796147003b490fe60a0215ac5737b6f9c65e160d4fe0/tornado-6.4.2-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:c82c46813ba483a385ab2a99caeaedf92585a1f90defb5693351fa7e4ea0bf73", size = 437334 }, + { url = "https://files.pythonhosted.org/packages/2b/ae/c1b22d4524b0e10da2f29a176fb2890386f7bd1f63aacf186444873a88a0/tornado-6.4.2-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:932d195ca9015956fa502c6b56af9eb06106140d844a335590c1ec7f5277d10c", size = 437261 }, + { url = "https://files.pythonhosted.org/packages/b5/25/36dbd49ab6d179bcfc4c6c093a51795a4f3bed380543a8242ac3517a1751/tornado-6.4.2-cp38-abi3-win32.whl", hash = "sha256:2876cef82e6c5978fde1e0d5b1f919d756968d5b4282418f3146b79b58556482", size = 438463 }, + { url = "https://files.pythonhosted.org/packages/61/cc/58b1adeb1bb46228442081e746fcdbc4540905c87e8add7c277540934edb/tornado-6.4.2-cp38-abi3-win_amd64.whl", hash = "sha256:908b71bf3ff37d81073356a5fadcc660eb10c1476ee6e2725588626ce7e5ca38", size = 438907 }, +] + +[[package]] +name = "tqdm" +version = "4.67.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540 }, +] + +[[package]] +name = "traitlets" +version = "5.14.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", size = 161621 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359 }, +] + +[[package]] +name = "triangle" +version = "20230923" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/0a/9dc924a6d57abca8ed898b1e5973cfe3a8c704f381aeb990ce4ada4727f5/triangle-20230923-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:58c3f1e4c4ed3105dd33f885313200514669cc36b43a9a36101d0c286d2433fc", size = 1456934 }, + { url = "https://files.pythonhosted.org/packages/e5/48/f10364cba86eb035ac4d191b5457d0b7597fcc3a3c51b7ee45085b0c9a41/triangle-20230923-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4baec5494bcba194b8c1d435382254bf394dc01f591bed452a8b8bd086b74845", size = 2101649 }, + { url = "https://files.pythonhosted.org/packages/cd/96/63136f42e24775bb343bbffc9e8ef70871645e0f49e20a75e98897900638/triangle-20230923-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4aae0afb29d286456d9c494f7d7c668994b59ac15026eeeb07ec7e2fbb348ac3", size = 2027557 }, + { url = "https://files.pythonhosted.org/packages/07/f6/5225e7cb9f583a881f5ea784d5fe841781abc2ac669a0b7d86473c757d46/triangle-20230923-cp311-cp311-win32.whl", hash = "sha256:aa5018fd5b87d0b798a933d54466bfebc5bb23efa59a59398b198ed19d22cc94", size = 1405960 }, + { url = "https://files.pythonhosted.org/packages/f5/98/ae7f9c0d5baac58f114182e5cbb3d491318a80166e6e7149c69b4f135077/triangle-20230923-cp311-cp311-win_amd64.whl", hash = "sha256:f6a5270fb5ff4a48abe6a752420e438b05d087bda98ca807498f4ab720aee096", size = 1425525 }, + { url = "https://files.pythonhosted.org/packages/35/00/ac56b3d4282a600ca8d990413066cf796165a06e137683e2ae02b6a27812/triangle-20230923-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:19dca27055bd9097d2704fce6874ddadd786453e7fb58fa52a7fad9b2c0ccf78", size = 1458813 }, + { url = "https://files.pythonhosted.org/packages/62/26/8a0a241381d45502709c407de8171ce975c7905203fc3185d80aaa3bbd75/triangle-20230923-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17a61ccd56620ed88c651e73b694c174a8532072618229df6366726c877bb2f0", size = 2094138 }, + { url = "https://files.pythonhosted.org/packages/68/d2/68b91fef7df6a3b0844523f165cc09c2f7c480c43f286475db5594e57ea3/triangle-20230923-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6b3f149a8535ee1c4ca502150214c9d215690f8f3003d5b0cb971cf04497c96d", size = 2011550 }, + { url = "https://files.pythonhosted.org/packages/85/30/94cf47b79e6c1818522a3d7bd04498a0b3a5636bfe1d0a0444a5235dd7ec/triangle-20230923-cp312-cp312-win32.whl", hash = "sha256:356dc18d627baa67536bb47c164e30eb5755d7ec2a99a7c87ed997dbd60c96c0", size = 1406852 }, + { url = "https://files.pythonhosted.org/packages/57/b5/a856cdbc0751d1ce499abedd8fc796623788ae200d612ad49c7a963ad24b/triangle-20230923-cp312-cp312-win_amd64.whl", hash = "sha256:f083b4c2a1a11cf89835910a5c93b2c50f94b8ca68af425e9372215ec8e22252", size = 1426466 }, +] + +[[package]] +name = "typer" +version = "0.15.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "rich" }, + { name = "shellingham" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cb/ce/dca7b219718afd37a0068f4f2530a727c2b74a8b6e8e0c0080a4c0de4fcd/typer-0.15.1.tar.gz", hash = "sha256:a0588c0a7fa68a1978a069818657778f86abe6ff5ea6abf472f940a08bfe4f0a", size = 99789 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d0/cc/0a838ba5ca64dc832aa43f727bd586309846b0ffb2ce52422543e6075e8a/typer-0.15.1-py3-none-any.whl", hash = "sha256:7994fb7b8155b64d3402518560648446072864beefd44aa2dc36972a5972e847", size = 44908 }, +] + +[[package]] +name = "typing-extensions" +version = "4.12.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8", size = 85321 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438 }, +] + +[[package]] +name = "tzdata" +version = "2024.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e1/34/943888654477a574a86a98e9896bae89c7aa15078ec29f490fef2f1e5384/tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc", size = 193282 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a6/ab/7e5f53c3b9d14972843a647d8d7a853969a58aecc7559cb3267302c94774/tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd", size = 346586 }, +] + +[[package]] +name = "urllib3" +version = "2.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ed/63/22ba4ebfe7430b76388e7cd448d5478814d3032121827c12a2cc287e2260/urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9", size = 300677 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/d9/5f4c13cecde62396b0d3fe530a50ccea91e7dfc1ccf0e09c228841bb5ba8/urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", size = 126338 }, +] + +[package.optional-dependencies] +brotli = [ + { name = "brotli", marker = "platform_python_implementation == 'CPython'" }, + { name = "brotlicffi", marker = "platform_python_implementation != 'CPython'" }, +] + +[[package]] +name = "virtualenv" +version = "20.28.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "distlib" }, + { name = "filelock" }, + { name = "platformdirs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bf/75/53316a5a8050069228a2f6d11f32046cfa94fbb6cc3f08703f59b873de2e/virtualenv-20.28.0.tar.gz", hash = "sha256:2c9c3262bb8e7b87ea801d715fae4495e6032450c71d2309be9550e7364049aa", size = 7650368 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/f9/0919cf6f1432a8c4baa62511f8f8da8225432d22e83e3476f5be1a1edc6e/virtualenv-20.28.0-py3-none-any.whl", hash = "sha256:23eae1b4516ecd610481eda647f3a7c09aea295055337331bb4e6892ecce47b0", size = 4276702 }, +] + +[[package]] +name = "vispy" +version = "0.14.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "freetype-py" }, + { name = "hsluv" }, + { name = "kiwisolver" }, + { name = "numpy" }, + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/24/96/a0bf368c0a8f5c9b599f3f9f4643b425298dfde8a744c9b0b02af9ce8595/vispy-0.14.3.tar.gz", hash = "sha256:efbbb847a908baf7e7169ab9bf296138a39364f367e6cb0a8ec03ad71699d31d", size = 2508703 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/1d/ae51e2114e678418ecc00ea20762d556c0d4913271bfe227b22ef7997c1f/vispy-0.14.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fe3ae49fbc6fd7f53fa34a5bbe693eb7fb6b69316fb7fe60c5e2d352afafe278", size = 1477623 }, + { url = "https://files.pythonhosted.org/packages/d8/7d/e2b6f574f4bac658255961f98d98776efad656d10391bf00982e7afc1485/vispy-0.14.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f474f415d280e5ed71f5a513c4d42d59049710b11f144fa85c312fd639c08a9b", size = 1471353 }, + { url = "https://files.pythonhosted.org/packages/94/96/f2096351d4519b57a617857144c0ad238595f57ab8604fa6c304992db12c/vispy-0.14.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:af4863e7ba8ec4985ab8772d86b11dc71b3ab20f29c7e044fb35a1a009da5f98", size = 1873818 }, + { url = "https://files.pythonhosted.org/packages/f7/44/08653f4a54eba576cd2df95a1779a5bad7e3a4a9a6bfcaf575422beb9edf/vispy-0.14.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66bcb62a004bb97544fd14b9035c8194d8074a8dbc3eea6a6f9a3a9f5fc1ff08", size = 1877699 }, + { url = "https://files.pythonhosted.org/packages/1a/5d/3a522ad57f6aeaff91bc7653854c27207fab9094d3ca2615db539a946227/vispy-0.14.3-cp311-cp311-win_amd64.whl", hash = "sha256:12d8e23ffb865e6d491d71cbf0dc54f53ca41b9167f5de99cdb08921a111f585", size = 1468954 }, + { url = "https://files.pythonhosted.org/packages/ae/8b/991197f3e975de9c7eb03bdd880bd00980ccb0d7be862518514905819c7f/vispy-0.14.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f624b58c9a62e68aeb279678f9ae042cf875c24f650b042e2a7005fde9f2f3e2", size = 1478725 }, + { url = "https://files.pythonhosted.org/packages/3e/fe/ae8018ab01cdea43f3cd2e072df28d257edd8274f1fcde04174ff263bf4a/vispy-0.14.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:31b1fdd1e1924ca04fce250fb958412fbcefe4f1e4e6fffa12eb4040c00b0963", size = 1472297 }, + { url = "https://files.pythonhosted.org/packages/2c/ff/1cca6b74ec64789bd2b696cabd00276d1e82529d47a4e7db69147208abba/vispy-0.14.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca7aebb4280e3754ae60c673dafb2f5acc26d6182761215281b07e696962e013", size = 1859501 }, + { url = "https://files.pythonhosted.org/packages/5e/08/87a7e2640e5dd444804c69505eef8ae14d50d782c2b2d3b21679cf6a70be/vispy-0.14.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a90896898b10b31760634a955031dc048fda41fd6e21ee4ff3e12ebf16970b09", size = 1866372 }, + { url = "https://files.pythonhosted.org/packages/75/72/e02fb3b3e3ad4458bdc9830e97a980919921752bca1f40d816c1e25d566f/vispy-0.14.3-cp312-cp312-win_amd64.whl", hash = "sha256:2b39304dae410fde21723cdcf50cae71ba611479f01cb8e30116493ce318fcab", size = 1469553 }, +] + +[[package]] +name = "wcwidth" +version = "0.2.13" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/63/53559446a878410fc5a5974feb13d31d78d752eb18aeba59c7fef1af7598/wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5", size = 101301 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166 }, +] + +[[package]] +name = "werkzeug" +version = "3.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9f/69/83029f1f6300c5fb2471d621ab06f6ec6b3324685a2ce0f9777fd4a8b71e/werkzeug-3.1.3.tar.gz", hash = "sha256:60723ce945c19328679790e3282cc758aa4a6040e4bb330f53d30fa546d44746", size = 806925 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/52/24/ab44c871b0f07f491e5d2ad12c9bd7358e527510618cb1b803a88e986db1/werkzeug-3.1.3-py3-none-any.whl", hash = "sha256:54b78bf3716d19a65be4fceccc0d1d7b89e608834989dfae50ea87564639213e", size = 224498 }, +] + +[[package]] +name = "wrapt" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/24/a1/fc03dca9b0432725c2e8cdbf91a349d2194cf03d8523c124faebe581de09/wrapt-1.17.0.tar.gz", hash = "sha256:16187aa2317c731170a88ef35e8937ae0f533c402872c1ee5e6d079fcf320801", size = 55542 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0e/40/def56538acddc2f764c157d565b9f989072a1d2f2a8e384324e2e104fc7d/wrapt-1.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:74bf625b1b4caaa7bad51d9003f8b07a468a704e0644a700e936c357c17dd45a", size = 38766 }, + { url = "https://files.pythonhosted.org/packages/89/e2/8c299f384ae4364193724e2adad99f9504599d02a73ec9199bf3f406549d/wrapt-1.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f2a28eb35cf99d5f5bd12f5dd44a0f41d206db226535b37b0c60e9da162c3ed", size = 83730 }, + { url = "https://files.pythonhosted.org/packages/29/ef/fcdb776b12df5ea7180d065b28fa6bb27ac785dddcd7202a0b6962bbdb47/wrapt-1.17.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:81b1289e99cf4bad07c23393ab447e5e96db0ab50974a280f7954b071d41b489", size = 75470 }, + { url = "https://files.pythonhosted.org/packages/55/b5/698bd0bf9fbb3ddb3a2feefbb7ad0dea1205f5d7d05b9cbab54f5db731aa/wrapt-1.17.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f2939cd4a2a52ca32bc0b359015718472d7f6de870760342e7ba295be9ebaf9", size = 83168 }, + { url = "https://files.pythonhosted.org/packages/ce/07/701a5cee28cb4d5df030d4b2649319e36f3d9fdd8000ef1d84eb06b9860d/wrapt-1.17.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6a9653131bda68a1f029c52157fd81e11f07d485df55410401f745007bd6d339", size = 82307 }, + { url = "https://files.pythonhosted.org/packages/42/92/c48ba92cda6f74cb914dc3c5bba9650dc80b790e121c4b987f3a46b028f5/wrapt-1.17.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4e4b4385363de9052dac1a67bfb535c376f3d19c238b5f36bddc95efae15e12d", size = 75101 }, + { url = "https://files.pythonhosted.org/packages/8a/0a/9276d3269334138b88a2947efaaf6335f61d547698e50dff672ade24f2c6/wrapt-1.17.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bdf62d25234290db1837875d4dceb2151e4ea7f9fff2ed41c0fde23ed542eb5b", size = 81835 }, + { url = "https://files.pythonhosted.org/packages/b9/4c/39595e692753ef656ea94b51382cc9aea662fef59d7910128f5906486f0e/wrapt-1.17.0-cp311-cp311-win32.whl", hash = "sha256:5d8fd17635b262448ab8f99230fe4dac991af1dabdbb92f7a70a6afac8a7e346", size = 36412 }, + { url = "https://files.pythonhosted.org/packages/63/bb/c293a67fb765a2ada48f48cd0f2bb957da8161439da4c03ea123b9894c02/wrapt-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:92a3d214d5e53cb1db8b015f30d544bc9d3f7179a05feb8f16df713cecc2620a", size = 38744 }, + { url = "https://files.pythonhosted.org/packages/85/82/518605474beafff11f1a34759f6410ab429abff9f7881858a447e0d20712/wrapt-1.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:89fc28495896097622c3fc238915c79365dd0ede02f9a82ce436b13bd0ab7569", size = 38904 }, + { url = "https://files.pythonhosted.org/packages/80/6c/17c3b2fed28edfd96d8417c865ef0b4c955dc52c4e375d86f459f14340f1/wrapt-1.17.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:875d240fdbdbe9e11f9831901fb8719da0bd4e6131f83aa9f69b96d18fae7504", size = 88622 }, + { url = "https://files.pythonhosted.org/packages/4a/11/60ecdf3b0fd3dca18978d89acb5d095a05f23299216e925fcd2717c81d93/wrapt-1.17.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5ed16d95fd142e9c72b6c10b06514ad30e846a0d0917ab406186541fe68b451", size = 80920 }, + { url = "https://files.pythonhosted.org/packages/d2/50/dbef1a651578a3520d4534c1e434989e3620380c1ad97e309576b47f0ada/wrapt-1.17.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18b956061b8db634120b58f668592a772e87e2e78bc1f6a906cfcaa0cc7991c1", size = 89170 }, + { url = "https://files.pythonhosted.org/packages/44/a2/78c5956bf39955288c9e0dd62e807b308c3aa15a0f611fbff52aa8d6b5ea/wrapt-1.17.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:daba396199399ccabafbfc509037ac635a6bc18510ad1add8fd16d4739cdd106", size = 86748 }, + { url = "https://files.pythonhosted.org/packages/99/49/2ee413c78fc0bdfebe5bee590bf3becdc1fab0096a7a9c3b5c9666b2415f/wrapt-1.17.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4d63f4d446e10ad19ed01188d6c1e1bb134cde8c18b0aa2acfd973d41fcc5ada", size = 79734 }, + { url = "https://files.pythonhosted.org/packages/c0/8c/4221b7b270e36be90f0930fe15a4755a6ea24093f90b510166e9ed7861ea/wrapt-1.17.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8a5e7cc39a45fc430af1aefc4d77ee6bad72c5bcdb1322cfde852c15192b8bd4", size = 87552 }, + { url = "https://files.pythonhosted.org/packages/4c/6b/1aaccf3efe58eb95e10ce8e77c8909b7a6b0da93449a92c4e6d6d10b3a3d/wrapt-1.17.0-cp312-cp312-win32.whl", hash = "sha256:0a0a1a1ec28b641f2a3a2c35cbe86c00051c04fffcfcc577ffcdd707df3f8635", size = 36647 }, + { url = "https://files.pythonhosted.org/packages/b3/4f/243f88ac49df005b9129194c6511b3642818b3e6271ddea47a15e2ee4934/wrapt-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:3c34f6896a01b84bab196f7119770fd8466c8ae3dfa73c59c0bb281e7b588ce7", size = 38830 }, + { url = "https://files.pythonhosted.org/packages/67/9c/38294e1bb92b055222d1b8b6591604ca4468b77b1250f59c15256437644f/wrapt-1.17.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:714c12485aa52efbc0fc0ade1e9ab3a70343db82627f90f2ecbc898fdf0bb181", size = 38904 }, + { url = "https://files.pythonhosted.org/packages/78/b6/76597fb362cbf8913a481d41b14b049a8813cd402a5d2f84e57957c813ae/wrapt-1.17.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da427d311782324a376cacb47c1a4adc43f99fd9d996ffc1b3e8529c4074d393", size = 88608 }, + { url = "https://files.pythonhosted.org/packages/bc/69/b500884e45b3881926b5f69188dc542fb5880019d15c8a0df1ab1dfda1f7/wrapt-1.17.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba1739fb38441a27a676f4de4123d3e858e494fac05868b7a281c0a383c098f4", size = 80879 }, + { url = "https://files.pythonhosted.org/packages/52/31/f4cc58afe29eab8a50ac5969963010c8b60987e719c478a5024bce39bc42/wrapt-1.17.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e711fc1acc7468463bc084d1b68561e40d1eaa135d8c509a65dd534403d83d7b", size = 89119 }, + { url = "https://files.pythonhosted.org/packages/aa/9c/05ab6bf75dbae7a9d34975fb6ee577e086c1c26cde3b6cf6051726d33c7c/wrapt-1.17.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:140ea00c87fafc42739bd74a94a5a9003f8e72c27c47cd4f61d8e05e6dec8721", size = 86778 }, + { url = "https://files.pythonhosted.org/packages/0e/6c/4b8d42e3db355603d35fe5c9db79c28f2472a6fd1ccf4dc25ae46739672a/wrapt-1.17.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:73a96fd11d2b2e77d623a7f26e004cc31f131a365add1ce1ce9a19e55a1eef90", size = 79793 }, + { url = "https://files.pythonhosted.org/packages/69/23/90e3a2ee210c0843b2c2a49b3b97ffcf9cad1387cb18cbeef9218631ed5a/wrapt-1.17.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0b48554952f0f387984da81ccfa73b62e52817a4386d070c75e4db7d43a28c4a", size = 87606 }, + { url = "https://files.pythonhosted.org/packages/5f/06/3683126491ca787d8d71d8d340e775d40767c5efedb35039d987203393b7/wrapt-1.17.0-cp313-cp313-win32.whl", hash = "sha256:498fec8da10e3e62edd1e7368f4b24aa362ac0ad931e678332d1b209aec93045", size = 36651 }, + { url = "https://files.pythonhosted.org/packages/f1/bc/3bf6d2ca0d2c030d324ef9272bea0a8fdaff68f3d1fa7be7a61da88e51f7/wrapt-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:fd136bb85f4568fffca995bd3c8d52080b1e5b225dbf1c2b17b66b4c5fa02838", size = 38835 }, + { url = "https://files.pythonhosted.org/packages/ce/b5/251165c232d87197a81cd362eeb5104d661a2dd3aa1f0b33e4bf61dda8b8/wrapt-1.17.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:17fcf043d0b4724858f25b8826c36e08f9fb2e475410bece0ec44a22d533da9b", size = 40146 }, + { url = "https://files.pythonhosted.org/packages/89/33/1e1bdd3e866eeb73d8c4755db1ceb8a80d5bd51ee4648b3f2247adec4e67/wrapt-1.17.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4a557d97f12813dc5e18dad9fa765ae44ddd56a672bb5de4825527c847d6379", size = 113444 }, + { url = "https://files.pythonhosted.org/packages/9f/7c/94f53b065a43f5dc1fbdd8b80fd8f41284315b543805c956619c0b8d92f0/wrapt-1.17.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0229b247b0fc7dee0d36176cbb79dbaf2a9eb7ecc50ec3121f40ef443155fb1d", size = 101246 }, + { url = "https://files.pythonhosted.org/packages/62/5d/640360baac6ea6018ed5e34e6e80e33cfbae2aefde24f117587cd5efd4b7/wrapt-1.17.0-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8425cfce27b8b20c9b89d77fb50e368d8306a90bf2b6eef2cdf5cd5083adf83f", size = 109320 }, + { url = "https://files.pythonhosted.org/packages/e3/cf/6c7a00ae86a2e9482c91170aefe93f4ccda06c1ac86c4de637c69133da59/wrapt-1.17.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9c900108df470060174108012de06d45f514aa4ec21a191e7ab42988ff42a86c", size = 110193 }, + { url = "https://files.pythonhosted.org/packages/cd/cc/aa718df0d20287e8f953ce0e2f70c0af0fba1d3c367db7ee8bdc46ea7003/wrapt-1.17.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:4e547b447073fc0dbfcbff15154c1be8823d10dab4ad401bdb1575e3fdedff1b", size = 100460 }, + { url = "https://files.pythonhosted.org/packages/f7/16/9f3ac99fe1f6caaa789d67b4e3c562898b532c250769f5255fa8b8b93983/wrapt-1.17.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:914f66f3b6fc7b915d46c1cc424bc2441841083de01b90f9e81109c9759e43ab", size = 106347 }, + { url = "https://files.pythonhosted.org/packages/64/85/c77a331b2c06af49a687f8b926fc2d111047a51e6f0b0a4baa01ff3a673a/wrapt-1.17.0-cp313-cp313t-win32.whl", hash = "sha256:a4192b45dff127c7d69b3bdfb4d3e47b64179a0b9900b6351859f3001397dabf", size = 37971 }, + { url = "https://files.pythonhosted.org/packages/05/9b/b2469f8be9efed24283fd7b9eeb8e913e9bc0715cf919ea8645e428ab7af/wrapt-1.17.0-cp313-cp313t-win_amd64.whl", hash = "sha256:4f643df3d4419ea3f856c5c3f40fec1d65ea2e89ec812c83f7767c8730f9827a", size = 40755 }, + { url = "https://files.pythonhosted.org/packages/4b/d9/a8ba5e9507a9af1917285d118388c5eb7a81834873f45df213a6fe923774/wrapt-1.17.0-py3-none-any.whl", hash = "sha256:d2c63b93548eda58abf5188e505ffed0229bf675f7c3090f8e36ad55b8cbc371", size = 23592 }, +] + +[[package]] +name = "xmltodict" +version = "0.14.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/50/05/51dcca9a9bf5e1bce52582683ce50980bcadbc4fa5143b9f2b19ab99958f/xmltodict-0.14.2.tar.gz", hash = "sha256:201e7c28bb210e374999d1dde6382923ab0ed1a8a5faeece48ab525b7810a553", size = 51942 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d6/45/fc303eb433e8a2a271739c98e953728422fa61a3c1f36077a49e395c972e/xmltodict-0.14.2-py2.py3-none-any.whl", hash = "sha256:20cc7d723ed729276e808f26fb6b3599f786cbc37e06c65e192ba77c40f20aac", size = 9981 }, +] + +[[package]] +name = "yarl" +version = "1.18.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "idna" }, + { name = "multidict" }, + { name = "propcache" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b7/9d/4b94a8e6d2b51b599516a5cb88e5bc99b4d8d4583e468057eaa29d5f0918/yarl-1.18.3.tar.gz", hash = "sha256:ac1801c45cbf77b6c99242eeff4fffb5e4e73a800b5c4ad4fc0be5def634d2e1", size = 181062 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/93/282b5f4898d8e8efaf0790ba6d10e2245d2c9f30e199d1a85cae9356098c/yarl-1.18.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8503ad47387b8ebd39cbbbdf0bf113e17330ffd339ba1144074da24c545f0069", size = 141555 }, + { url = "https://files.pythonhosted.org/packages/6d/9c/0a49af78df099c283ca3444560f10718fadb8a18dc8b3edf8c7bd9fd7d89/yarl-1.18.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:02ddb6756f8f4517a2d5e99d8b2f272488e18dd0bfbc802f31c16c6c20f22193", size = 94351 }, + { url = "https://files.pythonhosted.org/packages/5a/a1/205ab51e148fdcedad189ca8dd587794c6f119882437d04c33c01a75dece/yarl-1.18.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:67a283dd2882ac98cc6318384f565bffc751ab564605959df4752d42483ad889", size = 92286 }, + { url = "https://files.pythonhosted.org/packages/ed/fe/88b690b30f3f59275fb674f5f93ddd4a3ae796c2b62e5bb9ece8a4914b83/yarl-1.18.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d980e0325b6eddc81331d3f4551e2a333999fb176fd153e075c6d1c2530aa8a8", size = 340649 }, + { url = "https://files.pythonhosted.org/packages/07/eb/3b65499b568e01f36e847cebdc8d7ccb51fff716dbda1ae83c3cbb8ca1c9/yarl-1.18.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b643562c12680b01e17239be267bc306bbc6aac1f34f6444d1bded0c5ce438ca", size = 356623 }, + { url = "https://files.pythonhosted.org/packages/33/46/f559dc184280b745fc76ec6b1954de2c55595f0ec0a7614238b9ebf69618/yarl-1.18.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c017a3b6df3a1bd45b9fa49a0f54005e53fbcad16633870104b66fa1a30a29d8", size = 354007 }, + { url = "https://files.pythonhosted.org/packages/af/ba/1865d85212351ad160f19fb99808acf23aab9a0f8ff31c8c9f1b4d671fc9/yarl-1.18.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75674776d96d7b851b6498f17824ba17849d790a44d282929c42dbb77d4f17ae", size = 344145 }, + { url = "https://files.pythonhosted.org/packages/94/cb/5c3e975d77755d7b3d5193e92056b19d83752ea2da7ab394e22260a7b824/yarl-1.18.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ccaa3a4b521b780a7e771cc336a2dba389a0861592bbce09a476190bb0c8b4b3", size = 336133 }, + { url = "https://files.pythonhosted.org/packages/19/89/b77d3fd249ab52a5c40859815765d35c91425b6bb82e7427ab2f78f5ff55/yarl-1.18.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2d06d3005e668744e11ed80812e61efd77d70bb7f03e33c1598c301eea20efbb", size = 347967 }, + { url = "https://files.pythonhosted.org/packages/35/bd/f6b7630ba2cc06c319c3235634c582a6ab014d52311e7d7c22f9518189b5/yarl-1.18.3-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:9d41beda9dc97ca9ab0b9888cb71f7539124bc05df02c0cff6e5acc5a19dcc6e", size = 346397 }, + { url = "https://files.pythonhosted.org/packages/18/1a/0b4e367d5a72d1f095318344848e93ea70da728118221f84f1bf6c1e39e7/yarl-1.18.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ba23302c0c61a9999784e73809427c9dbedd79f66a13d84ad1b1943802eaaf59", size = 350206 }, + { url = "https://files.pythonhosted.org/packages/b5/cf/320fff4367341fb77809a2d8d7fe75b5d323a8e1b35710aafe41fdbf327b/yarl-1.18.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:6748dbf9bfa5ba1afcc7556b71cda0d7ce5f24768043a02a58846e4a443d808d", size = 362089 }, + { url = "https://files.pythonhosted.org/packages/57/cf/aadba261d8b920253204085268bad5e8cdd86b50162fcb1b10c10834885a/yarl-1.18.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0b0cad37311123211dc91eadcb322ef4d4a66008d3e1bdc404808992260e1a0e", size = 366267 }, + { url = "https://files.pythonhosted.org/packages/54/58/fb4cadd81acdee6dafe14abeb258f876e4dd410518099ae9a35c88d8097c/yarl-1.18.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0fb2171a4486bb075316ee754c6d8382ea6eb8b399d4ec62fde2b591f879778a", size = 359141 }, + { url = "https://files.pythonhosted.org/packages/9a/7a/4c571597589da4cd5c14ed2a0b17ac56ec9ee7ee615013f74653169e702d/yarl-1.18.3-cp311-cp311-win32.whl", hash = "sha256:61b1a825a13bef4a5f10b1885245377d3cd0bf87cba068e1d9a88c2ae36880e1", size = 84402 }, + { url = "https://files.pythonhosted.org/packages/ae/7b/8600250b3d89b625f1121d897062f629883c2f45339623b69b1747ec65fa/yarl-1.18.3-cp311-cp311-win_amd64.whl", hash = "sha256:b9d60031cf568c627d028239693fd718025719c02c9f55df0a53e587aab951b5", size = 91030 }, + { url = "https://files.pythonhosted.org/packages/33/85/bd2e2729752ff4c77338e0102914897512e92496375e079ce0150a6dc306/yarl-1.18.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:1dd4bdd05407ced96fed3d7f25dbbf88d2ffb045a0db60dbc247f5b3c5c25d50", size = 142644 }, + { url = "https://files.pythonhosted.org/packages/ff/74/1178322cc0f10288d7eefa6e4a85d8d2e28187ccab13d5b844e8b5d7c88d/yarl-1.18.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7c33dd1931a95e5d9a772d0ac5e44cac8957eaf58e3c8da8c1414de7dd27c576", size = 94962 }, + { url = "https://files.pythonhosted.org/packages/be/75/79c6acc0261e2c2ae8a1c41cf12265e91628c8c58ae91f5ff59e29c0787f/yarl-1.18.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:25b411eddcfd56a2f0cd6a384e9f4f7aa3efee14b188de13048c25b5e91f1640", size = 92795 }, + { url = "https://files.pythonhosted.org/packages/6b/32/927b2d67a412c31199e83fefdce6e645247b4fb164aa1ecb35a0f9eb2058/yarl-1.18.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:436c4fc0a4d66b2badc6c5fc5ef4e47bb10e4fd9bf0c79524ac719a01f3607c2", size = 332368 }, + { url = "https://files.pythonhosted.org/packages/19/e5/859fca07169d6eceeaa4fde1997c91d8abde4e9a7c018e371640c2da2b71/yarl-1.18.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e35ef8683211db69ffe129a25d5634319a677570ab6b2eba4afa860f54eeaf75", size = 342314 }, + { url = "https://files.pythonhosted.org/packages/08/75/76b63ccd91c9e03ab213ef27ae6add2e3400e77e5cdddf8ed2dbc36e3f21/yarl-1.18.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:84b2deecba4a3f1a398df819151eb72d29bfeb3b69abb145a00ddc8d30094512", size = 341987 }, + { url = "https://files.pythonhosted.org/packages/1a/e1/a097d5755d3ea8479a42856f51d97eeff7a3a7160593332d98f2709b3580/yarl-1.18.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00e5a1fea0fd4f5bfa7440a47eff01d9822a65b4488f7cff83155a0f31a2ecba", size = 336914 }, + { url = "https://files.pythonhosted.org/packages/0b/42/e1b4d0e396b7987feceebe565286c27bc085bf07d61a59508cdaf2d45e63/yarl-1.18.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d0e883008013c0e4aef84dcfe2a0b172c4d23c2669412cf5b3371003941f72bb", size = 325765 }, + { url = "https://files.pythonhosted.org/packages/7e/18/03a5834ccc9177f97ca1bbb245b93c13e58e8225276f01eedc4cc98ab820/yarl-1.18.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5a3f356548e34a70b0172d8890006c37be92995f62d95a07b4a42e90fba54272", size = 344444 }, + { url = "https://files.pythonhosted.org/packages/c8/03/a713633bdde0640b0472aa197b5b86e90fbc4c5bc05b727b714cd8a40e6d/yarl-1.18.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:ccd17349166b1bee6e529b4add61727d3f55edb7babbe4069b5764c9587a8cc6", size = 340760 }, + { url = "https://files.pythonhosted.org/packages/eb/99/f6567e3f3bbad8fd101886ea0276c68ecb86a2b58be0f64077396cd4b95e/yarl-1.18.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b958ddd075ddba5b09bb0be8a6d9906d2ce933aee81100db289badbeb966f54e", size = 346484 }, + { url = "https://files.pythonhosted.org/packages/8e/a9/84717c896b2fc6cb15bd4eecd64e34a2f0a9fd6669e69170c73a8b46795a/yarl-1.18.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c7d79f7d9aabd6011004e33b22bc13056a3e3fb54794d138af57f5ee9d9032cb", size = 359864 }, + { url = "https://files.pythonhosted.org/packages/1e/2e/d0f5f1bef7ee93ed17e739ec8dbcb47794af891f7d165fa6014517b48169/yarl-1.18.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:4891ed92157e5430874dad17b15eb1fda57627710756c27422200c52d8a4e393", size = 364537 }, + { url = "https://files.pythonhosted.org/packages/97/8a/568d07c5d4964da5b02621a517532adb8ec5ba181ad1687191fffeda0ab6/yarl-1.18.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ce1af883b94304f493698b00d0f006d56aea98aeb49d75ec7d98cd4a777e9285", size = 357861 }, + { url = "https://files.pythonhosted.org/packages/7d/e3/924c3f64b6b3077889df9a1ece1ed8947e7b61b0a933f2ec93041990a677/yarl-1.18.3-cp312-cp312-win32.whl", hash = "sha256:f91c4803173928a25e1a55b943c81f55b8872f0018be83e3ad4938adffb77dd2", size = 84097 }, + { url = "https://files.pythonhosted.org/packages/34/45/0e055320daaabfc169b21ff6174567b2c910c45617b0d79c68d7ab349b02/yarl-1.18.3-cp312-cp312-win_amd64.whl", hash = "sha256:7e2ee16578af3b52ac2f334c3b1f92262f47e02cc6193c598502bd46f5cd1477", size = 90399 }, + { url = "https://files.pythonhosted.org/packages/30/c7/c790513d5328a8390be8f47be5d52e141f78b66c6c48f48d241ca6bd5265/yarl-1.18.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:90adb47ad432332d4f0bc28f83a5963f426ce9a1a8809f5e584e704b82685dcb", size = 140789 }, + { url = "https://files.pythonhosted.org/packages/30/aa/a2f84e93554a578463e2edaaf2300faa61c8701f0898725842c704ba5444/yarl-1.18.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:913829534200eb0f789d45349e55203a091f45c37a2674678744ae52fae23efa", size = 94144 }, + { url = "https://files.pythonhosted.org/packages/c6/fc/d68d8f83714b221a85ce7866832cba36d7c04a68fa6a960b908c2c84f325/yarl-1.18.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ef9f7768395923c3039055c14334ba4d926f3baf7b776c923c93d80195624782", size = 91974 }, + { url = "https://files.pythonhosted.org/packages/56/4e/d2563d8323a7e9a414b5b25341b3942af5902a2263d36d20fb17c40411e2/yarl-1.18.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88a19f62ff30117e706ebc9090b8ecc79aeb77d0b1f5ec10d2d27a12bc9f66d0", size = 333587 }, + { url = "https://files.pythonhosted.org/packages/25/c9/cfec0bc0cac8d054be223e9f2c7909d3e8442a856af9dbce7e3442a8ec8d/yarl-1.18.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e17c9361d46a4d5addf777c6dd5eab0715a7684c2f11b88c67ac37edfba6c482", size = 344386 }, + { url = "https://files.pythonhosted.org/packages/ab/5d/4c532190113b25f1364d25f4c319322e86232d69175b91f27e3ebc2caf9a/yarl-1.18.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a74a13a4c857a84a845505fd2d68e54826a2cd01935a96efb1e9d86c728e186", size = 345421 }, + { url = "https://files.pythonhosted.org/packages/23/d1/6cdd1632da013aa6ba18cee4d750d953104a5e7aac44e249d9410a972bf5/yarl-1.18.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41f7ce59d6ee7741af71d82020346af364949314ed3d87553763a2df1829cc58", size = 339384 }, + { url = "https://files.pythonhosted.org/packages/9a/c4/6b3c39bec352e441bd30f432cda6ba51681ab19bb8abe023f0d19777aad1/yarl-1.18.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f52a265001d830bc425f82ca9eabda94a64a4d753b07d623a9f2863fde532b53", size = 326689 }, + { url = "https://files.pythonhosted.org/packages/23/30/07fb088f2eefdc0aa4fc1af4e3ca4eb1a3aadd1ce7d866d74c0f124e6a85/yarl-1.18.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:82123d0c954dc58db301f5021a01854a85bf1f3bb7d12ae0c01afc414a882ca2", size = 345453 }, + { url = "https://files.pythonhosted.org/packages/63/09/d54befb48f9cd8eec43797f624ec37783a0266855f4930a91e3d5c7717f8/yarl-1.18.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:2ec9bbba33b2d00999af4631a3397d1fd78290c48e2a3e52d8dd72db3a067ac8", size = 341872 }, + { url = "https://files.pythonhosted.org/packages/91/26/fd0ef9bf29dd906a84b59f0cd1281e65b0c3e08c6aa94b57f7d11f593518/yarl-1.18.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:fbd6748e8ab9b41171bb95c6142faf068f5ef1511935a0aa07025438dd9a9bc1", size = 347497 }, + { url = "https://files.pythonhosted.org/packages/d9/b5/14ac7a256d0511b2ac168d50d4b7d744aea1c1aa20c79f620d1059aab8b2/yarl-1.18.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:877d209b6aebeb5b16c42cbb377f5f94d9e556626b1bfff66d7b0d115be88d0a", size = 359981 }, + { url = "https://files.pythonhosted.org/packages/ca/b3/d493221ad5cbd18bc07e642894030437e405e1413c4236dd5db6e46bcec9/yarl-1.18.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:b464c4ab4bfcb41e3bfd3f1c26600d038376c2de3297760dfe064d2cb7ea8e10", size = 366229 }, + { url = "https://files.pythonhosted.org/packages/04/56/6a3e2a5d9152c56c346df9b8fb8edd2c8888b1e03f96324d457e5cf06d34/yarl-1.18.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8d39d351e7faf01483cc7ff7c0213c412e38e5a340238826be7e0e4da450fdc8", size = 360383 }, + { url = "https://files.pythonhosted.org/packages/fd/b7/4b3c7c7913a278d445cc6284e59b2e62fa25e72758f888b7a7a39eb8423f/yarl-1.18.3-cp313-cp313-win32.whl", hash = "sha256:61ee62ead9b68b9123ec24bc866cbef297dd266175d53296e2db5e7f797f902d", size = 310152 }, + { url = "https://files.pythonhosted.org/packages/f5/d5/688db678e987c3e0fb17867970700b92603cadf36c56e5fb08f23e822a0c/yarl-1.18.3-cp313-cp313-win_amd64.whl", hash = "sha256:578e281c393af575879990861823ef19d66e2b1d0098414855dd367e234f5b3c", size = 315723 }, + { url = "https://files.pythonhosted.org/packages/f5/4b/a06e0ec3d155924f77835ed2d167ebd3b211a7b0853da1cf8d8414d784ef/yarl-1.18.3-py3-none-any.whl", hash = "sha256:b57f4f58099328dfb26c6a771d09fb20dbbae81d20cfb66141251ea063bd101b", size = 45109 }, +] + +[[package]] +name = "zarr" +version = "2.18.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asciitree" }, + { name = "fasteners", marker = "sys_platform != 'emscripten'" }, + { name = "numcodecs" }, + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/21/d1/764ca5b66d91b20dede66aedc6eb9ede3adbe5c61779e7378a7ecb010e87/zarr-2.18.4.tar.gz", hash = "sha256:37790ededd0683ae1abe6ff90aa16c22543b3436810060f53d72c15e910c24bb", size = 3603684 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b4/d1/c84022a44afc7b7ccc442fba3daee56bdd03593d91ee4bc245a08e4fcc55/zarr-2.18.4-py3-none-any.whl", hash = "sha256:2795e20aff91093ce7e4da36ab1a138aededbd8ab66bf01fd01512e61d31e5d1", size = 210600 }, +] + +[[package]] +name = "zict" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d1/ac/3c494dd7ec5122cff8252c1a209b282c0867af029f805ae9befd73ae37eb/zict-3.0.0.tar.gz", hash = "sha256:e321e263b6a97aafc0790c3cfb3c04656b7066e6738c37fffcca95d803c9fba5", size = 33238 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/80/ab/11a76c1e2126084fde2639514f24e6111b789b0bfa4fc6264a8975c7e1f1/zict-3.0.0-py2.py3-none-any.whl", hash = "sha256:5796e36bd0e0cc8cf0fbc1ace6a68912611c1dbd74750a3f3026b9b9d6a327ae", size = 43332 }, +] + +[[package]] +name = "zipp" +version = "3.21.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3f/50/bad581df71744867e9468ebd0bcd6505de3b275e06f202c2cb016e3ff56f/zipp-3.21.0.tar.gz", hash = "sha256:2c9958f6430a2040341a52eb608ed6dd93ef4392e02ffe219417c1b28b5dd1f4", size = 24545 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/1a/7e4798e9339adc931158c9d69ecc34f5e6791489d469f5e50ec15e35f458/zipp-3.21.0-py3-none-any.whl", hash = "sha256:ac1bbe05fd2991f160ebce24ffbac5f6d11d83dc90891255885223d42b3cd931", size = 9630 }, +] + +[[package]] +name = "zope-event" +version = "5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "setuptools" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/46/c2/427f1867bb96555d1d34342f1dd97f8c420966ab564d58d18469a1db8736/zope.event-5.0.tar.gz", hash = "sha256:bac440d8d9891b4068e2b5a2c5e2c9765a9df762944bda6955f96bb9b91e67cd", size = 17350 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/42/f8dbc2b9ad59e927940325a22d6d3931d630c3644dae7e2369ef5d9ba230/zope.event-5.0-py3-none-any.whl", hash = "sha256:2832e95014f4db26c47a13fdaef84cef2f4df37e66b59d8f1f4a8f319a632c26", size = 6824 }, +] + +[[package]] +name = "zope-interface" +version = "7.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "setuptools" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/30/93/9210e7606be57a2dfc6277ac97dcc864fd8d39f142ca194fdc186d596fda/zope.interface-7.2.tar.gz", hash = "sha256:8b49f1a3d1ee4cdaf5b32d2e738362c7f5e40ac8b46dd7d1a65e82a4872728fe", size = 252960 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/98/7d/2e8daf0abea7798d16a58f2f3a2bf7588872eee54ac119f99393fdd47b65/zope.interface-7.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1909f52a00c8c3dcab6c4fad5d13de2285a4b3c7be063b239b8dc15ddfb73bd2", size = 208776 }, + { url = "https://files.pythonhosted.org/packages/a0/2a/0c03c7170fe61d0d371e4c7ea5b62b8cb79b095b3d630ca16719bf8b7b18/zope.interface-7.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:80ecf2451596f19fd607bb09953f426588fc1e79e93f5968ecf3367550396b22", size = 209296 }, + { url = "https://files.pythonhosted.org/packages/49/b4/451f19448772b4a1159519033a5f72672221e623b0a1bd2b896b653943d8/zope.interface-7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:033b3923b63474800b04cba480b70f6e6243a62208071fc148354f3f89cc01b7", size = 260997 }, + { url = "https://files.pythonhosted.org/packages/65/94/5aa4461c10718062c8f8711161faf3249d6d3679c24a0b81dd6fc8ba1dd3/zope.interface-7.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a102424e28c6b47c67923a1f337ede4a4c2bba3965b01cf707978a801fc7442c", size = 255038 }, + { url = "https://files.pythonhosted.org/packages/9f/aa/1a28c02815fe1ca282b54f6705b9ddba20328fabdc37b8cf73fc06b172f0/zope.interface-7.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:25e6a61dcb184453bb00eafa733169ab6d903e46f5c2ace4ad275386f9ab327a", size = 259806 }, + { url = "https://files.pythonhosted.org/packages/a7/2c/82028f121d27c7e68632347fe04f4a6e0466e77bb36e104c8b074f3d7d7b/zope.interface-7.2-cp311-cp311-win_amd64.whl", hash = "sha256:3f6771d1647b1fc543d37640b45c06b34832a943c80d1db214a37c31161a93f1", size = 212305 }, + { url = "https://files.pythonhosted.org/packages/68/0b/c7516bc3bad144c2496f355e35bd699443b82e9437aa02d9867653203b4a/zope.interface-7.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:086ee2f51eaef1e4a52bd7d3111a0404081dadae87f84c0ad4ce2649d4f708b7", size = 208959 }, + { url = "https://files.pythonhosted.org/packages/a2/e9/1463036df1f78ff8c45a02642a7bf6931ae4a38a4acd6a8e07c128e387a7/zope.interface-7.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:21328fcc9d5b80768bf051faa35ab98fb979080c18e6f84ab3f27ce703bce465", size = 209357 }, + { url = "https://files.pythonhosted.org/packages/07/a8/106ca4c2add440728e382f1b16c7d886563602487bdd90004788d45eb310/zope.interface-7.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6dd02ec01f4468da0f234da9d9c8545c5412fef80bc590cc51d8dd084138a89", size = 264235 }, + { url = "https://files.pythonhosted.org/packages/fc/ca/57286866285f4b8a4634c12ca1957c24bdac06eae28fd4a3a578e30cf906/zope.interface-7.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8e7da17f53e25d1a3bde5da4601e026adc9e8071f9f6f936d0fe3fe84ace6d54", size = 259253 }, + { url = "https://files.pythonhosted.org/packages/96/08/2103587ebc989b455cf05e858e7fbdfeedfc3373358320e9c513428290b1/zope.interface-7.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cab15ff4832580aa440dc9790b8a6128abd0b88b7ee4dd56abacbc52f212209d", size = 264702 }, + { url = "https://files.pythonhosted.org/packages/5f/c7/3c67562e03b3752ba4ab6b23355f15a58ac2d023a6ef763caaca430f91f2/zope.interface-7.2-cp312-cp312-win_amd64.whl", hash = "sha256:29caad142a2355ce7cfea48725aa8bcf0067e2b5cc63fcf5cd9f97ad12d6afb5", size = 212466 }, + { url = "https://files.pythonhosted.org/packages/c6/3b/e309d731712c1a1866d61b5356a069dd44e5b01e394b6cb49848fa2efbff/zope.interface-7.2-cp313-cp313-macosx_10_9_x86_64.whl", hash = "sha256:3e0350b51e88658d5ad126c6a57502b19d5f559f6cb0a628e3dc90442b53dd98", size = 208961 }, + { url = "https://files.pythonhosted.org/packages/49/65/78e7cebca6be07c8fc4032bfbb123e500d60efdf7b86727bb8a071992108/zope.interface-7.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:15398c000c094b8855d7d74f4fdc9e73aa02d4d0d5c775acdef98cdb1119768d", size = 209356 }, + { url = "https://files.pythonhosted.org/packages/11/b1/627384b745310d082d29e3695db5f5a9188186676912c14b61a78bbc6afe/zope.interface-7.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:802176a9f99bd8cc276dcd3b8512808716492f6f557c11196d42e26c01a69a4c", size = 264196 }, + { url = "https://files.pythonhosted.org/packages/b8/f6/54548df6dc73e30ac6c8a7ff1da73ac9007ba38f866397091d5a82237bd3/zope.interface-7.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb23f58a446a7f09db85eda09521a498e109f137b85fb278edb2e34841055398", size = 259237 }, + { url = "https://files.pythonhosted.org/packages/b6/66/ac05b741c2129fdf668b85631d2268421c5cd1a9ff99be1674371139d665/zope.interface-7.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a71a5b541078d0ebe373a81a3b7e71432c61d12e660f1d67896ca62d9628045b", size = 264696 }, + { url = "https://files.pythonhosted.org/packages/0a/2f/1bccc6f4cc882662162a1158cda1a7f616add2ffe322b28c99cb031b4ffc/zope.interface-7.2-cp313-cp313-win_amd64.whl", hash = "sha256:4893395d5dd2ba655c38ceb13014fd65667740f09fa5bb01caa1e6284e48c0cd", size = 212472 }, +] + +[[package]] +name = "zstandard" +version = "0.23.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "platform_python_implementation == 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ed/f6/2ac0287b442160a89d726b17a9184a4c615bb5237db763791a7fd16d9df1/zstandard-0.23.0.tar.gz", hash = "sha256:b2d8c62d08e7255f68f7a740bae85b3c9b8e5466baa9cbf7f57f1cde0ac6bc09", size = 681701 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/40/f67e7d2c25a0e2dc1744dd781110b0b60306657f8696cafb7ad7579469bd/zstandard-0.23.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:34895a41273ad33347b2fc70e1bff4240556de3c46c6ea430a7ed91f9042aa4e", size = 788699 }, + { url = "https://files.pythonhosted.org/packages/e8/46/66d5b55f4d737dd6ab75851b224abf0afe5774976fe511a54d2eb9063a41/zstandard-0.23.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:77ea385f7dd5b5676d7fd943292ffa18fbf5c72ba98f7d09fc1fb9e819b34c23", size = 633681 }, + { url = "https://files.pythonhosted.org/packages/63/b6/677e65c095d8e12b66b8f862b069bcf1f1d781b9c9c6f12eb55000d57583/zstandard-0.23.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:983b6efd649723474f29ed42e1467f90a35a74793437d0bc64a5bf482bedfa0a", size = 4944328 }, + { url = "https://files.pythonhosted.org/packages/59/cc/e76acb4c42afa05a9d20827116d1f9287e9c32b7ad58cc3af0721ce2b481/zstandard-0.23.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80a539906390591dd39ebb8d773771dc4db82ace6372c4d41e2d293f8e32b8db", size = 5311955 }, + { url = "https://files.pythonhosted.org/packages/78/e4/644b8075f18fc7f632130c32e8f36f6dc1b93065bf2dd87f03223b187f26/zstandard-0.23.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:445e4cb5048b04e90ce96a79b4b63140e3f4ab5f662321975679b5f6360b90e2", size = 5344944 }, + { url = "https://files.pythonhosted.org/packages/76/3f/dbafccf19cfeca25bbabf6f2dd81796b7218f768ec400f043edc767015a6/zstandard-0.23.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd30d9c67d13d891f2360b2a120186729c111238ac63b43dbd37a5a40670b8ca", size = 5442927 }, + { url = "https://files.pythonhosted.org/packages/0c/c3/d24a01a19b6733b9f218e94d1a87c477d523237e07f94899e1c10f6fd06c/zstandard-0.23.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d20fd853fbb5807c8e84c136c278827b6167ded66c72ec6f9a14b863d809211c", size = 4864910 }, + { url = "https://files.pythonhosted.org/packages/1c/a9/cf8f78ead4597264f7618d0875be01f9bc23c9d1d11afb6d225b867cb423/zstandard-0.23.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ed1708dbf4d2e3a1c5c69110ba2b4eb6678262028afd6c6fbcc5a8dac9cda68e", size = 4935544 }, + { url = "https://files.pythonhosted.org/packages/2c/96/8af1e3731b67965fb995a940c04a2c20997a7b3b14826b9d1301cf160879/zstandard-0.23.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:be9b5b8659dff1f913039c2feee1aca499cfbc19e98fa12bc85e037c17ec6ca5", size = 5467094 }, + { url = "https://files.pythonhosted.org/packages/ff/57/43ea9df642c636cb79f88a13ab07d92d88d3bfe3e550b55a25a07a26d878/zstandard-0.23.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:65308f4b4890aa12d9b6ad9f2844b7ee42c7f7a4fd3390425b242ffc57498f48", size = 4860440 }, + { url = "https://files.pythonhosted.org/packages/46/37/edb78f33c7f44f806525f27baa300341918fd4c4af9472fbc2c3094be2e8/zstandard-0.23.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:98da17ce9cbf3bfe4617e836d561e433f871129e3a7ac16d6ef4c680f13a839c", size = 4700091 }, + { url = "https://files.pythonhosted.org/packages/c1/f1/454ac3962671a754f3cb49242472df5c2cced4eb959ae203a377b45b1a3c/zstandard-0.23.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:8ed7d27cb56b3e058d3cf684d7200703bcae623e1dcc06ed1e18ecda39fee003", size = 5208682 }, + { url = "https://files.pythonhosted.org/packages/85/b2/1734b0fff1634390b1b887202d557d2dd542de84a4c155c258cf75da4773/zstandard-0.23.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:b69bb4f51daf461b15e7b3db033160937d3ff88303a7bc808c67bbc1eaf98c78", size = 5669707 }, + { url = "https://files.pythonhosted.org/packages/52/5a/87d6971f0997c4b9b09c495bf92189fb63de86a83cadc4977dc19735f652/zstandard-0.23.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:034b88913ecc1b097f528e42b539453fa82c3557e414b3de9d5632c80439a473", size = 5201792 }, + { url = "https://files.pythonhosted.org/packages/79/02/6f6a42cc84459d399bd1a4e1adfc78d4dfe45e56d05b072008d10040e13b/zstandard-0.23.0-cp311-cp311-win32.whl", hash = "sha256:f2d4380bf5f62daabd7b751ea2339c1a21d1c9463f1feb7fc2bdcea2c29c3160", size = 430586 }, + { url = "https://files.pythonhosted.org/packages/be/a2/4272175d47c623ff78196f3c10e9dc7045c1b9caf3735bf041e65271eca4/zstandard-0.23.0-cp311-cp311-win_amd64.whl", hash = "sha256:62136da96a973bd2557f06ddd4e8e807f9e13cbb0bfb9cc06cfe6d98ea90dfe0", size = 495420 }, + { url = "https://files.pythonhosted.org/packages/7b/83/f23338c963bd9de687d47bf32efe9fd30164e722ba27fb59df33e6b1719b/zstandard-0.23.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b4567955a6bc1b20e9c31612e615af6b53733491aeaa19a6b3b37f3b65477094", size = 788713 }, + { url = "https://files.pythonhosted.org/packages/5b/b3/1a028f6750fd9227ee0b937a278a434ab7f7fdc3066c3173f64366fe2466/zstandard-0.23.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e172f57cd78c20f13a3415cc8dfe24bf388614324d25539146594c16d78fcc8", size = 633459 }, + { url = "https://files.pythonhosted.org/packages/26/af/36d89aae0c1f95a0a98e50711bc5d92c144939efc1f81a2fcd3e78d7f4c1/zstandard-0.23.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b0e166f698c5a3e914947388c162be2583e0c638a4703fc6a543e23a88dea3c1", size = 4945707 }, + { url = "https://files.pythonhosted.org/packages/cd/2e/2051f5c772f4dfc0aae3741d5fc72c3dcfe3aaeb461cc231668a4db1ce14/zstandard-0.23.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:12a289832e520c6bd4dcaad68e944b86da3bad0d339ef7989fb7e88f92e96072", size = 5306545 }, + { url = "https://files.pythonhosted.org/packages/0a/9e/a11c97b087f89cab030fa71206963090d2fecd8eb83e67bb8f3ffb84c024/zstandard-0.23.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d50d31bfedd53a928fed6707b15a8dbeef011bb6366297cc435accc888b27c20", size = 5337533 }, + { url = "https://files.pythonhosted.org/packages/fc/79/edeb217c57fe1bf16d890aa91a1c2c96b28c07b46afed54a5dcf310c3f6f/zstandard-0.23.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72c68dda124a1a138340fb62fa21b9bf4848437d9ca60bd35db36f2d3345f373", size = 5436510 }, + { url = "https://files.pythonhosted.org/packages/81/4f/c21383d97cb7a422ddf1ae824b53ce4b51063d0eeb2afa757eb40804a8ef/zstandard-0.23.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:53dd9d5e3d29f95acd5de6802e909ada8d8d8cfa37a3ac64836f3bc4bc5512db", size = 4859973 }, + { url = "https://files.pythonhosted.org/packages/ab/15/08d22e87753304405ccac8be2493a495f529edd81d39a0870621462276ef/zstandard-0.23.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:6a41c120c3dbc0d81a8e8adc73312d668cd34acd7725f036992b1b72d22c1772", size = 4936968 }, + { url = "https://files.pythonhosted.org/packages/eb/fa/f3670a597949fe7dcf38119a39f7da49a8a84a6f0b1a2e46b2f71a0ab83f/zstandard-0.23.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:40b33d93c6eddf02d2c19f5773196068d875c41ca25730e8288e9b672897c105", size = 5467179 }, + { url = "https://files.pythonhosted.org/packages/4e/a9/dad2ab22020211e380adc477a1dbf9f109b1f8d94c614944843e20dc2a99/zstandard-0.23.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9206649ec587e6b02bd124fb7799b86cddec350f6f6c14bc82a2b70183e708ba", size = 4848577 }, + { url = "https://files.pythonhosted.org/packages/08/03/dd28b4484b0770f1e23478413e01bee476ae8227bbc81561f9c329e12564/zstandard-0.23.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:76e79bc28a65f467e0409098fa2c4376931fd3207fbeb6b956c7c476d53746dd", size = 4693899 }, + { url = "https://files.pythonhosted.org/packages/2b/64/3da7497eb635d025841e958bcd66a86117ae320c3b14b0ae86e9e8627518/zstandard-0.23.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:66b689c107857eceabf2cf3d3fc699c3c0fe8ccd18df2219d978c0283e4c508a", size = 5199964 }, + { url = "https://files.pythonhosted.org/packages/43/a4/d82decbab158a0e8a6ebb7fc98bc4d903266bce85b6e9aaedea1d288338c/zstandard-0.23.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9c236e635582742fee16603042553d276cca506e824fa2e6489db04039521e90", size = 5655398 }, + { url = "https://files.pythonhosted.org/packages/f2/61/ac78a1263bc83a5cf29e7458b77a568eda5a8f81980691bbc6eb6a0d45cc/zstandard-0.23.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a8fffdbd9d1408006baaf02f1068d7dd1f016c6bcb7538682622c556e7b68e35", size = 5191313 }, + { url = "https://files.pythonhosted.org/packages/e7/54/967c478314e16af5baf849b6ee9d6ea724ae5b100eb506011f045d3d4e16/zstandard-0.23.0-cp312-cp312-win32.whl", hash = "sha256:dc1d33abb8a0d754ea4763bad944fd965d3d95b5baef6b121c0c9013eaf1907d", size = 430877 }, + { url = "https://files.pythonhosted.org/packages/75/37/872d74bd7739639c4553bf94c84af7d54d8211b626b352bc57f0fd8d1e3f/zstandard-0.23.0-cp312-cp312-win_amd64.whl", hash = "sha256:64585e1dba664dc67c7cdabd56c1e5685233fbb1fc1966cfba2a340ec0dfff7b", size = 495595 }, + { url = "https://files.pythonhosted.org/packages/80/f1/8386f3f7c10261fe85fbc2c012fdb3d4db793b921c9abcc995d8da1b7a80/zstandard-0.23.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:576856e8594e6649aee06ddbfc738fec6a834f7c85bf7cadd1c53d4a58186ef9", size = 788975 }, + { url = "https://files.pythonhosted.org/packages/16/e8/cbf01077550b3e5dc86089035ff8f6fbbb312bc0983757c2d1117ebba242/zstandard-0.23.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:38302b78a850ff82656beaddeb0bb989a0322a8bbb1bf1ab10c17506681d772a", size = 633448 }, + { url = "https://files.pythonhosted.org/packages/06/27/4a1b4c267c29a464a161aeb2589aff212b4db653a1d96bffe3598f3f0d22/zstandard-0.23.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2240ddc86b74966c34554c49d00eaafa8200a18d3a5b6ffbf7da63b11d74ee2", size = 4945269 }, + { url = "https://files.pythonhosted.org/packages/7c/64/d99261cc57afd9ae65b707e38045ed8269fbdae73544fd2e4a4d50d0ed83/zstandard-0.23.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2ef230a8fd217a2015bc91b74f6b3b7d6522ba48be29ad4ea0ca3a3775bf7dd5", size = 5306228 }, + { url = "https://files.pythonhosted.org/packages/7a/cf/27b74c6f22541f0263016a0fd6369b1b7818941de639215c84e4e94b2a1c/zstandard-0.23.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:774d45b1fac1461f48698a9d4b5fa19a69d47ece02fa469825b442263f04021f", size = 5336891 }, + { url = "https://files.pythonhosted.org/packages/fa/18/89ac62eac46b69948bf35fcd90d37103f38722968e2981f752d69081ec4d/zstandard-0.23.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f77fa49079891a4aab203d0b1744acc85577ed16d767b52fc089d83faf8d8ed", size = 5436310 }, + { url = "https://files.pythonhosted.org/packages/a8/a8/5ca5328ee568a873f5118d5b5f70d1f36c6387716efe2e369010289a5738/zstandard-0.23.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ac184f87ff521f4840e6ea0b10c0ec90c6b1dcd0bad2f1e4a9a1b4fa177982ea", size = 4859912 }, + { url = "https://files.pythonhosted.org/packages/ea/ca/3781059c95fd0868658b1cf0440edd832b942f84ae60685d0cfdb808bca1/zstandard-0.23.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c363b53e257246a954ebc7c488304b5592b9c53fbe74d03bc1c64dda153fb847", size = 4936946 }, + { url = "https://files.pythonhosted.org/packages/ce/11/41a58986f809532742c2b832c53b74ba0e0a5dae7e8ab4642bf5876f35de/zstandard-0.23.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e7792606d606c8df5277c32ccb58f29b9b8603bf83b48639b7aedf6df4fe8171", size = 5466994 }, + { url = "https://files.pythonhosted.org/packages/83/e3/97d84fe95edd38d7053af05159465d298c8b20cebe9ccb3d26783faa9094/zstandard-0.23.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a0817825b900fcd43ac5d05b8b3079937073d2b1ff9cf89427590718b70dd840", size = 4848681 }, + { url = "https://files.pythonhosted.org/packages/6e/99/cb1e63e931de15c88af26085e3f2d9af9ce53ccafac73b6e48418fd5a6e6/zstandard-0.23.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:9da6bc32faac9a293ddfdcb9108d4b20416219461e4ec64dfea8383cac186690", size = 4694239 }, + { url = "https://files.pythonhosted.org/packages/ab/50/b1e703016eebbc6501fc92f34db7b1c68e54e567ef39e6e59cf5fb6f2ec0/zstandard-0.23.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:fd7699e8fd9969f455ef2926221e0233f81a2542921471382e77a9e2f2b57f4b", size = 5200149 }, + { url = "https://files.pythonhosted.org/packages/aa/e0/932388630aaba70197c78bdb10cce2c91fae01a7e553b76ce85471aec690/zstandard-0.23.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:d477ed829077cd945b01fc3115edd132c47e6540ddcd96ca169facff28173057", size = 5655392 }, + { url = "https://files.pythonhosted.org/packages/02/90/2633473864f67a15526324b007a9f96c96f56d5f32ef2a56cc12f9548723/zstandard-0.23.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa6ce8b52c5987b3e34d5674b0ab529a4602b632ebab0a93b07bfb4dfc8f8a33", size = 5191299 }, + { url = "https://files.pythonhosted.org/packages/b0/4c/315ca5c32da7e2dc3455f3b2caee5c8c2246074a61aac6ec3378a97b7136/zstandard-0.23.0-cp313-cp313-win32.whl", hash = "sha256:a9b07268d0c3ca5c170a385a0ab9fb7fdd9f5fd866be004c4ea39e44edce47dd", size = 430862 }, + { url = "https://files.pythonhosted.org/packages/a2/bf/c6aaba098e2d04781e8f4f7c0ba3c7aa73d00e4c436bcc0cf059a66691d1/zstandard-0.23.0-cp313-cp313-win_amd64.whl", hash = "sha256:f3513916e8c645d0610815c257cbfd3242adfd5c4cfa78be514e5a3ebb42a41b", size = 495578 }, +] From 52643b57c1a539faeef985e7745966832de34b28 Mon Sep 17 00:00:00 2001 From: d33bs Date: Thu, 23 Jan 2025 17:27:12 -0700 Subject: [PATCH 02/20] move to formal package --- .github/ISSUE_TEMPLATE/issue.yml | 49 + .github/PULL_REQUEST_TEMPLATE.md | 37 + .github/dependabot.yml | 25 + .github/release-drafter.yml | 21 + .github/workflows/draft-release.yml | 23 + .github/workflows/publish-docs.yml | 53 + .github/workflows/publish-pypi.yml | 37 + .gitignore | 6 + .pre-commit-config.yaml | 79 + CITATION.cff | 555 ++++ README.md | 35 +- docs/src/_static/coverage-badge.svg | 1 + pyproject.toml | 79 + src/nviz/image.py | 377 +++ src/nviz/meta.py | 107 + src/nviz/view.py | 115 + tests/__init__.py | 0 tests/data/random_tiff_z_stacks/ScanInfo.xml | 16 + .../random_tiff_z_stacks/generate_data.py | 108 + tests/test_image.py | 112 + tests/test_meta.py | 177 + tests/test_view.py | 78 + tests/utils.py | 36 + uv.lock | 2867 +++++++++++++++++ 24 files changed, 4992 insertions(+), 1 deletion(-) create mode 100644 .github/ISSUE_TEMPLATE/issue.yml create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/dependabot.yml create mode 100644 .github/release-drafter.yml create mode 100644 .github/workflows/draft-release.yml create mode 100644 .github/workflows/publish-docs.yml create mode 100644 .github/workflows/publish-pypi.yml create mode 100644 .pre-commit-config.yaml create mode 100644 CITATION.cff create mode 100644 docs/src/_static/coverage-badge.svg create mode 100644 pyproject.toml create mode 100644 src/nviz/image.py create mode 100644 src/nviz/meta.py create mode 100644 src/nviz/view.py create mode 100644 tests/__init__.py create mode 100644 tests/data/random_tiff_z_stacks/ScanInfo.xml create mode 100644 tests/data/random_tiff_z_stacks/generate_data.py create mode 100644 tests/test_image.py create mode 100644 tests/test_meta.py create mode 100644 tests/test_view.py create mode 100644 tests/utils.py create mode 100644 uv.lock diff --git a/.github/ISSUE_TEMPLATE/issue.yml b/.github/ISSUE_TEMPLATE/issue.yml new file mode 100644 index 0000000..fc71fc7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/issue.yml @@ -0,0 +1,49 @@ +# GitHub Issue template for bug reports +name: Open a GitHub issue +description: > + Please use this form to send along new ideas for content or + changes that might be helpful! + +body: + - type: checkboxes + attributes: + label: Is this a duplicate of an existing idea for this project? + description: > + Please make sure to search in the + [issues](https://github.com/WayScience/coSMicQC/issues) first + to see whether the same issue was reported already. + If you find an existing issue, please don't hesitate to comment + on it or add a reaction to existing content! + options: + - label: > + I found no existing + [issues](https://github.com/WayScience/coSMicQC/issues) + covering this topic. + required: true + + - type: textarea + id: description + attributes: + label: What is your idea? + description: > + Please provide a specific description of what you'd like to see + including the context and what the result might look like. + placeholder: > + For example: "When x happens I see y. + The following might be a good way to address this ..." + validations: + required: true + + - type: checkboxes + attributes: + label: Would you like to work on a solution for this? + description: > + This is a community-driven project and we + love new contributors (including through opening or adding to issues)! + This is an optional check to help us understand your interest to be + involved (especially if you already have a good understanding + of how to implement it). + We are happy to guide you in the contribution process and please + don't hesitate to reach out for help along the way. + options: + - label: Yes I am willing to submit a PR for this! diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..4c6f315 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,37 @@ + + +# Description + + + +## What kind of change(s) are included? + +- [ ] Documentation (changes docs or other related content) +- [ ] Bug fix (fixes an issue). +- [ ] Enhancement (adds functionality). +- [ ] Breaking change (these changes would cause existing functionality to not work as expected). + +# Checklist + +Please ensure that all boxes are checked before indicating that this pull request is ready for review. + +- [ ] I have read and followed the [CONTRIBUTING.md](CONTRIBUTING.md) guidelines. +- [ ] I have searched for existing content to ensure this is not a duplicate. +- [ ] I have performed a self-review of these additions (including spelling, grammar, and related). +- [ ] These changes pass all pre-commit checks. +- [ ] I have added comments to my code to help provide understanding +- [ ] I have added a test which covers the code changes found within this PR +- [ ] I have deleted all non-relevant text in this pull request template. diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..052054c --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,25 @@ +# GitHub Dependabot configuration +# Note: there is no interaction between this +# configuration and dependabot security updates. +# See here for more information: +# https://docs.github.com/en/code-security/dependabot/dependabot-security-updates/about-dependabot-security-updates#about-dependabot-security-updates + +version: 2 +updates: + # GitHub Actions checks + # See here for more information: + # https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuring-dependabot-version-updates + - package-ecosystem: "github-actions" + directory: "/" + schedule: + # Check for updates to GitHub Actions every week + interval: "weekly" + + # Perform checks and updates for python poetry environment. + # See here for more information: + # https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#pip-and-pip-compile + - package-ecosystem: "pip" + directory: "/" + schedule: + # Check for updates to poetry lockfile every week + interval: "weekly" diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml new file mode 100644 index 0000000..3d8f4ed --- /dev/null +++ b/.github/release-drafter.yml @@ -0,0 +1,21 @@ +--- +# template configuration for release-drafter +# see: https://github.com/release-drafter/release-drafter +name-template: 'v$RESOLVED_VERSION' +tag-template: 'v$RESOLVED_VERSION' +version-resolver: + major: + labels: + - 'release-major' + minor: + labels: + - 'release-minor' + patch: + labels: + - 'release-patch' + default: patch +change-template: '- $TITLE (@$AUTHOR via #$NUMBER)' +template: | + ## Changes + + $CHANGES diff --git a/.github/workflows/draft-release.yml b/.github/workflows/draft-release.yml new file mode 100644 index 0000000..4847e3e --- /dev/null +++ b/.github/workflows/draft-release.yml @@ -0,0 +1,23 @@ +--- +# workflow for drafting releases on GitHub +# see: https://github.com/release-drafter/release-drafter +name: release drafter + +on: + push: + branches: + - main + +jobs: + draft_release: + permissions: + # write permission is required to create a github release + contents: write + # write permission is required for autolabeler + # otherwise, read permission is required at least + pull-requests: write + runs-on: ubuntu-latest + steps: + - uses: release-drafter/release-drafter@v6 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/publish-docs.yml b/.github/workflows/publish-docs.yml new file mode 100644 index 0000000..1738962 --- /dev/null +++ b/.github/workflows/publish-docs.yml @@ -0,0 +1,53 @@ +--- +# used for publishing documentation on push to main or published release +name: publish docs + +on: + push: + branches: + - main + release: + types: + - published + +jobs: + build: + # only build and deploy docs if the actor is not dependabot + if: ${{ github.actor != 'dependabot[bot]' }} + runs-on: ubuntu-22.04 + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Fetch tags + run: git fetch --all --tags + - uses: actions/setup-python@v5 + with: + python-version: "3.11" + - name: Setup for poetry + run: | + python -m pip install poetry + poetry self add "poetry-dynamic-versioning[plugin]" + - name: poetry deps + run: poetry install + - name: Build documentation + run: | + mkdir pages + touch pages/.nojekyll + cd docs + poetry run sphinx-multiversion src build + # remove any doctrees dirs which aren't needed for publishing + find ./build -type d -name '.doctrees' -exec rm -rf {} + + cp -r build/* ../pages/ + - name: Add index redirector to latest docs + run: | + cp docs/redirector.html pages/index.html + - name: Add media folder to latest docs + run: | + cp -r docs/src/media pages/media + - name: Deploy documentation + uses: JamesIves/github-pages-deploy-action@v4 + with: + branch: pages + folder: pages diff --git a/.github/workflows/publish-pypi.yml b/.github/workflows/publish-pypi.yml new file mode 100644 index 0000000..20b0724 --- /dev/null +++ b/.github/workflows/publish-pypi.yml @@ -0,0 +1,37 @@ +--- +# used for publishing packages to pypi on release +name: publish pypi release + +on: + release: + types: + - published + +jobs: + publish_pypi: + runs-on: ubuntu-latest + environment: release + permissions: + # IMPORTANT: this permission is mandatory for trusted publishing + id-token: write + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Fetch tags + run: git fetch --all --tags + - name: Python setup + uses: actions/setup-python@v5 + with: + python-version: "3.11" + - name: Setup for poetry + run: | + python -m pip install poetry + poetry self add "poetry-dynamic-versioning[plugin]" + - name: Install environment + run: poetry install --no-interaction --no-ansi + - name: poetry build distribution content + run: poetry build + - name: Publish package distributions to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 diff --git a/.gitignore b/.gitignore index 15201ac..153383a 100644 --- a/.gitignore +++ b/.gitignore @@ -169,3 +169,9 @@ cython_debug/ # PyPI configuration file .pypirc + +# custom ignores +*.zarr +src/raw_organoid_images_to_omezarr/data/GFF-data +*.tiff +*.tif diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..8dc6c99 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,79 @@ +# See https://pre-commit.com for more information +# See https://pre-commit.com/hooks.html for more hooks +default_language_version: + python: python3.11 +repos: +- repo: https://github.com/pre-commit/pre-commit-hooks + rev: v5.0.0 + hooks: + - id: trailing-whitespace + - id: end-of-file-fixer + exclude: | + (?x)^( + .*\.zattrs | + .*\.zgroup | + .*\.zarray + )$ + - id: check-yaml + - id: detect-private-key +- repo: https://github.com/tox-dev/pyproject-fmt + rev: "v2.5.0" + hooks: + - id: pyproject-fmt +- repo: https://github.com/citation-file-format/cffconvert + rev: 5295f87c0e261da61a7b919fc754e3a77edd98a7 + hooks: + - id: validate-cff +- repo: https://github.com/codespell-project/codespell + rev: v2.4.0 + hooks: + - id: codespell + exclude: | + (?x)^( + .*\.lock | + .*\.csv | + .*\.cff + )$ +- repo: https://github.com/executablebooks/mdformat + rev: 0.7.21 + hooks: + - id: mdformat + additional_dependencies: + - mdformat-gfm +- repo: https://github.com/adrienverge/yamllint + rev: v1.35.1 + hooks: + - id: yamllint + exclude: pre-commit-config.yaml +- repo: https://github.com/astral-sh/ruff-pre-commit + rev: "v0.9.3" + hooks: + - id: ruff-format + - id: ruff +- repo: https://github.com/rhysd/actionlint + rev: v1.7.7 + hooks: + - id: actionlint +- repo: https://gitlab.com/vojko.pribudic.foss/pre-commit-update + rev: v0.6.0 + hooks: + - id: pre-commit-update + args: ["--keep", "mdformat", "--keep", "pre-commit-update", "--keep", "cffconvert"] +- repo: https://github.com/jendrikseipp/vulture + rev: 'v2.14' + hooks: + - id: vulture +- repo: local + hooks: + - id: code-cov-gen + name: Generate code coverage + language: system + entry: uv run coverage run -m pytest + pass_filenames: false + always_run: true +- repo: https://github.com/Weird-Sheep-Labs/coverage-pre-commit + rev: 0.1.1 + hooks: + - id: coverage-xml + - id: coverage-badge + args: ["-o", "docs/src/_static/coverage-badge.svg"] diff --git a/CITATION.cff b/CITATION.cff new file mode 100644 index 0000000..7bf6fc4 --- /dev/null +++ b/CITATION.cff @@ -0,0 +1,555 @@ +# This CITATION.cff file was generated with cffinit. +# Visit https://bit.ly/cffinit to generate yours today! +--- +cff-version: 1.2.0 +title: nViz +message: >- + If you use this software, please cite it using the + metadata from this file. +type: software +authors: + - given-names: Dave + family-names: Bunten + orcid: 'https://orcid.org/0000-0001-6041-3665' + - given-names: Michael + family-names: Lippincott + orcid: 'https://orcid.org/0000-0002-8637-1448' + - given-names: Jenna + family-names: Tomkinson + orcid: 'https://orcid.org/0000-0003-2676-5813' + - given-names: Cameron + family-names: Mattson + orcid: 'https://orcid.org/0009-0008-4969-779X' + - given-names: Gregory + family-names: Way + orcid: 'https://orcid.org/0000-0002-0503-9348' +repository-code: 'https://github.com/WayScience/nViz' +abstract: >- + A tool for creating and visualizing n-dimensional microscopy images. +keywords: + - python + - microscopy + - profiling + - organoids + - data + - ome-zarr + - napari + - n-dimensional + - way-lab +license: BSD-3-Clause +references: + - title: >- + OME-Zarr: a cloud-optimized bioimaging file format with international community support + type: article + database: Bioinformatics + url: http://biorxiv.org/lookup/doi/10.1101/2023.02.17.528834 + authors: + - family-names: Moore + given-names: Josh + - family-names: Basurto-Lozada + given-names: Daniela + - family-names: Besson + given-names: Sébastien + - family-names: Bogovic + given-names: John + - family-names: Bragantini + given-names: Jordão + - family-names: Brown + given-names: Eva M. + - family-names: Burel + given-names: Jean-Marie + - family-names: Casas Moreno + given-names: Xavier + - family-names: De Medeiros + given-names: Gustavo + - family-names: Diel + given-names: Erin E. + - family-names: Gault + given-names: David + - family-names: Ghosh + given-names: Satrajit S. + - family-names: Gold + given-names: Ilan + - family-names: Halchenko + given-names: Yaroslav O. + - family-names: Hartley + given-names: Matthew + - family-names: Horsfall + given-names: Dave + - family-names: Keller + given-names: Mark S. + - family-names: Kittisopikul + given-names: Mark + - family-names: Kovacs + given-names: Gabor + - family-names: Küpcü Yoldaş + given-names: Aybüke + - family-names: Kyoda + given-names: Koji + - family-names: Le Tournoulx De La Villegeorges + given-names: Albane + - family-names: Li + given-names: Tong + - family-names: Liberali + given-names: Prisca + - family-names: Lindner + given-names: Dominik + - family-names: Linkert + given-names: Melissa + - family-names: Lüthi + given-names: Joel + - family-names: Maitin-Shepard + given-names: Jeremy + - family-names: Manz + given-names: Trevor + - family-names: Marconato + given-names: Luca + - family-names: McCormick + given-names: Matthew + - family-names: Lange + given-names: Merlin + - family-names: Mohamed + given-names: Khaled + - family-names: Moore + given-names: William + - family-names: Norlin + given-names: Nils + - family-names: Ouyang + given-names: Wei + - family-names: Özdemir + given-names: Bugra + - family-names: Palla + given-names: Giovanni + - family-names: Pape + given-names: Constantin + - family-names: Pelkmans + given-names: Lucas + - family-names: Pietzsch + given-names: Tobias + - family-names: Preibisch + given-names: Stephan + - family-names: Prete + given-names: Martin + - family-names: Rzepka + given-names: Norman + - family-names: Samee + given-names: Sameeul + - family-names: Schaub + given-names: Nicholas + - family-names: Sidky + given-names: Hythem + - family-names: Solak + given-names: Ahmet Can + - family-names: Stirling + given-names: David R. + - family-names: Striebel + given-names: Jonathan + - family-names: Tischer + given-names: Christian + - family-names: Toloudis + given-names: Daniel + - family-names: Virshup + given-names: Isaac + - family-names: Walczysko + given-names: Petr + - family-names: Watson + given-names: Alan M. + - family-names: Weisbart + given-names: Erin + - family-names: Wong + given-names: Frances + - family-names: Yamauchi + given-names: Kevin A. + - family-names: Bayraktar + given-names: Omer + - family-names: Cimini + given-names: Beth A. + - family-names: Gehlenborg + given-names: Nils + - family-names: Haniffa + given-names: Muzlifah + - family-names: Hotaling + given-names: Nathan + - family-names: Onami + given-names: Shuichi + - family-names: Royer + given-names: Loic A. + - family-names: Saalfeld + given-names: Stephan + - family-names: Stegle + given-names: Oliver + - family-names: Theis + given-names: Fabian J. + - family-names: Swedlow + given-names: Jason R. + date-published: 2023-02-21 + identifiers: + - type: doi + value: 10.1101/2023.02.17.528834 + - title: Napari + type: software + identifiers: + - type: doi + value: 10.5281/zenodo.3555620 + authors: + - given-names: Nicholas + family-names: Sofroniew + affiliation: Chan Zuckerberg Initiative + orcid: https://orcid.org/0000-0002-3426-0914 + alias: sofroniewn + - given-names: Talley + family-names: Lambert + affiliation: Harvard Medical School + orcid: https://orcid.org/0000-0002-2409-0181 + alias: tlambert03 + - given-names: Grzegorz + family-names: Bokota + affiliation: University of Warsaw, Faculty of Mathematics, Informatics, and Mechanics + orcid: https://orcid.org/0000-0002-5470-1676 + alias: Czaki + - given-names: Juan + family-names: Nunez-Iglesias + affiliation: Monash eResearch Centre, Monash University + orcid: https://orcid.org/0000-0002-7239-5828 + alias: jni + - given-names: Peter + family-names: Sobolewski + affiliation: The Jackson Laboratory + orcid: https://orcid.org/0000-0002-2097-0990 + alias: psobolewskiPhD + - given-names: Andrew + family-names: Sweet + affiliation: Chan Zuckerberg Initiative + alias: andy-sweet + - given-names: Lorenzo + family-names: Gaifas + affiliation: Gutsche Lab - University of Grenoble + orcid: https://orcid.org/0000-0003-4875-9422 + alias: brisvag + - given-names: Kira + family-names: Evans + affiliation: Chan Zuckerberg Initiative + alias: kne42 + - given-names: Alister + family-names: Burt + affiliation: MRC-LMB + alias: alisterburt + - given-names: Draga + family-names: Doncila Pop + affiliation: Monash University + alias: DragaDoncila + - given-names: Kevin + family-names: Yamauchi + affiliation: Iber Lab - ETH Zürich + alias: kevinyamauchi + - given-names: Melissa + family-names: Weber Mendonça + affiliation: Quansight + orcid: https://orcid.org/0000-0002-3212-402X + alias: melissawm + - given-names: Genevieve + family-names: Buckley + affiliation: Monash University + orcid: https://orcid.org/0000-0003-2763-492X + alias: GenevieveBuckley + - given-names: Wouter-Michiel + family-names: Vierdag + affiliation: European Molecular Biology Laboratory, Genome Biology Unit, Heidelberg, + Germany + orcid: https://orcid.org/0000-0003-1666-5421 + alias: melonora + - given-names: Loic + family-names: Royer + affiliation: Chan Zuckerberg Biohub + alias: royerloic + - given-names: Ahmet + family-names: Can Solak + affiliation: Chan Zuckerberg Biohub + alias: AhmetCanSolak + - given-names: Kyle I. S. + family-names: Harrington + affiliation: Chan Zuckerberg Initiative + orcid: https://orcid.org/0000-0002-7237-1973 + alias: kephale + - given-names: Jannis + family-names: Ahlers + affiliation: Monash University + orcid: https://orcid.org/0000-0003-0630-1819 + alias: jnahlers + - given-names: Daniel + family-names: Althviz Moré + affiliation: Quansight + orcid: https://orcid.org/0000-0003-1759-4194 + alias: dalthviz + - given-names: Oren + family-names: Amsalem + affiliation: Harvard Medical School, BIDMC + orcid: https://orcid.org/0000-0002-8070-0378 + alias: orena1 + - given-names: Ashley + family-names: Anderson + affiliation: Chan Zuckerberg Initiative + orcid: https://orcid.org/0000-0002-3841-8344 + alias: aganders3 + - given-names: Andrew + family-names: Annex + affiliation: SETI Institute/NASA ARC + orcid: https://orcid.org/0000-0002-0253-2313 + alias: AndrewAnnex + - given-names: Peter + family-names: Boone + alias: boonepeter + - given-names: Jordão + family-names: Bragantini + affiliation: Chan Zuckerberg Biohub + alias: JoOkuma + - given-names: Matthias + family-names: Bussonnier + affiliation: Quansight Labs + orcid: https://orcid.org/0000-0002-7636-8632 + alias: Carreau + - given-names: Clément + family-names: Caporal + affiliation: Laboratory for Optics and Biosciences, Ecole Polytechnique, INSERM, + CNRS, Palaiseau, France + orcid: https://orcid.org/0000-0002-9441-9173 + alias: ClementCaporal + - given-names: Jan + family-names: Eglinger + affiliation: Friedrich Miescher Institute for Biomedical Research (FMI), Basel (Switzerland) + orcid: https://orcid.org/0000-0001-7234-1435 + alias: imagejan + - given-names: Andreas + family-names: Eisenbarth + affiliation: EMBL Heidelberg, Germany + orcid: https://orcid.org/0000-0002-1113-9556 + alias: aeisenbarth + - given-names: Jeremy + family-names: Freeman + affiliation: Chan Zuckerberg Initiative + alias: freeman-lab + - given-names: Christoph + family-names: Gohlke + affiliation: University of California, Irvine + alias: cgohlke + - given-names: Kabilar + family-names: Gunalan + alias: kabilar + - given-names: Hagai + family-names: Har-Gil + affiliation: Tel Aviv University, Israel + alias: HagaiHargil + - given-names: Mark + family-names: Harfouche + affiliation: Ramona Optics Inc, Durham, North Carolina, USA + orcid: https://orcid.org/0000-0002-4657-4603 + alias: hmaarrfk + - given-names: Volker + family-names: Hilsenstein + affiliation: EMBL Heidelberg, Germany + orcid: https://orcid.org/0000-0002-2255-2960 + alias: VolkerH + - given-names: Katherine + family-names: Hutchings + affiliation: University College London + alias: katherine-hutchings + - given-names: Jessy + family-names: Lauer + affiliation: Swiss Federal Institute of Technology (EPFL), Lausanne, Switzerland + orcid: https://orcid.org/0000-0002-3656-2449 + alias: jeylau + - given-names: Gregor + family-names: Lichtner + affiliation: Universitätsmedizin Greifswald + orcid: https://orcid.org/0000-0002-5890-1958 + alias: glichtner + - given-names: Ziyang + family-names: Liu + affiliation: Chan Zuckerberg Initiative Foundation + alias: liu-ziyang + - given-names: Lucy + family-names: Liu + affiliation: Quansight + alias: lucyleeow + - given-names: Alan + family-names: Lowe + affiliation: UCL & The Alan Turing Institute + alias: quantumjot + - given-names: Luca + family-names: Marconato + affiliation: EMBL Heidelberg + orcid: https://orcid.org/0000-0003-3198-1326 + alias: LucaMarconato + - given-names: Sean + family-names: Martin + affiliation: MetaCell + orcid: https://orcid.org/0000-0001-7600-0291 + alias: seankmartin + - given-names: Abigail + family-names: McGovern + affiliation: Monash University + alias: AbigailMcGovern + - given-names: Lukasz + family-names: Migas + affiliation: Delft University of Technology + alias: lukasz-migas + - given-names: Nadalyn + family-names: Miller + affiliation: Apex Systems + orcid: https://orcid.org/0009-0007-6993-1267 + alias: Nadalyn-CZI + - given-names: Hector + family-names: Muñoz + affiliation: University of California, Los Angeles + orcid: https://orcid.org/0000-0001-7851-2549 + alias: hectormz + - given-names: Jan-Hendrik + family-names: Müller + affiliation: Georg-August-Universität Göttingen + orcid: https://orcid.org/0009-0007-3670-9969 + alias: kolibril13 + - given-names: Christopher + family-names: Nauroth-Kreß + affiliation: University Hospital Würzburg - Institute of Neuroradiology + alias: Chris-N-K + - given-names: David + family-names: Palecek + affiliation: Algarve Centre of Marine Sciences (CCMAR) + orcid: https://orcid.org/0009-0003-9328-8540 + alias: palec87 + - given-names: Constantin + family-names: Pape + affiliation: Georg-August-Universität Göttingen + orcid: https://orcid.org/0000-0001-6562-7187 + alias: constantinpape + - given-names: Eric + family-names: Perlman + affiliation: Yikes LLC + orcid: https://orcid.org/0000-0001-5542-1302 + alias: perlman + - given-names: Kim + family-names: Pevey + alias: kcpevey + - given-names: Gonzalo + family-names: Peña-Castellanos + affiliation: Quansight + orcid: https://orcid.org/0000-0002-1214-4680 + alias: goanpeca + - given-names: Andrea + family-names: Pierré + affiliation: Brown University + orcid: https://orcid.org/0000-0003-4501-5428 + alias: kir0ul + - given-names: David + family-names: Pinto + alias: MarchisLost + - given-names: Jaime + family-names: Rodríguez-Guerra + affiliation: Quansight Labs + orcid: https://orcid.org/0000-0001-8974-1566 + alias: jaimergp + - given-names: David + family-names: Ross + affiliation: NanoString Technologies, Inc. + orcid: https://orcid.org/0000-0001-9998-3817 + alias: davidpross + - given-names: Craig T. + family-names: Russell + affiliation: European Bioinformatics Institute - European Molecular Biology Laboratory + orcid: https://orcid.org/0000-0002-2447-5911 + alias: ctr26 + - given-names: James + family-names: Ryan + alias: jamesyan-git + - given-names: Gabriel + family-names: Selzer + affiliation: University of Wisconsin-Madison + orcid: https://orcid.org/0009-0002-2400-1940 + alias: gselzer + - given-names: MB + family-names: Smith + affiliation: AI lab for Living Technologies, University Medical Centre Utrecht (The Netherlands) + orcid: https://orcid.org/0000-0002-1405-0100 + alias: odinsbane + - given-names: Paul + family-names: Smith + affiliation: University College London + orcid: https://orcid.org/0000-0002-3676-5318 + alias: p-j-smith + - given-names: Konstantin + family-names: Sofiiuk + alias: ksofiyuk + - given-names: Johannes + family-names: Soltwedel + affiliation: DFG cluster of excellence 'Physics of Life', TU Dresden + orcid: https://orcid.org/0000-0003-1273-2412 + alias: jo-mueller + - given-names: David + family-names: Stansby + affiliation: University College London + orcid: https://orcid.org/0000-0002-1365-1908 + alias: dstansby + - given-names: Jules + family-names: Vanaret + affiliation: Aix Marseille University, CNRS, Fresnel, I2M, IBDM, Turing Centre for Living systems + orcid: https://orcid.org/0009-0004-6070-2263 + alias: jules-vanaret + - given-names: Pam + family-names: Wadhwa + affiliation: Quansight Labs + alias: ppwadhwa + - given-names: Martin + family-names: Weigert + affiliation: TU-Dresden / EPFL + orcid: https://orcid.org/0000-0002-7780-9057 + alias: maweigert + - given-names: Jonas + family-names: Windhager + affiliation: ETH Zurich / University of Zurich + orcid: https://orcid.org/0000-0002-2111-5291 + alias: jwindhager + - given-names: Philip + family-names: Winston + affiliation: Tobeva Software + alias: pwinston + - given-names: Rubin + family-names: Zhao + affiliation: Chinese Academy of Sciences - SIAT, Shenzhen, China + orcid: https://orcid.org/0009-0005-8264-5682 + alias: BeanLi + repository-code: https://github.com/napari/napari + license: BSD-3-Clause + - title: >- + The Open Microscopy Environment (OME) Data Model and XML file: open tools for informatics and quantitative analysis in biological imaging + type: article + issn: 1474-760X + issue: 5 + journal: Genome Biol + pages: R47 + volume: 6 + url: https://genomebiology.biomedcentral.com/articles/10.1186/gb-2005-6-5-r47 + authors: + - family-names: Goldberg + given-names: Ilya G + - family-names: Allan + given-names: Chris + - family-names: Burel + given-names: Jean-Marie + - family-names: Creager + given-names: Doug + - family-names: Falconi + given-names: Andrea + - family-names: Hochheiser + given-names: Harry + - family-names: Johnston + given-names: Josiah + - family-names: Mellen + given-names: Jeff + - family-names: Sorger + given-names: Peter K + - family-names: Swedlow + given-names: Jason R + date-published: 2005-05-03 + identifiers: + - type: doi + value: 10.1186/gb-2005-6-5-r47 diff --git a/README.md b/README.md index 1355844..24462dd 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,35 @@ # nVis -A tool for creating and visualizing n-dimensional microscopy images + +[![Build Status](https://github.com/WayScience/nViz/actions/workflows/run-tests.yml/badge.svg?branch=main)](https://github.com/WayScience/nViz/actions/workflows/run-tests.yml?query=branch%3Amain) +![Coverage Status](https://raw.githubusercontent.com/WayScience/nViz/main/docs/src/_static/coverage-badge.svg) +[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) +[![uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://github.com/astral-sh/uv) + +[![Build Status](https://github.com/WayScience/nViz/actions/workflows/run-tests.yml/badge.svg?branch=main)](https://github.com/WayScience/nViz/actions/workflows/run-tests.yml?query=branch%3Amain) +![Coverage Status](https://raw.githubusercontent.com/WayScience/nViz/main/docs/src/_static/coverage-badge.svg) +[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) +[![uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://github.com/astral-sh/uv) + +[![Build Status](https://github.com/WayScience/nViz/actions/workflows/run-tests.yml/badge.svg?branch=main)](https://github.com/WayScience/nViz/actions/workflows/run-tests.yml?query=branch%3Amain) +![Coverage Status](https://raw.githubusercontent.com/WayScience/nViz/main/docs/src/_static/coverage-badge.svg) +[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) +[![uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://github.com/astral-sh/uv) + +This project focuses on ingesting a set of [TIFF](https://en.wikipedia.org/wiki/TIFF) images as [OME-Zarr](https://pmc.ncbi.nlm.nih.gov/articles/PMC9980008/) or OME-TIFF () which are organized by channel and z-slices which compose three dimensional microscopy data for biological objects (such as organoids). +We read the output with [Napari](https://napari.org/dev/index.html), which provides a way to analyze and understand the 3D image data. + +## Installation + +Install nViz from [PyPI](https://pypi.org/project/coSMicQC/) or from source: + +```shell +# install from pypi +pip install nviz + +# install directly from source +pip install git+https://github.com/WayScience/nViz.git +``` + +## Contributing, Development, and Testing + +Please see our [contributing](https://WayScience.github.io/coSMicQC/main/contributing) documentation for more details on contributions, development, and testing. diff --git a/docs/src/_static/coverage-badge.svg b/docs/src/_static/coverage-badge.svg new file mode 100644 index 0000000..c05a0bf --- /dev/null +++ b/docs/src/_static/coverage-badge.svg @@ -0,0 +1 @@ +coverage: 86.06%coverage86.06% \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..7b4b105 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,79 @@ +[build-system] +build-backend = "setuptools.build_meta" +requires = [ "setuptools>=64", "setuptools-scm>=8" ] + +[project] +name = "nviz" +description = "A tool for creating and visualizing n-dimensional microscopy images." +readme = "README.md" +requires-python = ">=3.11" +classifiers = [ + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", +] +dynamic = [ "version" ] +dependencies = [ + "napari[all]>=0.5.5", + "napari-ome-zarr>=0.6.1", + "numpy<2.1", + "ome-zarr>=0.10.2", + "tifffile>=2024.12.12", + "xmltodict>=0.14.2", + "zarr>=2.18.4", +] + +[dependency-groups] +# dependency groups for uv +dev = [ + "coverage>=7.6.10", + "pre-commit>=4.0.1", + "pytest>=8.3.4", + "setuptools-scm>=8.1", +] + +[tool.setuptools_scm] +root = "." + +[tool.ruff] +target-version = "py38" +line-length = 88 +fix = true +lint.select = [ + # flake8-builtins + "A", + # flake8-annotations + "ANN", + # flake8-comprehensions + "C4", + # mccabe + "C90", + # pycodestyle + "E", + # pyflakes + "F", + # isort + "I", + # pylint + "PL", + # ruff + "RUF", + # flake8-simplify + "SIM", + "W", +] +# Ignore `E402` and `F401` (unused imports) in all `__init__.py` files +lint.per-file-ignores."__init__.py" = [ "F401" ] +# ignore typing rules for tests +lint.per-file-ignores."tests/*" = [ "ANN201", "PLR0913", "PLR2004" ] + +[tool.pytest.ini_options] +pythonpath = [ "." ] + +[tool.jupytext] +formats = "ipynb,py:light" + +[tool.vulture] +min_confidence = 90 +paths = [ "src/nviz", "tests" ] diff --git a/src/nviz/image.py b/src/nviz/image.py new file mode 100644 index 0000000..323fd19 --- /dev/null +++ b/src/nviz/image.py @@ -0,0 +1,377 @@ +""" +Experiment with GFF image stacks to OME-ZARR with display in Napari. +""" + +import pathlib +import shutil +from itertools import groupby +from typing import Union, Tuple, List, Optional, Dict +import os +import numpy as np +import tifffile as tiff +import zarr +from ome_zarr.io import parse_url as zarr_parse_url +from ome_zarr.writer import write_image as zarr_write_image + +from .meta import ( + extract_z_slice_number_from_filename, + generate_ome_xml +) + + +def tiff_to_zarr( + image_dir: str, + label_dir: Optional[str], + output_path: str, + channel_map: Dict[str, str], + scaling_values: Union[List[int], Tuple[int]], + overwrite: bool = False, + debug: bool = False, +) -> str: + """ + Convert TIFF files to OME-Zarr format. + + Args: + image_dir (str): + Directory containing TIFF image files. + label_dir (Optional[str]): + Directory containing label TIFF files. + output_path (str): + Path to save the output OME-Zarr file. + channel_map (Dict[str, str]): + Mapping from filename codes to channel names. + scaling_values (Union[List[int], Tuple[int]]): + Scaling values for the images. + overwrite (bool): + Whether to overwrite existing output. Default is False. + debug (bool): + Whether to print debug information. Default is False. + + Returns: + str: Path to the output OME-Zarr file. + """ + + if not pathlib.Path(image_dir).is_dir(): + raise NotADirectoryError(f"Image directory {image_dir} does not exist.") + + # build a reference to the observations + frame_files = { + "images": { + channel_map[filename_code]: sorted( + files, key=lambda x: extract_z_slice_number_from_filename(x.name) + ) + for filename_code, files in groupby( + sorted( + [ + file + for file in os.scandir(image_dir) + if (file.name.endswith(".tif") or file.name.endswith(".tiff")) + and file.name.split("_")[1] != "Merge" + ], + key=lambda x: x.name.split("_")[1], + ), + key=lambda x: x.name.split("_")[1], + ) + } + } + + if label_dir is not None: + frame_files["labels"] = { + f"{pathlib.Path(label_name).stem} (labels)": next(iter(file)) + for label_name, file in groupby( + sorted( + os.scandir(label_dir), + key=lambda x: x.name.split("_")[0], + ), + key=lambda x: x.name.split("_")[0], + ) + } + + # Debug: show channel keys and file counts + if debug: + print(frame_files["images"].keys()) + for channel, files in frame_files["images"].items(): + print(f"Channel: {channel}, Files: {len(files)}") + for file in files: + print(f" {file.name}") + + # Load images into memory via stacks + frame_zstacks = { + "images": { + channel: np.stack( + [tiff.imread(file.path) for file in files], axis=0 + ).astype(np.uint16) + for channel, files in frame_files["images"].items() + } + } + + if label_dir: + frame_zstacks["labels"] = { + channel: tiff.imread(tiff_file.path).astype(np.uint16) + for channel, tiff_file in frame_files["labels"].items() + } + + # Debug: show stack shapes + if debug: + for channel, stack in frame_zstacks["images"].items(): + print(f"Channel: {channel}, Stack shape: {stack.shape}") + + # Clean up any previous output + if overwrite and pathlib.Path(output_path).is_dir(): + shutil.rmtree(output_path, ignore_errors=True) + elif pathlib.Path(output_path).is_dir(): + raise FileExistsError( + f"Output path {output_path} already exists. Use overwrite=True to overwrite." + ) + + # Parse URL and ensure store is compatible + store = zarr_parse_url(output_path, mode="w").store + # Ensure we are working with a Zarr group + root = zarr.group(store, overwrite=True) + + # create scaling metadata + scale_metadata = [ + { + "datasets": [ + { + "path": "0", # Path to the dataset + "coordinateTransformations": [ + { + "type": "scale", + "scale": list(scaling_values), + } # Apply scaling values + ], + } + ], + "axes": [ + { + "name": "z", + "unit": "micrometer", + "type": "space", + }, # Define the z-axis + { + "name": "y", + "unit": "micrometer", + "type": "space", + }, # Define the y-axis + { + "name": "x", + "unit": "micrometer", + "type": "space", + }, # Define the x-axis + ], + } + ] + + # Write each channel separately to the Zarr file with no compression + # Save images to OME-Zarr format + images_group = root.create_group("images") + for channel, stack in frame_zstacks["images"].items(): + zarr_write_image( + image=stack, + group=(group := images_group.create_group(channel)), + axes="zyx", # Specify the axes order for each channel + dtype="uint16", # Ensure the dtype is set correctly + scaler=None, # Disable scaler + ) + # Set the units attribute for the group to "micrometers" + group.attrs["units"] = "micrometers" + + # Define the multiscales metadata for the group + group.attrs["multiscales"] = scale_metadata + + if label_dir: + # Save masks to OME-Zarr format + labels_group = root.create_group("labels") + for compartment_name, stack in frame_zstacks["labels"].items(): + zarr_write_image( + image=stack, + group=(group := labels_group.create_group(compartment_name)), + axes="zyx", # Specify the axes order for each mask + dtype="uint16", # Ensure the dtype is set correctly + scaler=None, # Disable scaler + ) + # Set the units attribute for the group to "micrometers" + group.attrs["units"] = "micrometers" + + # Define the multiscales metadata for the group + group.attrs["multiscales"] = scale_metadata + + print(f"OME-Zarr written to {output_path}") + + # Debug: show shape of input + if debug: + print( + f"Shape of input: {np.array(list(frame_zstacks['images'].values())).shape}" + ) + + # Check Zarr file structure + frame_zarr = zarr.open(output_path, mode="r") + if debug: + print(frame_zarr.tree()) + + return output_path + + + + +def tiff_to_ometiff( + image_dir: str, + label_dir: Optional[str], + output_path: str, + channel_map: Dict[str, str], + scaling_values: Union[List[int], Tuple[int]], + overwrite: bool = False, + debug: bool = False, +) -> str: + """ + Convert TIFF files to OME-TIFF format. + + Args: + image_dir (str): + Directory containing TIFF image files. + label_dir (Optional[str]): + Directory containing label TIFF files. + output_path (str): + Path to save the output OME-TIFF file. + channel_map (Dict[str, str]): + Mapping from filename codes to channel names. + scaling_values (Union[List[int], Tuple[int]]): + Scaling values for the images. + overwrite (bool): + Whether to overwrite existing output. Default is False. + debug (bool): + Whether to print debug information. Default is False. + + Returns: + str: Path to the output OME-TIFF file. + """ + + if not pathlib.Path(image_dir).is_dir(): + raise NotADirectoryError(f"Image directory {image_dir} does not exist.") + + # build a reference to the observations + frame_files = { + "images": { + channel_map.get(filename_code, f"Unknown_{filename_code}"): sorted( + files, key=lambda x: extract_z_slice_number_from_filename(x.name) + ) + for filename_code, files in groupby( + sorted( + [ + file + for file in os.scandir(image_dir) + if (file.name.endswith(".tif") or file.name.endswith(".tiff")) + and file.name.split("_")[1] != "Merge" + ], + key=lambda x: x.name.split("_")[1], + ), + key=lambda x: x.name.split("_")[1], + ) + } + } + + if label_dir: + frame_files["labels"] = { + label_name: next(iter(file)) + for label_name, file in groupby( + sorted( + pathlib.Path(label_dir).glob("*.tiff"), + key=lambda x: x.name.split("_")[0], + ), + key=lambda x: x.name.split("_")[0], + ) + } + + # Debug: show channel keys and file counts + if debug: + print("Frame files (images):") + for channel, files in frame_files["images"].items(): + print(f"Channel: {channel}, Files: {[file.name for file in files]}") + + if "labels" in frame_files: + print("Frame files (labels):") + for label, file in frame_files["labels"].items(): + print(f"Label: {label}, File: {file.name}") + + # Load images into memory via stacks + frame_zstacks = { + "images": { + channel: np.stack( + [tiff.imread(file.path) for file in files], axis=0 + ).astype(np.uint16) + for channel, files in frame_files["images"].items() + } + } + + if label_dir: + frame_zstacks["labels"] = { + channel: tiff.imread(tiff_file.path).astype(np.uint16) + for channel, tiff_file in frame_files["labels"].items() + } + + # Debug: show stack shapes + if debug: + for channel, stack in frame_zstacks["images"].items(): + print(f"Channel: {channel}, Stack shape: {stack.shape}") + + if "labels" in frame_zstacks: + for label, stack in frame_zstacks["labels"].items(): + print(f"Label: {label}, Stack shape: {stack.shape}") + + if overwrite: + # Clean up any previous output + shutil.rmtree(output_path, ignore_errors=True) + + # Prepare the data for writing + images_data = [] + labels_data = [] + channel_names = [] + label_names = [] + + # Collect image data + for channel, stack in frame_zstacks["images"].items(): + images_data.append(stack) + channel_names.append(channel) + + # Collect label data + if label_dir: + for compartment_name, stack in frame_zstacks["labels"].items(): + labels_data.append(stack) + label_names.append(f"{compartment_name} (labels)") + + # Stack the images and labels along a new axis for channels + images_data = np.stack(images_data, axis=0) + if labels_data: + labels_data = np.stack(labels_data, axis=0) + combined_data = np.concatenate((images_data, labels_data), axis=0) + combined_channel_names = channel_names + label_names + else: + combined_data = images_data + combined_channel_names = channel_names + + # Generate OME-XML metadata + ome_metadata = { + "SizeC": combined_data.shape[0], + "SizeZ": combined_data.shape[1], + "SizeY": combined_data.shape[2], + "SizeX": combined_data.shape[3], + "PhysicalSizeX": scaling_values[2], + "PhysicalSizeY": scaling_values[1], + "PhysicalSizeZ": scaling_values[0], + # note: we use 7-bit ascii compatible characters below + "PhysicalSizeXUnit": "um", + "PhysicalSizeYUnit": "um", + "PhysicalSizeZUnit": "um", + "Channel": [{"Name": name} for name in combined_channel_names], + } + ome_xml = generate_ome_xml(ome_metadata) + + # Write the combined data to a single OME-TIFF + with tiff.TiffWriter(output_path, bigtiff=True) as tif: + tif.write(combined_data, description=ome_xml, photometric='minisblack') + + if debug: + print(f"OME-TIFF written to {output_path}") + + return output_path diff --git a/src/nviz/meta.py b/src/nviz/meta.py new file mode 100644 index 0000000..c8d6465 --- /dev/null +++ b/src/nviz/meta.py @@ -0,0 +1,107 @@ +""" +Viewing utilities for GFF 3D organoid project +""" + +import re +import xml.etree.ElementTree as ET +from typing import Optional, Tuple, Dict +from xml.etree.ElementTree import Element, SubElement, tostring + +def extract_z_slice_number_from_filename(filename: str) -> int: + """ + Extracts a z-slice number from a filename. + Follows conventions from images which are produced + to our knowledge by ZEISS LSM 880 with Airyscan + microscope output. + + Assumes the z-slice number + is a zero-padded number in the filename + with the pattern '_ZS###_'. + + Args: + filename (str): + The name of the file from which to extract the z-slice number. + + Returns: + int: + The extracted z-slice number. Returns 0 if the pattern is not found. + """ + match = re.search(r"_ZS(\d+)_", filename) + return int(match.group(1)) if match else 0 + + +def gather_scaling_info_from_scaninfoxml( + xml_file: str, +) -> Tuple[Optional[float], Optional[float], Optional[float]]: + """ + Reads the scan information from an XML file and + returns the values of ZStackSpacingMicrons, + MicronsPerPixelY, and MicronsPerPixelX. + + This function specifically caters to a file named + ScanInfo.xml which is included to our knowledge within + ZEISS LSM 880 with Airyscan microscope output (and perhaps + others). + + Args: + xml_file (str): + Path to the XML file. + + Returns: + Tuple[Optional[float], Optional[float], Optional[float]]: + A tuple containing the values of + ZStackSpacingMicrons, MicronsPerPixelY, + and MicronsPerPixelX. If a value is not found, + it will be None. + """ + tree = ET.parse(xml_file) + root = tree.getroot() + + microns_per_pixel_y: Optional[float] = None + microns_per_pixel_x: Optional[float] = None + z_stack_spacing_microns: Optional[float] = None + + for setting in root.findall(".//Setting"): + param = setting.get("Parameter") + if param == "MicronsPerPixelY": + microns_per_pixel_y = float(setting.text) + elif param == "MicronsPerPixelX": + microns_per_pixel_x = float(setting.text) + elif param == "ZStackSpacingMicrons": + z_stack_spacing_microns = float(setting.text) + + return (z_stack_spacing_microns, microns_per_pixel_y, microns_per_pixel_x) + +def generate_ome_xml(metadata: Dict) -> str: + """ + Generate OME-XML metadata for use within an OME-TIFF file. + + Args: + metadata (Dict): Dictionary containing metadata. + + Returns: + str: OME-XML string. + """ + ome = Element('OME', xmlns="http://www.openmicroscopy.org/Schemas/OME/2016-06") + image = SubElement(ome, 'Image', ID="Image:0") + pixels = SubElement(image, 'Pixels', { + 'ID': 'Pixels:0', + 'Type': 'uint16', + 'DimensionOrder': 'CZYX', + 'SizeC': str(metadata['SizeC']), + 'SizeZ': str(metadata['SizeZ']), + 'SizeY': str(metadata['SizeY']), + 'SizeX': str(metadata['SizeX']), + 'PhysicalSizeX': str(metadata['PhysicalSizeX']), + 'PhysicalSizeY': str(metadata['PhysicalSizeY']), + 'PhysicalSizeZ': str(metadata['PhysicalSizeZ']), + 'PhysicalSizeXUnit': metadata['PhysicalSizeXUnit'], + 'PhysicalSizeYUnit': metadata['PhysicalSizeYUnit'], + 'PhysicalSizeZUnit': metadata['PhysicalSizeZUnit'], + }) + for i, channel in enumerate(metadata['Channel']): + SubElement(pixels, 'Channel', { + 'ID': f'Channel:0:{i}', + 'Name': channel['Name'], + }) + return tostring(ome, encoding='unicode') \ No newline at end of file diff --git a/src/nviz/view.py b/src/nviz/view.py new file mode 100644 index 0000000..85612c9 --- /dev/null +++ b/src/nviz/view.py @@ -0,0 +1,115 @@ +""" +Utilities for viewing n-dimensional data +""" + +import pathlib +import napari +import zarr +from typing import Optional +import tifffile as tiff +import xmltodict + +def view_zarr_with_napari(zarr_dir: str, scaling_values: tuple, headless: bool = False) -> Optional[napari.Viewer]: + """ + View a Zarr file created with nviz through napari. + + Args: + zarr_dir (str): + The path to the Zarr file. + scaling_values (tuple): + The scaling values for the image. + headless (bool): + Whether to run in headless mode + (where we don't run napari and hand + back the viewer object instead). + + Returns: + Optional[napari.Viewer]]: + The napari viewer object if not headless, + otherwise None. + """ + # Check Zarr file structure + frame_zarr = zarr.open(zarr_dir, mode="r") + + # Visualize with napari, start in 3d mode + viewer = napari.Viewer(ndisplay=3) + + # Iterate through each channel in the Zarr file + for channel_name in sorted(frame_zarr["images"].keys(), reverse=True): + viewer.add_image( + frame_zarr["images"][channel_name]["0"][:], + name=channel_name, + scale=scaling_values, + ) + + # Iterate through each compartment in the Zarr file and add labels to Napari + if "labels" in frame_zarr: + for label_name in sorted(frame_zarr["labels"].keys(), reverse=True): + viewer.add_labels( + frame_zarr["labels"][label_name]["0"][:], + name=f"{label_name} (label)", + scale=scaling_values, + ) + + if not headless: + # Start the Napari event loop + napari.run() + + # otherwise return the viewer + return viewer + +def view_ometiff_with_napari(ometiff_path: str, scaling_values: tuple, headless: bool = False) -> Optional[napari.Viewer]: + """ + View a OME-TIFF file created with nviz through napari. + + Args: + ometiff_path (str): + The path to the OME-TIFF file. + scaling_values (tuple): + The scaling values for the image. + headless (bool): + Whether to run in headless mode + (where we don't run napari and hand + back the viewer object instead). + + Returns: + Optional[napari.Viewer]]: + The napari viewer object if not headless, + otherwise None. + """ + + # Visualize with napari, start in 3d mode + viewer = napari.Viewer(ndisplay=3) + + # Read and add layers from the combined OME-TIFF file + with tiff.TiffFile(ometiff_path) as tif: + combined_data = tif.asarray() + metadata = xmltodict.parse(tif.ome_metadata) + channel_names = [ + channel["@Name"] for channel in metadata["OME"]["Image"]["Pixels"]["Channel"] + ] + + # First, add image layers + for i, (channel_data, channel_name) in enumerate(zip(combined_data, channel_names)): + if "(labels)" not in channel_name: + viewer.add_image( + channel_data, + name=channel_name, + scale=scaling_values, + ) + + # Then, add label layers + for i, (channel_data, channel_name) in enumerate(zip(combined_data, channel_names)): + if "(labels)" in channel_name: + viewer.add_labels( + channel_data, + name=channel_name, + scale=scaling_values, + ) + + if not headless: + # Start the Napari event loop + napari.run() + + # otherwise return the viewer + return viewer diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/random_tiff_z_stacks/ScanInfo.xml b/tests/data/random_tiff_z_stacks/ScanInfo.xml new file mode 100644 index 0000000..0a7c7f3 --- /dev/null +++ b/tests/data/random_tiff_z_stacks/ScanInfo.xml @@ -0,0 +1,16 @@ + + + + 0.0.0.0 + + + 0.1006 + 0.1006 + + + + + 1.000 + + + diff --git a/tests/data/random_tiff_z_stacks/generate_data.py b/tests/data/random_tiff_z_stacks/generate_data.py new file mode 100644 index 0000000..e269dc8 --- /dev/null +++ b/tests/data/random_tiff_z_stacks/generate_data.py @@ -0,0 +1,108 @@ +""" +Generates example z-stack TIFF files with randomized data for testing. +""" +import pathlib +import shutil +import numpy as np +import tifffile as tiff + +# human readable channel names +channels = [ + "Channel A", + "Channel B", + "Channel C", + "Channel D", + "Channel E", +] + +# map human readable channel names to machine ones +# which simulate what is produced by the microscope +# or teams who create images. +channels_map = { + "Channel A": "111", + "Channel B": "222", + "Channel C": "333", + "Channel D": "444", + "Channel E": "555", +} + +# gather a relative path +relpath = pathlib.Path(__file__).parent + +# Set common static scaling values +scaling_values = (1.0, 0.1, 0.1) # (z, y, x) in microns + +# Generate random data for z-slices +num_z_slices = 10 +image_shape = (100, 100) # Example shape, adjust as needed + +# create random data for each channel +channels = { + channel: [ + np.random.randint(0, 65535, size=image_shape, dtype=np.uint16) + for _ in range(num_z_slices) + ] + for channel in channels +} + +# Debug: show channel keys and file counts +print(channels.keys()) +for channel, files in channels.items(): + print(f"Channel: {channel}, Slices: {len(files)}") + +# Define the output directory +output_dir = relpath / "Z99" +pathlib.Path(output_dir).mkdir(exist_ok=True) + +# Write each z-slice as a separate TIFF file +for channel, z_slices in channels.items(): + for z_index, z_slice in enumerate(z_slices): + filename = f"Z99_{channels_map[channel]}_ZS{z_index:03d}.tif" + filepath = output_dir / filename + tiff.imwrite(filepath, z_slice) + +print(f"TIFF files written to {output_dir}") + +# Create a single multidimensional TIFF file with sphere shapes +def create_sphere_image(shape, radius, center): + """Create a 3D image with a sphere.""" + z, y, x = np.indices(shape) + distance = np.sqrt((z - center[0])**2 + (y - center[1])**2 + (x - center[2])**2) + sphere = (distance <= radius).astype(np.uint16) * 65535 + return sphere + +sphere_radius = 20 +sphere_center = (num_z_slices // 2, image_shape[0] // 2, image_shape[1] // 2) +sphere_image = create_sphere_image((num_z_slices, *image_shape), sphere_radius, sphere_center) + +# create a path for labels +label_path = output_dir.parent / "labels" +pathlib.Path(label_path).mkdir(exist_ok=True) + +# Write the sphere image as a single multidimensional TIFF file +sphere_tiff_path = label_path / "compartment.tif" +tiff.imwrite(sphere_tiff_path, sphere_image, photometric='minisblack') + +print(f"Sphere TIFF file written to {sphere_tiff_path}") + +scaninfo_file = relpath / "ScanInfo.xml" + +with open(scaninfo_file, "w") as file: + file.write( +""" + + + 0.0.0.0 + + + 0.1006 + 0.1006 + + + + + 1.000 + + + +""") \ No newline at end of file diff --git a/tests/test_image.py b/tests/test_image.py new file mode 100644 index 0000000..9b1799a --- /dev/null +++ b/tests/test_image.py @@ -0,0 +1,112 @@ +""" +Tests for the image module. +""" + +import pytest +import numpy as np +import tifffile as tiff +from typing import Dict, Tuple, Optional, List +from pathlib import Path +from nviz.image import tiff_to_zarr, tiff_to_ometiff +import zarr +import pathlib +import xml.etree.ElementTree as ET +from tests.utils import example_data_for_image_tests + + +@pytest.mark.parametrize( + "image_dir, label_dir, output_path, channel_map, scaling_values, expected_labels", + example_data_for_image_tests +) +def test_tiff_to_zarr( + image_dir: str, + label_dir: Optional[str], + output_path: str, + channel_map: Dict[str, str], + scaling_values: Tuple[int, int, int], + expected_labels: List[str], + tmp_path: pathlib.Path, +): + """ + Tests the tiff_to_zarr function. + """ + + output_path = tiff_to_zarr( + image_dir=image_dir, + label_dir=label_dir, + output_path=f"{tmp_path}/{output_path}", + channel_map=channel_map, + scaling_values=scaling_values, + overwrite=False, + debug=False, + ) + + # Check if the output path exists + assert Path(output_path).exists() + + # Check if the Zarr structure is correct + zarr_root = zarr.open(output_path, mode="r") + assert "images" in list(zarr_root.keys()) + + # check if we have labels if we supplied them + if label_dir is not None: + assert "labels" in zarr_root + + for channel in channel_map.values(): + assert channel in list(zarr_root["images"]) + + # check if we have labels if we supplied them + if label_dir is not None: + assert all( + expected_label in list(zarr_root["labels"].keys()) + for expected_label in expected_labels + ) + +@pytest.mark.parametrize( + "image_dir, label_dir, output_path, channel_map, scaling_values, expected_labels", + example_data_for_image_tests +) +def test_tiff_to_ometiff(image_dir: str, + label_dir: Optional[str], + output_path: str, + channel_map: Dict[str, str], + scaling_values: Tuple[int, int, int], + expected_labels: List[str], + tmp_path: pathlib.Path,): + """ + Tests the tiff_to_ometiff function. + """ + + output_path = tiff_to_ometiff( + image_dir=image_dir, + label_dir=label_dir, + output_path=f"{tmp_path}/{output_path}", + channel_map=channel_map, + scaling_values=scaling_values, + overwrite=False, + debug=False, + ) + + # Check if the output path exists + assert Path(output_path).exists() + + # Read the OME-TIFF file and check its contents + # Read the OME-TIFF file and check its contents + with tiff.TiffFile(output_path) as tif: + assert len(tif.pages) > 0 + metadata = tif.ome_metadata + assert metadata is not None + + # Parse the OME-XML metadata + root = ET.fromstring(metadata) + channels = root.find('.//{http://www.openmicroscopy.org/Schemas/OME/2016-06}Pixels').findall('{http://www.openmicroscopy.org/Schemas/OME/2016-06}Channel') + + # Check the metadata for channels + for channel in channel_map.values(): + assert any(channel == ch.get('Name') for ch in channels) + + # Check the metadata for physical sizes + pixels = root.find('.//{http://www.openmicroscopy.org/Schemas/OME/2016-06}Pixels') + assert pixels.get('PhysicalSizeX') == str(scaling_values[2]) + assert pixels.get('PhysicalSizeY') == str(scaling_values[1]) + assert pixels.get('PhysicalSizeZ') == str(scaling_values[0]) diff --git a/tests/test_meta.py b/tests/test_meta.py new file mode 100644 index 0000000..da2aff1 --- /dev/null +++ b/tests/test_meta.py @@ -0,0 +1,177 @@ +""" +Tests for nviz/view.py +""" + +import pathlib +from typing import Optional, Tuple +from xml.etree.ElementTree import fromstring +import pytest + +from nviz.meta import ( + extract_z_slice_number_from_filename, + gather_scaling_info_from_scaninfoxml, + generate_ome_xml +) + + +@pytest.mark.parametrize( + "filename, expected", + [ + ("C10-1_405_ZS034_FOV-1.tif", 34), + ("C10-1_405_ZS018_FOV-1.tif", 18), + ("C10-1_405_ZS039_FOV-1.tif", 39), + ("C10-1_405_ZS043_FOV-1.tif", 43), + ("C10-1_405_ZS033_FOV-1.tif", 33), + ("C10-1_405_ZS027_FOV-1.tif", 27), + ("C10-1_405_ZS006_FOV-1.tif", 6), + ("C10-1_405_FOV-1.tif", 0), # No ZS pattern + ("C10-1_405_ZS_FOV-1.tif", 0), # Incomplete ZS pattern + ], +) +def test_extract_z_slice_number_from_filename(filename: str, expected: int): + """ + Tests extract_z_slice_number_from_filename + """ + assert extract_z_slice_number_from_filename(filename) == expected + + +@pytest.mark.parametrize( + "xml_content, expected", + [ + ( + """ + + + + 0.1006 + 0.1006 + + + + + 1.000 + + + """, + (1.000, 0.1006, 0.1006), + ), + ( + """ + + + + 0.200 + 0.200 + + + + + 2.000 + + + """, + (2.000, 0.200, 0.200), + ), + ( + """ + + + + 0.300 + + + + + 3.000 + + + """, + (3.000, None, 0.300), + ), + ], +) +def test_gather_scaling_info_from_scaninfoxml( + xml_content: str, + expected: Tuple[Optional[float], Optional[float], Optional[float]], + tmp_path: pathlib.Path, +): + """ + Tests gather_scaling_info_from_scaninfoxml + """ + + # write a temp file + xml_file = tmp_path / "temp_scaninfo.xml" + xml_file.write_text(xml_content) + + # check the results + assert gather_scaling_info_from_scaninfoxml(xml_file) == expected + +@pytest.mark.parametrize( + "metadata, expected_channels", + [ + ( + { + "SizeC": 3, + "SizeZ": 10, + "SizeY": 512, + "SizeX": 512, + "PhysicalSizeX": 0.1, + "PhysicalSizeY": 0.1, + "PhysicalSizeZ": 1.0, + "PhysicalSizeXUnit": "um", + "PhysicalSizeYUnit": "um", + "PhysicalSizeZUnit": "um", + "Channel": [ + {"Name": "Channel A"}, + {"Name": "Channel B"}, + {"Name": "Channel C"}, + ], + }, + ["Channel A", "Channel B", "Channel C"], + ), + ( + { + "SizeC": 2, + "SizeZ": 5, + "SizeY": 256, + "SizeX": 256, + "PhysicalSizeX": 0.2, + "PhysicalSizeY": 0.2, + "PhysicalSizeZ": 2.0, + "PhysicalSizeXUnit": "um", + "PhysicalSizeYUnit": "um", + "PhysicalSizeZUnit": "um", + "Channel": [ + {"Name": "Channel X"}, + {"Name": "Channel Y"}, + ], + }, + ["Channel X", "Channel Y"], + ), + ], +) +def test_generate_ome_xml(metadata, expected_channels): + ome_xml = generate_ome_xml(metadata) + + # Parse the generated OME-XML + root = fromstring(ome_xml) + + # Verify the Pixels attributes + pixels = root.find('.//{http://www.openmicroscopy.org/Schemas/OME/2016-06}Pixels') + assert pixels is not None + assert pixels.get('SizeC') == str(metadata['SizeC']) + assert pixels.get('SizeZ') == str(metadata['SizeZ']) + assert pixels.get('SizeY') == str(metadata['SizeY']) + assert pixels.get('SizeX') == str(metadata['SizeX']) + assert pixels.get('PhysicalSizeX') == str(metadata['PhysicalSizeX']) + assert pixels.get('PhysicalSizeY') == str(metadata['PhysicalSizeY']) + assert pixels.get('PhysicalSizeZ') == str(metadata['PhysicalSizeZ']) + assert pixels.get('PhysicalSizeXUnit') == metadata['PhysicalSizeXUnit'] + assert pixels.get('PhysicalSizeYUnit') == metadata['PhysicalSizeYUnit'] + assert pixels.get('PhysicalSizeZUnit') == metadata['PhysicalSizeZUnit'] + + # Verify the Channel names + channels = pixels.findall('{http://www.openmicroscopy.org/Schemas/OME/2016-06}Channel') + assert len(channels) == len(expected_channels) + for i, channel in enumerate(channels): + assert channel.get('Name') == expected_channels[i] \ No newline at end of file diff --git a/tests/test_view.py b/tests/test_view.py new file mode 100644 index 0000000..d12af62 --- /dev/null +++ b/tests/test_view.py @@ -0,0 +1,78 @@ +""" +Tests for the view module +""" + +import pathlib +from typing import Dict, List, Optional, Tuple + +import pytest + +from nviz.image import tiff_to_ometiff, tiff_to_zarr +from nviz.view import view_ometiff_with_napari, view_zarr_with_napari +from tests.utils import example_data_for_image_tests + + +@pytest.mark.parametrize( + "image_dir, label_dir, output_path, channel_map, scaling_values, expected_labels", + example_data_for_image_tests, +) +def test_view_zarr_with_napari( + image_dir: str, + label_dir: Optional[str], + output_path: str, + channel_map: Dict[str, str], + scaling_values: Tuple[int, int, int], + expected_labels: List[str], + tmp_path: pathlib.Path, +): + """ + Tests the view_zarr_with_napari function. + """ + + zarr_dir = tiff_to_zarr( + image_dir=image_dir, + label_dir=label_dir, + output_path=f"{tmp_path}/{output_path}", + channel_map=channel_map, + scaling_values=scaling_values, + overwrite=False, + debug=False, + ) + + # Call the function + view_zarr_with_napari( + zarr_dir=zarr_dir, scaling_values=scaling_values, headless=True + ) + + +@pytest.mark.parametrize( + "image_dir, label_dir, output_path, channel_map, scaling_values, expected_labels", + example_data_for_image_tests, +) +def test_view_ometiff_with_napari( + image_dir: str, + label_dir: Optional[str], + output_path: str, + channel_map: Dict[str, str], + scaling_values: Tuple[int, int, int], + expected_labels: List[str], + tmp_path: pathlib.Path, +): + """ + Tests the view_ometiff_with_napari function. + """ + + ometiff_path = tiff_to_ometiff( + image_dir=image_dir, + label_dir=label_dir, + output_path=f"{tmp_path}/{output_path}", + channel_map=channel_map, + scaling_values=scaling_values, + overwrite=False, + debug=False, + ) + + # Call the function + view_ometiff_with_napari( + ometiff_path=ometiff_path, scaling_values=scaling_values, headless=True + ) diff --git a/tests/utils.py b/tests/utils.py new file mode 100644 index 0000000..572f024 --- /dev/null +++ b/tests/utils.py @@ -0,0 +1,36 @@ +""" +Utilities for testing. +""" + +example_data_for_image_tests = [ + # test example data without labels + ( + "tests/data/random_tiff_z_stacks/Z99", + None, + "output.zarr", + { + "111": "Channel A", + "222": "Channel B", + "333": "Channel C", + "444": "Channel D", + "555": "Channel E", + }, + (1.0, 0.1, 0.1), + None + ), + # test example data with labels + ( + "tests/data/random_tiff_z_stacks/Z99", + "tests/data/random_tiff_z_stacks/labels", + "output.zarr", + { + "111": "Channel A", + "222": "Channel B", + "333": "Channel C", + "444": "Channel D", + "555": "Channel E", + }, + (1.0, 0.1, 0.1), + ["compartment (labels)"] + ), + ] \ No newline at end of file diff --git a/uv.lock b/uv.lock new file mode 100644 index 0000000..d805ada --- /dev/null +++ b/uv.lock @@ -0,0 +1,2867 @@ +version = 1 +requires-python = ">=3.11" +resolution-markers = [ + "python_full_version < '3.12' and sys_platform != 'win32'", + "python_full_version < '3.12' and sys_platform == 'win32'", + "python_full_version >= '3.13' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and sys_platform != 'win32'", + "python_full_version >= '3.13' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and sys_platform == 'win32'", +] + +[[package]] +name = "aiohappyeyeballs" +version = "2.4.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7f/55/e4373e888fdacb15563ef6fa9fa8c8252476ea071e96fb46defac9f18bf2/aiohappyeyeballs-2.4.4.tar.gz", hash = "sha256:5fdd7d87889c63183afc18ce9271f9b0a7d32c2303e394468dd45d514a757745", size = 21977 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/74/fbb6559de3607b3300b9be3cc64e97548d55678e44623db17820dbd20002/aiohappyeyeballs-2.4.4-py3-none-any.whl", hash = "sha256:a980909d50efcd44795c4afeca523296716d50cd756ddca6af8c65b996e27de8", size = 14756 }, +] + +[[package]] +name = "aiohttp" +version = "3.11.10" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiohappyeyeballs" }, + { name = "aiosignal" }, + { name = "attrs" }, + { name = "frozenlist" }, + { name = "multidict" }, + { name = "propcache" }, + { name = "yarl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/94/c4/3b5a937b16f6c2a0ada842a9066aad0b7a5708427d4a202a07bf09c67cbb/aiohttp-3.11.10.tar.gz", hash = "sha256:b1fc6b45010a8d0ff9e88f9f2418c6fd408c99c211257334aff41597ebece42e", size = 7668832 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/db/7c/584d5ca19343c9462d054337828f72628e6dc204424f525df59ebfe75d1e/aiohttp-3.11.10-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:77c4aa15a89847b9891abf97f3d4048f3c2d667e00f8a623c89ad2dccee6771b", size = 708395 }, + { url = "https://files.pythonhosted.org/packages/cd/2d/61c33e01baeb23aebd07620ee4d780ff40f4c17c42289bf02a405f2ac312/aiohttp-3.11.10-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:909af95a72cedbefe5596f0bdf3055740f96c1a4baa0dd11fd74ca4de0b4e3f1", size = 468281 }, + { url = "https://files.pythonhosted.org/packages/ab/70/0ddb3a61b835068eb0badbe8016b4b65b966bad5f8af0f2d63998ff4cfa4/aiohttp-3.11.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:386fbe79863eb564e9f3615b959e28b222259da0c48fd1be5929ac838bc65683", size = 455345 }, + { url = "https://files.pythonhosted.org/packages/44/8c/4e14e9c1767d9a6ab1af1fbad9df9c77e050b39b6afe9e8343ec1ba96508/aiohttp-3.11.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3de34936eb1a647aa919655ff8d38b618e9f6b7f250cc19a57a4bf7fd2062b6d", size = 1685464 }, + { url = "https://files.pythonhosted.org/packages/ef/6e/1bab78ebb4f5a1c54f0fc10f8d52abc06816a9cb1db52b9c908e3d69f9a8/aiohttp-3.11.10-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0c9527819b29cd2b9f52033e7fb9ff08073df49b4799c89cb5754624ecd98299", size = 1743427 }, + { url = "https://files.pythonhosted.org/packages/5d/5e/c1b03bef621a8cc51ff551ef223c6ac606fabe0e35c950f56d01423ec2aa/aiohttp-3.11.10-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65a96e3e03300b41f261bbfd40dfdbf1c301e87eab7cd61c054b1f2e7c89b9e8", size = 1785188 }, + { url = "https://files.pythonhosted.org/packages/7c/b8/df6d76a149cbd969a58da478baec0be617287c496c842ddf21fe6bce07b3/aiohttp-3.11.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98f5635f7b74bcd4f6f72fcd85bea2154b323a9f05226a80bc7398d0c90763b0", size = 1674911 }, + { url = "https://files.pythonhosted.org/packages/ee/8e/e460e7bb820a08cec399971fc3176afc8090dc32fb941f386e0c68bc4ecc/aiohttp-3.11.10-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:03b6002e20938fc6ee0918c81d9e776bebccc84690e2b03ed132331cca065ee5", size = 1619570 }, + { url = "https://files.pythonhosted.org/packages/c2/ae/3b597e09eae4e75b77ee6c65443593d245bfa067ae6a5d895abaf27cce6c/aiohttp-3.11.10-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6362cc6c23c08d18ddbf0e8c4d5159b5df74fea1a5278ff4f2c79aed3f4e9f46", size = 1653772 }, + { url = "https://files.pythonhosted.org/packages/b8/d1/99852f2925992c4d7004e590344e5398eb163750de2a7c1fbe07f182d3c8/aiohttp-3.11.10-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:3691ed7726fef54e928fe26344d930c0c8575bc968c3e239c2e1a04bd8cf7838", size = 1649787 }, + { url = "https://files.pythonhosted.org/packages/39/c0/ea24627e08d722d5a6a00b3f6c9763fe3ad4650b8485f7a7a56ff932e3af/aiohttp-3.11.10-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:31d5093d3acd02b31c649d3a69bb072d539d4c7659b87caa4f6d2bcf57c2fa2b", size = 1732666 }, + { url = "https://files.pythonhosted.org/packages/f1/27/ab52dee4443ef8bdb26473b53c841caafd2bb637a8d85751694e089913bb/aiohttp-3.11.10-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:8b3cf2dc0f0690a33f2d2b2cb15db87a65f1c609f53c37e226f84edb08d10f52", size = 1754910 }, + { url = "https://files.pythonhosted.org/packages/cd/08/57c919d6b1f3b70bc14433c080a6152bf99454b636eb8a88552de8baaca9/aiohttp-3.11.10-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:fbbaea811a2bba171197b08eea288b9402faa2bab2ba0858eecdd0a4105753a3", size = 1692502 }, + { url = "https://files.pythonhosted.org/packages/ae/37/015006f669275735049e0549c37cb79c7a4a9350cbee070bbccb5a5b4b8a/aiohttp-3.11.10-cp311-cp311-win32.whl", hash = "sha256:4b2c7ac59c5698a7a8207ba72d9e9c15b0fc484a560be0788b31312c2c5504e4", size = 416178 }, + { url = "https://files.pythonhosted.org/packages/cf/8d/7bb48ae503989b15114baf9f9b19398c86ae93d30959065bc061b31331ee/aiohttp-3.11.10-cp311-cp311-win_amd64.whl", hash = "sha256:974d3a2cce5fcfa32f06b13ccc8f20c6ad9c51802bb7f829eae8a1845c4019ec", size = 442269 }, + { url = "https://files.pythonhosted.org/packages/25/17/1dbe2f619f77795409c1a13ab395b98ed1b215d3e938cacde9b8ffdac53d/aiohttp-3.11.10-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:b78f053a7ecfc35f0451d961dacdc671f4bcbc2f58241a7c820e9d82559844cf", size = 704448 }, + { url = "https://files.pythonhosted.org/packages/e3/9b/112247ad47e9d7f6640889c6e42cc0ded8c8345dd0033c66bcede799b051/aiohttp-3.11.10-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ab7485222db0959a87fbe8125e233b5a6f01f4400785b36e8a7878170d8c3138", size = 463829 }, + { url = "https://files.pythonhosted.org/packages/8a/36/a64b583771fc673062a7a1374728a6241d49e2eda5a9041fbf248e18c804/aiohttp-3.11.10-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cf14627232dfa8730453752e9cdc210966490992234d77ff90bc8dc0dce361d5", size = 455774 }, + { url = "https://files.pythonhosted.org/packages/e5/75/ee1b8f510978b3de5f185c62535b135e4fc3f5a247ca0c2245137a02d800/aiohttp-3.11.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:076bc454a7e6fd646bc82ea7f98296be0b1219b5e3ef8a488afbdd8e81fbac50", size = 1682134 }, + { url = "https://files.pythonhosted.org/packages/87/46/65e8259432d5f73ca9ebf5edb645ef90e5303724e4e52477516cb4042240/aiohttp-3.11.10-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:482cafb7dc886bebeb6c9ba7925e03591a62ab34298ee70d3dd47ba966370d2c", size = 1736757 }, + { url = "https://files.pythonhosted.org/packages/03/f6/a6d1e791b7153fb2d101278f7146c0771b0e1569c547f8a8bc3035651984/aiohttp-3.11.10-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf3d1a519a324af764a46da4115bdbd566b3c73fb793ffb97f9111dbc684fc4d", size = 1793033 }, + { url = "https://files.pythonhosted.org/packages/a8/e9/1ac90733e36e7848693aece522936a13bf17eeb617da662f94adfafc1c25/aiohttp-3.11.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24213ba85a419103e641e55c27dc7ff03536c4873470c2478cce3311ba1eee7b", size = 1691609 }, + { url = "https://files.pythonhosted.org/packages/6d/a6/77b33da5a0bc04566c7ddcca94500f2c2a2334eecab4885387fffd1fc600/aiohttp-3.11.10-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b99acd4730ad1b196bfb03ee0803e4adac371ae8efa7e1cbc820200fc5ded109", size = 1619082 }, + { url = "https://files.pythonhosted.org/packages/48/94/5bf5f927d9a2fedd2c978adfb70a3680e16f46d178361685b56244eb52ed/aiohttp-3.11.10-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:14cdb5a9570be5a04eec2ace174a48ae85833c2aadc86de68f55541f66ce42ab", size = 1641186 }, + { url = "https://files.pythonhosted.org/packages/99/2d/e85103aa01d1064e51bc50cb51e7b40150a8ff5d34e5a3173a46b241860b/aiohttp-3.11.10-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:7e97d622cb083e86f18317282084bc9fbf261801b0192c34fe4b1febd9f7ae69", size = 1646280 }, + { url = "https://files.pythonhosted.org/packages/7b/e0/44651fda8c1d865a51b3a81f1956ea55ce16fc568fe7a3e05db7fc22f139/aiohttp-3.11.10-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:012f176945af138abc10c4a48743327a92b4ca9adc7a0e078077cdb5dbab7be0", size = 1701862 }, + { url = "https://files.pythonhosted.org/packages/4e/1e/0804459ae325a5b95f6f349778fb465f29d2b863e522b6a349db0aaad54c/aiohttp-3.11.10-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44224d815853962f48fe124748227773acd9686eba6dc102578defd6fc99e8d9", size = 1734373 }, + { url = "https://files.pythonhosted.org/packages/07/87/b8f6721668cad74bcc9c7cfe6d0230b304d1250196b221e54294a0d78dbe/aiohttp-3.11.10-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c87bf31b7fdab94ae3adbe4a48e711bfc5f89d21cf4c197e75561def39e223bc", size = 1694343 }, + { url = "https://files.pythonhosted.org/packages/4b/20/42813fc60d9178ba9b1b86c58a5441ddb6cf8ffdfe66387345bff173bcff/aiohttp-3.11.10-cp312-cp312-win32.whl", hash = "sha256:06a8e2ee1cbac16fe61e51e0b0c269400e781b13bcfc33f5425912391a542985", size = 411118 }, + { url = "https://files.pythonhosted.org/packages/3a/51/df9c263c861ce93998b5ad2ba3212caab2112d5b66dbe91ddbe90c41ded4/aiohttp-3.11.10-cp312-cp312-win_amd64.whl", hash = "sha256:be2b516f56ea883a3e14dda17059716593526e10fb6303189aaf5503937db408", size = 437424 }, + { url = "https://files.pythonhosted.org/packages/8c/1d/88bfdbe28a3d1ba5b94a235f188f27726caf8ade9a0e13574848f44fe0fe/aiohttp-3.11.10-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8cc5203b817b748adccb07f36390feb730b1bc5f56683445bfe924fc270b8816", size = 697755 }, + { url = "https://files.pythonhosted.org/packages/86/00/4c4619d6fe5c5be32f74d1422fc719b3e6cd7097af0c9e03877ca9bd4ebc/aiohttp-3.11.10-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5ef359ebc6949e3a34c65ce20230fae70920714367c63afd80ea0c2702902ccf", size = 460440 }, + { url = "https://files.pythonhosted.org/packages/aa/1c/2f927408f50593a29465d198ec3c57c835c8602330233163e8d89c1093db/aiohttp-3.11.10-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9bca390cb247dbfaec3c664326e034ef23882c3f3bfa5fbf0b56cad0320aaca5", size = 452726 }, + { url = "https://files.pythonhosted.org/packages/06/6a/ff00ed0a2ba45c34b3c366aa5b0004b1a4adcec5a9b5f67dd0648ee1c88a/aiohttp-3.11.10-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:811f23b3351ca532af598405db1093f018edf81368e689d1b508c57dcc6b6a32", size = 1664944 }, + { url = "https://files.pythonhosted.org/packages/02/c2/61923f2a7c2e14d7424b3a526e054f0358f57ccdf5573d4d3d033b01921a/aiohttp-3.11.10-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ddf5f7d877615f6a1e75971bfa5ac88609af3b74796ff3e06879e8422729fd01", size = 1717707 }, + { url = "https://files.pythonhosted.org/packages/8a/08/0d3d074b24d377569ec89d476a95ca918443099c0401bb31b331104e35d1/aiohttp-3.11.10-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6ab29b8a0beb6f8eaf1e5049252cfe74adbaafd39ba91e10f18caeb0e99ffb34", size = 1774890 }, + { url = "https://files.pythonhosted.org/packages/e8/49/052ada2b6e90ed65f0e6a7e548614621b5f8dcd193cb9415d2e6bcecc94a/aiohttp-3.11.10-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c49a76c1038c2dd116fa443eba26bbb8e6c37e924e2513574856de3b6516be99", size = 1676945 }, + { url = "https://files.pythonhosted.org/packages/7c/9e/0c48e1a48e072a869b8b5e3920c9f6a8092861524a4a6f159cd7e6fda939/aiohttp-3.11.10-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7f3dc0e330575f5b134918976a645e79adf333c0a1439dcf6899a80776c9ab39", size = 1602959 }, + { url = "https://files.pythonhosted.org/packages/ab/98/791f979093ff7f67f80344c182cb0ca4c2c60daed397ecaf454cc8d7a5cd/aiohttp-3.11.10-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:efb15a17a12497685304b2d976cb4939e55137df7b09fa53f1b6a023f01fcb4e", size = 1618058 }, + { url = "https://files.pythonhosted.org/packages/7b/5d/2d4b05feb3fd68eb7c8335f73c81079b56e582633b91002da695ccb439ef/aiohttp-3.11.10-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:db1d0b28fcb7f1d35600150c3e4b490775251dea70f894bf15c678fdd84eda6a", size = 1616289 }, + { url = "https://files.pythonhosted.org/packages/50/83/68cc28c00fe681dce6150614f105efe98282da19252cd6e32dfa893bb328/aiohttp-3.11.10-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:15fccaf62a4889527539ecb86834084ecf6e9ea70588efde86e8bc775e0e7542", size = 1685239 }, + { url = "https://files.pythonhosted.org/packages/16/f9/68fc5c8928f63238ce9314f04f3f59d9190a4db924998bb9be99c7aacce8/aiohttp-3.11.10-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:593c114a2221444f30749cc5e5f4012488f56bd14de2af44fe23e1e9894a9c60", size = 1715078 }, + { url = "https://files.pythonhosted.org/packages/3f/e0/3dd3f0451c532c77e35780bafb2b6469a046bc15a6ec2e039475a1d2f161/aiohttp-3.11.10-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7852bbcb4d0d2f0c4d583f40c3bc750ee033265d80598d0f9cb6f372baa6b836", size = 1672544 }, + { url = "https://files.pythonhosted.org/packages/a5/b1/3530ab040dd5d7fb016b47115016f9b3a07ea29593b0e07e53dbe06a380c/aiohttp-3.11.10-cp313-cp313-win32.whl", hash = "sha256:65e55ca7debae8faaffee0ebb4b47a51b4075f01e9b641c31e554fd376595c6c", size = 409984 }, + { url = "https://files.pythonhosted.org/packages/49/1f/deed34e9fca639a7f873d01150d46925d3e1312051eaa591c1aa1f2e6ddc/aiohttp-3.11.10-cp313-cp313-win_amd64.whl", hash = "sha256:beb39a6d60a709ae3fb3516a1581777e7e8b76933bb88c8f4420d875bb0267c6", size = 435837 }, +] + +[[package]] +name = "aiosignal" +version = "1.3.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "frozenlist" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ba/b5/6d55e80f6d8a08ce22b982eafa278d823b541c925f11ee774b0b9c43473d/aiosignal-1.3.2.tar.gz", hash = "sha256:a8c255c66fafb1e499c9351d0bf32ff2d8a0321595ebac3b93713656d2436f54", size = 19424 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/6a/bc7e17a3e87a2985d3e8f4da4cd0f481060eb78fb08596c42be62c90a4d9/aiosignal-1.3.2-py2.py3-none-any.whl", hash = "sha256:45cde58e409a301715980c2b01d0c28bdde3770d8290b5eb2173759d9acb31a5", size = 7597 }, +] + +[[package]] +name = "alabaster" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a6/f8/d9c74d0daf3f742840fd818d69cfae176fa332022fd44e3469487d5a9420/alabaster-1.0.0.tar.gz", hash = "sha256:c00dca57bca26fa62a6d7d0a9fcce65f3e026e9bfe33e9c538fd3fbb2144fd9e", size = 24210 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl", hash = "sha256:fc6786402dc3fcb2de3cabd5fe455a2db534b371124f1f21de8731783dec828b", size = 13929 }, +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, +] + +[[package]] +name = "app-model" +version = "0.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "in-n-out" }, + { name = "psygnal" }, + { name = "pydantic" }, + { name = "pydantic-compat" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/30/c0/8bb00044aa76b487f6140e0b7e538ddfee4825a3c7944657a0a00a36ea1b/app_model-0.3.1.tar.gz", hash = "sha256:2c883fc2a229a23f7f6697fa4ca6fa981fdafca05f76812bfe71a1de9c229c7b", size = 116810 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/75/09/bc782455821f8c8f656b5c87d774997e4b25c8e4894f388981afcd66f276/app_model-0.3.1-py3-none-any.whl", hash = "sha256:06686965c9beb463fae8058a8e1eb5ada22baa1a518ceea2d7702e140b86d64e", size = 64484 }, +] + +[[package]] +name = "appdirs" +version = "1.4.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/d8/05696357e0311f5b5c316d7b95f46c669dd9c15aaeecbb48c7d0aeb88c40/appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41", size = 13470 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/00/2344469e2084fb287c2e0b57b72910309874c3245463acd6cf5e3db69324/appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128", size = 9566 }, +] + +[[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 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321 }, +] + +[[package]] +name = "asciitree" +version = "0.3.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2d/6a/885bc91484e1aa8f618f6f0228d76d0e67000b0fdd6090673b777e311913/asciitree-0.3.3.tar.gz", hash = "sha256:4aa4b9b649f85e3fcb343363d97564aa1fb62e249677f2e18a96765145cc0f6e", size = 3951 } + +[[package]] +name = "asttokens" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4a/e7/82da0a03e7ba5141f05cce0d302e6eed121ae055e0456ca228bf693984bc/asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7", size = 61978 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918 }, +] + +[[package]] +name = "attrs" +version = "24.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/48/c8/6260f8ccc11f0917360fc0da435c5c9c7504e3db174d5a12a1494887b045/attrs-24.3.0.tar.gz", hash = "sha256:8f5c07333d543103541ba7be0e2ce16eeee8130cb0b3f9238ab904ce1e85baff", size = 805984 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/89/aa/ab0f7891a01eeb2d2e338ae8fecbe57fcebea1a24dbb64d45801bfab481d/attrs-24.3.0-py3-none-any.whl", hash = "sha256:ac96cd038792094f438ad1f6ff80837353805ac950cd2aa0e0625ef19850c308", size = 63397 }, +] + +[[package]] +name = "babel" +version = "2.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2a/74/f1bc80f23eeba13393b7222b11d95ca3af2c1e28edca18af487137eefed9/babel-2.16.0.tar.gz", hash = "sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316", size = 9348104 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/20/bc79bc575ba2e2a7f70e8a1155618bb1301eaa5132a8271373a6903f73f8/babel-2.16.0-py3-none-any.whl", hash = "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b", size = 9587599 }, +] + +[[package]] +name = "botocore" +version = "1.36.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jmespath" }, + { name = "python-dateutil" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c6/93/353b70cea6447e37789fc2d6f761fc12ae36fb4adb6f558055de8cdf655f/botocore-1.36.2.tar.gz", hash = "sha256:a1fe6610983f0214b0c7655fe6990b6a731746baf305b182976fc7b568fc3cb0", size = 13505440 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/fe/c066e8cb069027c12dbcf9066a7a4f3e9d2a31b10c7b174a8455ef1d0f46/botocore-1.36.2-py3-none-any.whl", hash = "sha256:bc3b7e3b573a48af2bd7116b80fe24f9a335b0b67314dcb2697a327d009abf29", size = 13302324 }, +] + +[[package]] +name = "build" +version = "1.2.2.post1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "os_name == 'nt'" }, + { name = "packaging" }, + { name = "pyproject-hooks" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7d/46/aeab111f8e06793e4f0e421fcad593d547fb8313b50990f31681ee2fb1ad/build-1.2.2.post1.tar.gz", hash = "sha256:b36993e92ca9375a219c99e606a122ff365a760a2d4bba0caa09bd5278b608b7", size = 46701 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/c2/80633736cd183ee4a62107413def345f7e6e3c01563dbca1417363cf957e/build-1.2.2.post1-py3-none-any.whl", hash = "sha256:1d61c0887fa860c01971625baae8bdd338e517b836a2f70dd1f7aa3a6b2fc5b5", size = 22950 }, +] + +[[package]] +name = "cachey" +version = "0.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "heapdict" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c6/9c/e3c959c1601013bf8a72e8bf91ea1ebc6fe8a2305bd2324b039ee0403277/cachey-0.2.1.tar.gz", hash = "sha256:0310ba8afe52729fa7626325c8d8356a8421c434bf887ac851e58dcf7cf056a6", size = 6461 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/57/f0/e24f3e5d5d539abeb783087b87c26cfb99c259f1126700569e000243745a/cachey-0.2.1-py3-none-any.whl", hash = "sha256:49cf8528496ce3f99d47f1bd136b7c88237e55347a15d880f47cefc0615a83c3", size = 6415 }, +] + +[[package]] +name = "certifi" +version = "2024.12.14" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/bd/1d41ee578ce09523c81a15426705dd20969f5abf006d1afe8aeff0dd776a/certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db", size = 166010 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a5/32/8f6669fc4798494966bf446c8c4a162e0b5d893dff088afddf76414f70e1/certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56", size = 164927 }, +] + +[[package]] +name = "cffi" +version = "1.17.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/f4/927e3a8899e52a27fa57a48607ff7dc91a9ebe97399b357b85a0c7892e00/cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401", size = 182264 }, + { url = "https://files.pythonhosted.org/packages/6c/f5/6c3a8efe5f503175aaddcbea6ad0d2c96dad6f5abb205750d1b3df44ef29/cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf", size = 178651 }, + { url = "https://files.pythonhosted.org/packages/94/dd/a3f0118e688d1b1a57553da23b16bdade96d2f9bcda4d32e7d2838047ff7/cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4", size = 445259 }, + { url = "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", size = 469200 }, + { url = "https://files.pythonhosted.org/packages/1c/a0/a4fa9f4f781bda074c3ddd57a572b060fa0df7655d2a4247bbe277200146/cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1", size = 477235 }, + { url = "https://files.pythonhosted.org/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", size = 459721 }, + { url = "https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", size = 467242 }, + { url = "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", size = 477999 }, + { url = "https://files.pythonhosted.org/packages/44/74/f2a2460684a1a2d00ca799ad880d54652841a780c4c97b87754f660c7603/cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f", size = 454242 }, + { url = "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", size = 478604 }, + { url = "https://files.pythonhosted.org/packages/34/33/e1b8a1ba29025adbdcda5fb3a36f94c03d771c1b7b12f726ff7fef2ebe36/cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655", size = 171727 }, + { url = "https://files.pythonhosted.org/packages/3d/97/50228be003bb2802627d28ec0627837ac0bf35c90cf769812056f235b2d1/cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0", size = 181400 }, + { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178 }, + { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840 }, + { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803 }, + { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850 }, + { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729 }, + { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256 }, + { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424 }, + { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568 }, + { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736 }, + { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448 }, + { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976 }, + { url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989 }, + { url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802 }, + { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792 }, + { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893 }, + { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810 }, + { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200 }, + { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447 }, + { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358 }, + { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469 }, + { url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475 }, + { url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009 }, +] + +[[package]] +name = "cfgv" +version = "3.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/11/74/539e56497d9bd1d484fd863dd69cbbfa653cd2aa27abfe35653494d85e94/cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560", size = 7114 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", size = 7249 }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/4f/e1808dc01273379acc506d18f1504eb2d299bd4131743b9fc54d7be4df1e/charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e", size = 106620 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9c/61/73589dcc7a719582bf56aae309b6103d2762b526bffe189d635a7fcfd998/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c", size = 193339 }, + { url = "https://files.pythonhosted.org/packages/77/d5/8c982d58144de49f59571f940e329ad6e8615e1e82ef84584c5eeb5e1d72/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944", size = 124366 }, + { url = "https://files.pythonhosted.org/packages/bf/19/411a64f01ee971bed3231111b69eb56f9331a769072de479eae7de52296d/charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee", size = 118874 }, + { url = "https://files.pythonhosted.org/packages/4c/92/97509850f0d00e9f14a46bc751daabd0ad7765cff29cdfb66c68b6dad57f/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c", size = 138243 }, + { url = "https://files.pythonhosted.org/packages/e2/29/d227805bff72ed6d6cb1ce08eec707f7cfbd9868044893617eb331f16295/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6", size = 148676 }, + { url = "https://files.pythonhosted.org/packages/13/bc/87c2c9f2c144bedfa62f894c3007cd4530ba4b5351acb10dc786428a50f0/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea", size = 141289 }, + { url = "https://files.pythonhosted.org/packages/eb/5b/6f10bad0f6461fa272bfbbdf5d0023b5fb9bc6217c92bf068fa5a99820f5/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc", size = 142585 }, + { url = "https://files.pythonhosted.org/packages/3b/a0/a68980ab8a1f45a36d9745d35049c1af57d27255eff8c907e3add84cf68f/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5", size = 144408 }, + { url = "https://files.pythonhosted.org/packages/d7/a1/493919799446464ed0299c8eef3c3fad0daf1c3cd48bff9263c731b0d9e2/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594", size = 139076 }, + { url = "https://files.pythonhosted.org/packages/fb/9d/9c13753a5a6e0db4a0a6edb1cef7aee39859177b64e1a1e748a6e3ba62c2/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c", size = 146874 }, + { url = "https://files.pythonhosted.org/packages/75/d2/0ab54463d3410709c09266dfb416d032a08f97fd7d60e94b8c6ef54ae14b/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365", size = 150871 }, + { url = "https://files.pythonhosted.org/packages/8d/c9/27e41d481557be53d51e60750b85aa40eaf52b841946b3cdeff363105737/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129", size = 148546 }, + { url = "https://files.pythonhosted.org/packages/ee/44/4f62042ca8cdc0cabf87c0fc00ae27cd8b53ab68be3605ba6d071f742ad3/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236", size = 143048 }, + { url = "https://files.pythonhosted.org/packages/01/f8/38842422988b795220eb8038745d27a675ce066e2ada79516c118f291f07/charset_normalizer-3.4.0-cp311-cp311-win32.whl", hash = "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99", size = 94389 }, + { url = "https://files.pythonhosted.org/packages/0b/6e/b13bd47fa9023b3699e94abf565b5a2f0b0be6e9ddac9812182596ee62e4/charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27", size = 101752 }, + { url = "https://files.pythonhosted.org/packages/d3/0b/4b7a70987abf9b8196845806198975b6aab4ce016632f817ad758a5aa056/charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6", size = 194445 }, + { url = "https://files.pythonhosted.org/packages/50/89/354cc56cf4dd2449715bc9a0f54f3aef3dc700d2d62d1fa5bbea53b13426/charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf", size = 125275 }, + { url = "https://files.pythonhosted.org/packages/fa/44/b730e2a2580110ced837ac083d8ad222343c96bb6b66e9e4e706e4d0b6df/charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db", size = 119020 }, + { url = "https://files.pythonhosted.org/packages/9d/e4/9263b8240ed9472a2ae7ddc3e516e71ef46617fe40eaa51221ccd4ad9a27/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1", size = 139128 }, + { url = "https://files.pythonhosted.org/packages/6b/e3/9f73e779315a54334240353eaea75854a9a690f3f580e4bd85d977cb2204/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03", size = 149277 }, + { url = "https://files.pythonhosted.org/packages/1a/cf/f1f50c2f295312edb8a548d3fa56a5c923b146cd3f24114d5adb7e7be558/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284", size = 142174 }, + { url = "https://files.pythonhosted.org/packages/16/92/92a76dc2ff3a12e69ba94e7e05168d37d0345fa08c87e1fe24d0c2a42223/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15", size = 143838 }, + { url = "https://files.pythonhosted.org/packages/a4/01/2117ff2b1dfc61695daf2babe4a874bca328489afa85952440b59819e9d7/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8", size = 146149 }, + { url = "https://files.pythonhosted.org/packages/f6/9b/93a332b8d25b347f6839ca0a61b7f0287b0930216994e8bf67a75d050255/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2", size = 140043 }, + { url = "https://files.pythonhosted.org/packages/ab/f6/7ac4a01adcdecbc7a7587767c776d53d369b8b971382b91211489535acf0/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719", size = 148229 }, + { url = "https://files.pythonhosted.org/packages/9d/be/5708ad18161dee7dc6a0f7e6cf3a88ea6279c3e8484844c0590e50e803ef/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631", size = 151556 }, + { url = "https://files.pythonhosted.org/packages/5a/bb/3d8bc22bacb9eb89785e83e6723f9888265f3a0de3b9ce724d66bd49884e/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b", size = 149772 }, + { url = "https://files.pythonhosted.org/packages/f7/fa/d3fc622de05a86f30beea5fc4e9ac46aead4731e73fd9055496732bcc0a4/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565", size = 144800 }, + { url = "https://files.pythonhosted.org/packages/9a/65/bdb9bc496d7d190d725e96816e20e2ae3a6fa42a5cac99c3c3d6ff884118/charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7", size = 94836 }, + { url = "https://files.pythonhosted.org/packages/3e/67/7b72b69d25b89c0b3cea583ee372c43aa24df15f0e0f8d3982c57804984b/charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9", size = 102187 }, + { url = "https://files.pythonhosted.org/packages/f3/89/68a4c86f1a0002810a27f12e9a7b22feb198c59b2f05231349fbce5c06f4/charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114", size = 194617 }, + { url = "https://files.pythonhosted.org/packages/4f/cd/8947fe425e2ab0aa57aceb7807af13a0e4162cd21eee42ef5b053447edf5/charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed", size = 125310 }, + { url = "https://files.pythonhosted.org/packages/5b/f0/b5263e8668a4ee9becc2b451ed909e9c27058337fda5b8c49588183c267a/charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250", size = 119126 }, + { url = "https://files.pythonhosted.org/packages/ff/6e/e445afe4f7fda27a533f3234b627b3e515a1b9429bc981c9a5e2aa5d97b6/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920", size = 139342 }, + { url = "https://files.pythonhosted.org/packages/a1/b2/4af9993b532d93270538ad4926c8e37dc29f2111c36f9c629840c57cd9b3/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64", size = 149383 }, + { url = "https://files.pythonhosted.org/packages/fb/6f/4e78c3b97686b871db9be6f31d64e9264e889f8c9d7ab33c771f847f79b7/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23", size = 142214 }, + { url = "https://files.pythonhosted.org/packages/2b/c9/1c8fe3ce05d30c87eff498592c89015b19fade13df42850aafae09e94f35/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc", size = 144104 }, + { url = "https://files.pythonhosted.org/packages/ee/68/efad5dcb306bf37db7db338338e7bb8ebd8cf38ee5bbd5ceaaaa46f257e6/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d", size = 146255 }, + { url = "https://files.pythonhosted.org/packages/0c/75/1ed813c3ffd200b1f3e71121c95da3f79e6d2a96120163443b3ad1057505/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88", size = 140251 }, + { url = "https://files.pythonhosted.org/packages/7d/0d/6f32255c1979653b448d3c709583557a4d24ff97ac4f3a5be156b2e6a210/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90", size = 148474 }, + { url = "https://files.pythonhosted.org/packages/ac/a0/c1b5298de4670d997101fef95b97ac440e8c8d8b4efa5a4d1ef44af82f0d/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b", size = 151849 }, + { url = "https://files.pythonhosted.org/packages/04/4f/b3961ba0c664989ba63e30595a3ed0875d6790ff26671e2aae2fdc28a399/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d", size = 149781 }, + { url = "https://files.pythonhosted.org/packages/d8/90/6af4cd042066a4adad58ae25648a12c09c879efa4849c705719ba1b23d8c/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482", size = 144970 }, + { url = "https://files.pythonhosted.org/packages/cc/67/e5e7e0cbfefc4ca79025238b43cdf8a2037854195b37d6417f3d0895c4c2/charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67", size = 94973 }, + { url = "https://files.pythonhosted.org/packages/65/97/fc9bbc54ee13d33dc54a7fcf17b26368b18505500fc01e228c27b5222d80/charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b", size = 102308 }, + { url = "https://files.pythonhosted.org/packages/bf/9b/08c0432272d77b04803958a4598a51e2a4b51c06640af8b8f0f908c18bf2/charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079", size = 49446 }, +] + +[[package]] +name = "click" +version = "8.1.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/96/d3/f04c7bfcf5c1862a2a5b845c6b2b360488cf47af55dfa79c98f6a6bf98b5/click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de", size = 336121 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28", size = 97941 }, +] + +[[package]] +name = "cloudpickle" +version = "3.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/97/c7/f746cadd08c4c08129215cf1b984b632f9e579fc781301e63da9e85c76c1/cloudpickle-3.1.0.tar.gz", hash = "sha256:81a929b6e3c7335c863c771d673d105f02efdb89dfaba0c90495d1c64796601b", size = 66155 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/48/41/e1d85ca3cab0b674e277c8c4f678cf66a91cd2cecf93df94353a606fe0db/cloudpickle-3.1.0-py3-none-any.whl", hash = "sha256:fe11acda67f61aaaec473e3afe030feb131d78a43461b718185363384f1ba12e", size = 22021 }, +] + +[[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 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, +] + +[[package]] +name = "comm" +version = "0.2.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e9/a8/fb783cb0abe2b5fded9f55e5703015cdf1c9c85b3669087c538dd15a6a86/comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e", size = 6210 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3", size = 7180 }, +] + +[[package]] +name = "coverage" +version = "7.6.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/84/ba/ac14d281f80aab516275012e8875991bb06203957aa1e19950139238d658/coverage-7.6.10.tar.gz", hash = "sha256:7fb105327c8f8f0682e29843e2ff96af9dcbe5bab8eeb4b398c6a33a16d80a23", size = 803868 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/85/d2/5e175fcf6766cf7501a8541d81778fd2f52f4870100e791f5327fd23270b/coverage-7.6.10-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ea3c8f04b3e4af80e17bab607c386a830ffc2fb88a5484e1df756478cf70d1d3", size = 208088 }, + { url = "https://files.pythonhosted.org/packages/4b/6f/06db4dc8fca33c13b673986e20e466fd936235a6ec1f0045c3853ac1b593/coverage-7.6.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:507a20fc863cae1d5720797761b42d2d87a04b3e5aeb682ef3b7332e90598f43", size = 208536 }, + { url = "https://files.pythonhosted.org/packages/0d/62/c6a0cf80318c1c1af376d52df444da3608eafc913b82c84a4600d8349472/coverage-7.6.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d37a84878285b903c0fe21ac8794c6dab58150e9359f1aaebbeddd6412d53132", size = 240474 }, + { url = "https://files.pythonhosted.org/packages/a3/59/750adafc2e57786d2e8739a46b680d4fb0fbc2d57fbcb161290a9f1ecf23/coverage-7.6.10-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a534738b47b0de1995f85f582d983d94031dffb48ab86c95bdf88dc62212142f", size = 237880 }, + { url = "https://files.pythonhosted.org/packages/2c/f8/ef009b3b98e9f7033c19deb40d629354aab1d8b2d7f9cfec284dbedf5096/coverage-7.6.10-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d7a2bf79378d8fb8afaa994f91bfd8215134f8631d27eba3e0e2c13546ce994", size = 239750 }, + { url = "https://files.pythonhosted.org/packages/a6/e2/6622f3b70f5f5b59f705e680dae6db64421af05a5d1e389afd24dae62e5b/coverage-7.6.10-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6713ba4b4ebc330f3def51df1d5d38fad60b66720948112f114968feb52d3f99", size = 238642 }, + { url = "https://files.pythonhosted.org/packages/2d/10/57ac3f191a3c95c67844099514ff44e6e19b2915cd1c22269fb27f9b17b6/coverage-7.6.10-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ab32947f481f7e8c763fa2c92fd9f44eeb143e7610c4ca9ecd6a36adab4081bd", size = 237266 }, + { url = "https://files.pythonhosted.org/packages/ee/2d/7016f4ad9d553cabcb7333ed78ff9d27248ec4eba8dd21fa488254dff894/coverage-7.6.10-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7bbd8c8f1b115b892e34ba66a097b915d3871db7ce0e6b9901f462ff3a975377", size = 238045 }, + { url = "https://files.pythonhosted.org/packages/a7/fe/45af5c82389a71e0cae4546413266d2195c3744849669b0bab4b5f2c75da/coverage-7.6.10-cp311-cp311-win32.whl", hash = "sha256:299e91b274c5c9cdb64cbdf1b3e4a8fe538a7a86acdd08fae52301b28ba297f8", size = 210647 }, + { url = "https://files.pythonhosted.org/packages/db/11/3f8e803a43b79bc534c6a506674da9d614e990e37118b4506faf70d46ed6/coverage-7.6.10-cp311-cp311-win_amd64.whl", hash = "sha256:489a01f94aa581dbd961f306e37d75d4ba16104bbfa2b0edb21d29b73be83609", size = 211508 }, + { url = "https://files.pythonhosted.org/packages/86/77/19d09ea06f92fdf0487499283b1b7af06bc422ea94534c8fe3a4cd023641/coverage-7.6.10-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:27c6e64726b307782fa5cbe531e7647aee385a29b2107cd87ba7c0105a5d3853", size = 208281 }, + { url = "https://files.pythonhosted.org/packages/b6/67/5479b9f2f99fcfb49c0d5cf61912a5255ef80b6e80a3cddba39c38146cf4/coverage-7.6.10-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c56e097019e72c373bae32d946ecf9858fda841e48d82df7e81c63ac25554078", size = 208514 }, + { url = "https://files.pythonhosted.org/packages/15/d1/febf59030ce1c83b7331c3546d7317e5120c5966471727aa7ac157729c4b/coverage-7.6.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7827a5bc7bdb197b9e066cdf650b2887597ad124dd99777332776f7b7c7d0d0", size = 241537 }, + { url = "https://files.pythonhosted.org/packages/4b/7e/5ac4c90192130e7cf8b63153fe620c8bfd9068f89a6d9b5f26f1550f7a26/coverage-7.6.10-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:204a8238afe787323a8b47d8be4df89772d5c1e4651b9ffa808552bdf20e1d50", size = 238572 }, + { url = "https://files.pythonhosted.org/packages/dc/03/0334a79b26ecf59958f2fe9dd1f5ab3e2f88db876f5071933de39af09647/coverage-7.6.10-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e67926f51821b8e9deb6426ff3164870976fe414d033ad90ea75e7ed0c2e5022", size = 240639 }, + { url = "https://files.pythonhosted.org/packages/d7/45/8a707f23c202208d7b286d78ad6233f50dcf929319b664b6cc18a03c1aae/coverage-7.6.10-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e78b270eadb5702938c3dbe9367f878249b5ef9a2fcc5360ac7bff694310d17b", size = 240072 }, + { url = "https://files.pythonhosted.org/packages/66/02/603ce0ac2d02bc7b393279ef618940b4a0535b0868ee791140bda9ecfa40/coverage-7.6.10-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:714f942b9c15c3a7a5fe6876ce30af831c2ad4ce902410b7466b662358c852c0", size = 238386 }, + { url = "https://files.pythonhosted.org/packages/04/62/4e6887e9be060f5d18f1dd58c2838b2d9646faf353232dec4e2d4b1c8644/coverage-7.6.10-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:abb02e2f5a3187b2ac4cd46b8ced85a0858230b577ccb2c62c81482ca7d18852", size = 240054 }, + { url = "https://files.pythonhosted.org/packages/5c/74/83ae4151c170d8bd071924f212add22a0e62a7fe2b149edf016aeecad17c/coverage-7.6.10-cp312-cp312-win32.whl", hash = "sha256:55b201b97286cf61f5e76063f9e2a1d8d2972fc2fcfd2c1272530172fd28c359", size = 210904 }, + { url = "https://files.pythonhosted.org/packages/c3/54/de0893186a221478f5880283119fc40483bc460b27c4c71d1b8bba3474b9/coverage-7.6.10-cp312-cp312-win_amd64.whl", hash = "sha256:e4ae5ac5e0d1e4edfc9b4b57b4cbecd5bc266a6915c500f358817a8496739247", size = 211692 }, + { url = "https://files.pythonhosted.org/packages/25/6d/31883d78865529257bf847df5789e2ae80e99de8a460c3453dbfbe0db069/coverage-7.6.10-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:05fca8ba6a87aabdd2d30d0b6c838b50510b56cdcfc604d40760dae7153b73d9", size = 208308 }, + { url = "https://files.pythonhosted.org/packages/70/22/3f2b129cc08de00c83b0ad6252e034320946abfc3e4235c009e57cfeee05/coverage-7.6.10-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9e80eba8801c386f72e0712a0453431259c45c3249f0009aff537a517b52942b", size = 208565 }, + { url = "https://files.pythonhosted.org/packages/97/0a/d89bc2d1cc61d3a8dfe9e9d75217b2be85f6c73ebf1b9e3c2f4e797f4531/coverage-7.6.10-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a372c89c939d57abe09e08c0578c1d212e7a678135d53aa16eec4430adc5e690", size = 241083 }, + { url = "https://files.pythonhosted.org/packages/4c/81/6d64b88a00c7a7aaed3a657b8eaa0931f37a6395fcef61e53ff742b49c97/coverage-7.6.10-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ec22b5e7fe7a0fa8509181c4aac1db48f3dd4d3a566131b313d1efc102892c18", size = 238235 }, + { url = "https://files.pythonhosted.org/packages/9a/0b/7797d4193f5adb4b837207ed87fecf5fc38f7cc612b369a8e8e12d9fa114/coverage-7.6.10-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26bcf5c4df41cad1b19c84af71c22cbc9ea9a547fc973f1f2cc9a290002c8b3c", size = 240220 }, + { url = "https://files.pythonhosted.org/packages/65/4d/6f83ca1bddcf8e51bf8ff71572f39a1c73c34cf50e752a952c34f24d0a60/coverage-7.6.10-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4e4630c26b6084c9b3cb53b15bd488f30ceb50b73c35c5ad7871b869cb7365fd", size = 239847 }, + { url = "https://files.pythonhosted.org/packages/30/9d/2470df6aa146aff4c65fee0f87f58d2164a67533c771c9cc12ffcdb865d5/coverage-7.6.10-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2396e8116db77789f819d2bc8a7e200232b7a282c66e0ae2d2cd84581a89757e", size = 237922 }, + { url = "https://files.pythonhosted.org/packages/08/dd/723fef5d901e6a89f2507094db66c091449c8ba03272861eaefa773ad95c/coverage-7.6.10-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:79109c70cc0882e4d2d002fe69a24aa504dec0cc17169b3c7f41a1d341a73694", size = 239783 }, + { url = "https://files.pythonhosted.org/packages/3d/f7/64d3298b2baf261cb35466000628706ce20a82d42faf9b771af447cd2b76/coverage-7.6.10-cp313-cp313-win32.whl", hash = "sha256:9e1747bab246d6ff2c4f28b4d186b205adced9f7bd9dc362051cc37c4a0c7bd6", size = 210965 }, + { url = "https://files.pythonhosted.org/packages/d5/58/ec43499a7fc681212fe7742fe90b2bc361cdb72e3181ace1604247a5b24d/coverage-7.6.10-cp313-cp313-win_amd64.whl", hash = "sha256:254f1a3b1eef5f7ed23ef265eaa89c65c8c5b6b257327c149db1ca9d4a35f25e", size = 211719 }, + { url = "https://files.pythonhosted.org/packages/ab/c9/f2857a135bcff4330c1e90e7d03446b036b2363d4ad37eb5e3a47bbac8a6/coverage-7.6.10-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2ccf240eb719789cedbb9fd1338055de2761088202a9a0b73032857e53f612fe", size = 209050 }, + { url = "https://files.pythonhosted.org/packages/aa/b3/f840e5bd777d8433caa9e4a1eb20503495709f697341ac1a8ee6a3c906ad/coverage-7.6.10-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:0c807ca74d5a5e64427c8805de15b9ca140bba13572d6d74e262f46f50b13273", size = 209321 }, + { url = "https://files.pythonhosted.org/packages/85/7d/125a5362180fcc1c03d91850fc020f3831d5cda09319522bcfa6b2b70be7/coverage-7.6.10-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2bcfa46d7709b5a7ffe089075799b902020b62e7ee56ebaed2f4bdac04c508d8", size = 252039 }, + { url = "https://files.pythonhosted.org/packages/a9/9c/4358bf3c74baf1f9bddd2baf3756b54c07f2cfd2535f0a47f1e7757e54b3/coverage-7.6.10-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4e0de1e902669dccbf80b0415fb6b43d27edca2fbd48c74da378923b05316098", size = 247758 }, + { url = "https://files.pythonhosted.org/packages/cf/c7/de3eb6fc5263b26fab5cda3de7a0f80e317597a4bad4781859f72885f300/coverage-7.6.10-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f7b444c42bbc533aaae6b5a2166fd1a797cdb5eb58ee51a92bee1eb94a1e1cb", size = 250119 }, + { url = "https://files.pythonhosted.org/packages/3e/e6/43de91f8ba2ec9140c6a4af1102141712949903dc732cf739167cfa7a3bc/coverage-7.6.10-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b330368cb99ef72fcd2dc3ed260adf67b31499584dc8a20225e85bfe6f6cfed0", size = 249597 }, + { url = "https://files.pythonhosted.org/packages/08/40/61158b5499aa2adf9e37bc6d0117e8f6788625b283d51e7e0c53cf340530/coverage-7.6.10-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:9a7cfb50515f87f7ed30bc882f68812fd98bc2852957df69f3003d22a2aa0abf", size = 247473 }, + { url = "https://files.pythonhosted.org/packages/50/69/b3f2416725621e9f112e74e8470793d5b5995f146f596f133678a633b77e/coverage-7.6.10-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6f93531882a5f68c28090f901b1d135de61b56331bba82028489bc51bdd818d2", size = 248737 }, + { url = "https://files.pythonhosted.org/packages/3c/6e/fe899fb937657db6df31cc3e61c6968cb56d36d7326361847440a430152e/coverage-7.6.10-cp313-cp313t-win32.whl", hash = "sha256:89d76815a26197c858f53c7f6a656686ec392b25991f9e409bcef020cd532312", size = 211611 }, + { url = "https://files.pythonhosted.org/packages/1c/55/52f5e66142a9d7bc93a15192eba7a78513d2abf6b3558d77b4ca32f5f424/coverage-7.6.10-cp313-cp313t-win_amd64.whl", hash = "sha256:54a5f0f43950a36312155dae55c505a76cd7f2b12d26abeebbe7a0b36dbc868d", size = 212781 }, +] + +[[package]] +name = "dask" +version = "2024.12.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "cloudpickle" }, + { name = "fsspec" }, + { name = "importlib-metadata", marker = "python_full_version < '3.12'" }, + { name = "packaging" }, + { name = "partd" }, + { name = "pyyaml" }, + { name = "toolz" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b6/19/1d1e57c0fa24dfd241bbec46d4b70c37ec15e8071a7e06d43d327c8dafbb/dask-2024.12.1.tar.gz", hash = "sha256:bac809af21c2dd7eb06827bccbfc612504f3ee6435580e548af912828f823195", size = 10693689 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6d/5a/cdc78a77bb1c7290fd1ccfe6001437f99a2af63e28343299abd09336236e/dask-2024.12.1-py3-none-any.whl", hash = "sha256:1f32acddf1a6994e3af6734756f0a92467c47050bc29f3555bb9b140420e8e19", size = 1269300 }, +] + +[package.optional-dependencies] +array = [ + { name = "numpy" }, +] + +[[package]] +name = "debugpy" +version = "1.8.11" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bc/e7/666f4c9b0e24796af50aadc28d36d21c2e01e831a934535f956e09b3650c/debugpy-1.8.11.tar.gz", hash = "sha256:6ad2688b69235c43b020e04fecccdf6a96c8943ca9c2fb340b8adc103c655e57", size = 1640124 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7c/58/8e3f7ec86c1b7985a232667b5df8f3b1b1c8401028d8f4d75e025c9556cd/debugpy-1.8.11-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:85de8474ad53ad546ff1c7c7c89230db215b9b8a02754d41cb5a76f70d0be296", size = 2173656 }, + { url = "https://files.pythonhosted.org/packages/d2/03/95738a68ade2358e5a4d63a2fd8e7ed9ad911001cfabbbb33a7f81343945/debugpy-1.8.11-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ffc382e4afa4aee367bf413f55ed17bd91b191dcaf979890af239dda435f2a1", size = 3132464 }, + { url = "https://files.pythonhosted.org/packages/ca/f4/18204891ab67300950615a6ad09b9de236203a9138f52b3b596fa17628ca/debugpy-1.8.11-cp311-cp311-win32.whl", hash = "sha256:40499a9979c55f72f4eb2fc38695419546b62594f8af194b879d2a18439c97a9", size = 5103637 }, + { url = "https://files.pythonhosted.org/packages/3b/90/3775e301cfa573b51eb8a108285681f43f5441dc4c3916feed9f386ef861/debugpy-1.8.11-cp311-cp311-win_amd64.whl", hash = "sha256:987bce16e86efa86f747d5151c54e91b3c1e36acc03ce1ddb50f9d09d16ded0e", size = 5127862 }, + { url = "https://files.pythonhosted.org/packages/c6/ae/2cf26f3111e9d94384d9c01e9d6170188b0aeda15b60a4ac6457f7c8a26f/debugpy-1.8.11-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:84e511a7545d11683d32cdb8f809ef63fc17ea2a00455cc62d0a4dbb4ed1c308", size = 2498756 }, + { url = "https://files.pythonhosted.org/packages/b0/16/ec551789d547541a46831a19aa15c147741133da188e7e6acf77510545a7/debugpy-1.8.11-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce291a5aca4985d82875d6779f61375e959208cdf09fcec40001e65fb0a54768", size = 4219136 }, + { url = "https://files.pythonhosted.org/packages/72/6f/b2b3ce673c55f882d27a6eb04a5f0c68bcad6b742ac08a86d8392ae58030/debugpy-1.8.11-cp312-cp312-win32.whl", hash = "sha256:28e45b3f827d3bf2592f3cf7ae63282e859f3259db44ed2b129093ca0ac7940b", size = 5224440 }, + { url = "https://files.pythonhosted.org/packages/77/09/b1f05be802c1caef5b3efc042fc6a7cadd13d8118b072afd04a9b9e91e06/debugpy-1.8.11-cp312-cp312-win_amd64.whl", hash = "sha256:44b1b8e6253bceada11f714acf4309ffb98bfa9ac55e4fce14f9e5d4484287a1", size = 5264578 }, + { url = "https://files.pythonhosted.org/packages/2e/66/931dc2479aa8fbf362dc6dcee707d895a84b0b2d7b64020135f20b8db1ed/debugpy-1.8.11-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:8988f7163e4381b0da7696f37eec7aca19deb02e500245df68a7159739bbd0d3", size = 2483651 }, + { url = "https://files.pythonhosted.org/packages/10/07/6c171d0fe6b8d237e35598b742f20ba062511b3a4631938cc78eefbbf847/debugpy-1.8.11-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c1f6a173d1140e557347419767d2b14ac1c9cd847e0b4c5444c7f3144697e4e", size = 4213770 }, + { url = "https://files.pythonhosted.org/packages/89/f1/0711da6ac250d4fe3bf7b3e9b14b4a86e82a98b7825075c07e19bab8da3d/debugpy-1.8.11-cp313-cp313-win32.whl", hash = "sha256:bb3b15e25891f38da3ca0740271e63ab9db61f41d4d8541745cfc1824252cb28", size = 5223911 }, + { url = "https://files.pythonhosted.org/packages/56/98/5e27fa39050749ed460025bcd0034a0a5e78a580a14079b164cc3abdeb98/debugpy-1.8.11-cp313-cp313-win_amd64.whl", hash = "sha256:d8768edcbeb34da9e11bcb8b5c2e0958d25218df7a6e56adf415ef262cd7b6d1", size = 5264166 }, + { url = "https://files.pythonhosted.org/packages/77/0a/d29a5aacf47b4383ed569b8478c02d59ee3a01ad91224d2cff8562410e43/debugpy-1.8.11-py2.py3-none-any.whl", hash = "sha256:0e22f846f4211383e6a416d04b4c13ed174d24cc5d43f5fd52e7821d0ebc8920", size = 5226874 }, +] + +[[package]] +name = "decorator" +version = "5.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/66/0c/8d907af351aa16b42caae42f9d6aa37b900c67308052d10fdce809f8d952/decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330", size = 35016 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d5/50/83c593b07763e1161326b3b8c6686f0f4b0f24d5526546bee538c89837d6/decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186", size = 9073 }, +] + +[[package]] +name = "distlib" +version = "0.3.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0d/dd/1bec4c5ddb504ca60fc29472f3d27e8d4da1257a854e1d96742f15c1d02d/distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403", size = 613923 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87", size = 468973 }, +] + +[[package]] +name = "distributed" +version = "2024.12.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "cloudpickle" }, + { name = "dask" }, + { name = "jinja2" }, + { name = "locket" }, + { name = "msgpack" }, + { name = "packaging" }, + { name = "psutil" }, + { name = "pyyaml" }, + { name = "sortedcontainers" }, + { name = "tblib" }, + { name = "toolz" }, + { name = "tornado" }, + { name = "urllib3" }, + { name = "zict" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/67/ce/0ca6d4e1da90f5b3af135b3abbf0487b2602d046cc090b793869928880b5/distributed-2024.12.1.tar.gz", hash = "sha256:438aa3ae48bfac9c2bb2ad03f9d47899286f9cb3db8a627b3b8c0de9e26f53dd", size = 1115786 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/90/82171cc7fe1c6d10bac57587c7ac012be80412ad06ef8c4952c5f067f869/distributed-2024.12.1-py3-none-any.whl", hash = "sha256:87e31abaa0ee3dc517b44fec4993d4b5d92257f926a8d2a12d52c005227154e7", size = 1022935 }, +] + +[[package]] +name = "docstring-parser" +version = "0.16" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/08/12/9c22a58c0b1e29271051222d8906257616da84135af9ed167c9e28f85cb3/docstring_parser-0.16.tar.gz", hash = "sha256:538beabd0af1e2db0146b6bd3caa526c35a34d61af9fd2887f3a8a27a739aa6e", size = 26565 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d5/7c/e9fcff7623954d86bdc17782036cbf715ecab1bec4847c008557affe1ca8/docstring_parser-0.16-py3-none-any.whl", hash = "sha256:bf0a1387354d3691d102edef7ec124f219ef639982d096e26e3b60aeffa90637", size = 36533 }, +] + +[[package]] +name = "docutils" +version = "0.21.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ae/ed/aefcc8cd0ba62a0560c3c18c33925362d46c6075480bfa4df87b28e169a9/docutils-0.21.2.tar.gz", hash = "sha256:3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f", size = 2204444 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl", hash = "sha256:dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2", size = 587408 }, +] + +[[package]] +name = "executing" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8c/e3/7d45f492c2c4a0e8e0fad57d081a7c8a0286cdd86372b070cca1ec0caa1e/executing-2.1.0.tar.gz", hash = "sha256:8ea27ddd260da8150fa5a708269c4a10e76161e2496ec3e587da9e3c0fe4b9ab", size = 977485 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b5/fd/afcd0496feca3276f509df3dbd5dae726fcc756f1a08d9e25abe1733f962/executing-2.1.0-py2.py3-none-any.whl", hash = "sha256:8d63781349375b5ebccc3142f4b30350c0cd9c79f921cde38be2be4637e98eaf", size = 25805 }, +] + +[[package]] +name = "fasteners" +version = "0.19" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5f/d4/e834d929be54bfadb1f3e3b931c38e956aaa3b235a46a3c764c26c774902/fasteners-0.19.tar.gz", hash = "sha256:b4f37c3ac52d8a445af3a66bce57b33b5e90b97c696b7b984f530cf8f0ded09c", size = 24832 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/61/bf/fd60001b3abc5222d8eaa4a204cd8c0ae78e75adc688f33ce4bf25b7fafa/fasteners-0.19-py3-none-any.whl", hash = "sha256:758819cb5d94cdedf4e836988b74de396ceacb8e2794d21f82d131fd9ee77237", size = 18679 }, +] + +[[package]] +name = "filelock" +version = "3.16.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9d/db/3ef5bb276dae18d6ec2124224403d1d67bccdbefc17af4cc8f553e341ab1/filelock-3.16.1.tar.gz", hash = "sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435", size = 18037 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/f8/feced7779d755758a52d1f6635d990b8d98dc0a29fa568bbe0625f18fdf3/filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0", size = 16163 }, +] + +[[package]] +name = "flexcache" +version = "0.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/55/b0/8a21e330561c65653d010ef112bf38f60890051d244ede197ddaa08e50c1/flexcache-0.3.tar.gz", hash = "sha256:18743bd5a0621bfe2cf8d519e4c3bfdf57a269c15d1ced3fb4b64e0ff4600656", size = 15816 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/27/cd/c883e1a7c447479d6e13985565080e3fea88ab5a107c21684c813dba1875/flexcache-0.3-py3-none-any.whl", hash = "sha256:d43c9fea82336af6e0115e308d9d33a185390b8346a017564611f1466dcd2e32", size = 13263 }, +] + +[[package]] +name = "flexparser" +version = "0.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/82/99/b4de7e39e8eaf8207ba1a8fa2241dd98b2ba72ae6e16960d8351736d8702/flexparser-0.4.tar.gz", hash = "sha256:266d98905595be2ccc5da964fe0a2c3526fbbffdc45b65b3146d75db992ef6b2", size = 31799 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/5e/3be305568fe5f34448807976dc82fc151d76c3e0e03958f34770286278c1/flexparser-0.4-py3-none-any.whl", hash = "sha256:3738b456192dcb3e15620f324c447721023c0293f6af9955b481e91d00179846", size = 27625 }, +] + +[[package]] +name = "freetype-py" +version = "2.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d0/9c/61ba17f846b922c2d6d101cc886b0e8fb597c109cedfcb39b8c5d2304b54/freetype-py-2.5.1.zip", hash = "sha256:cfe2686a174d0dd3d71a9d8ee9bf6a2c23f5872385cf8ce9f24af83d076e2fbd", size = 851738 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/a8/258dd138ebe60c79cd8cfaa6d021599208a33f0175a5e29b01f60c9ab2c7/freetype_py-2.5.1-py3-none-macosx_10_9_universal2.whl", hash = "sha256:d01ded2557694f06aa0413f3400c0c0b2b5ebcaabeef7aaf3d756be44f51e90b", size = 1747885 }, + { url = "https://files.pythonhosted.org/packages/a2/93/280ad06dc944e40789b0a641492321a2792db82edda485369cbc59d14366/freetype_py-2.5.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d2f6b3d68496797da23204b3b9c4e77e67559c80390fc0dc8b3f454ae1cd819", size = 1051055 }, + { url = "https://files.pythonhosted.org/packages/b6/36/853cad240ec63e21a37a512ee19c896b655ce1772d803a3dd80fccfe63fe/freetype_py-2.5.1-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:289b443547e03a4f85302e3ac91376838e0d11636050166662a4f75e3087ed0b", size = 1043856 }, + { url = "https://files.pythonhosted.org/packages/93/6f/fcc1789e42b8c6617c3112196d68e87bfe7d957d80812d3c24d639782dcb/freetype_py-2.5.1-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:cd3bfdbb7e1a84818cfbc8025fca3096f4f2afcd5d4641184bf0a3a2e6f97bbf", size = 1108180 }, + { url = "https://files.pythonhosted.org/packages/2a/1b/161d3a6244b8a820aef188e4397a750d4a8196316809576d015f26594296/freetype_py-2.5.1-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:3c1aefc4f0d5b7425f014daccc5fdc7c6f914fb7d6a695cc684f1c09cd8c1660", size = 1106792 }, + { url = "https://files.pythonhosted.org/packages/93/6e/bd7fbfacca077bc6f34f1a1109800a2c41ab50f4704d3a0507ba41009915/freetype_py-2.5.1-py3-none-win_amd64.whl", hash = "sha256:0b7f8e0342779f65ca13ef8bc103938366fecade23e6bb37cb671c2b8ad7f124", size = 814608 }, +] + +[[package]] +name = "frozenlist" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8f/ed/0f4cec13a93c02c47ec32d81d11c0c1efbadf4a471e3f3ce7cad366cbbd3/frozenlist-1.5.0.tar.gz", hash = "sha256:81d5af29e61b9c8348e876d442253723928dce6433e0e76cd925cd83f1b4b817", size = 39930 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/43/0bed28bf5eb1c9e4301003b74453b8e7aa85fb293b31dde352aac528dafc/frozenlist-1.5.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fd74520371c3c4175142d02a976aee0b4cb4a7cc912a60586ffd8d5929979b30", size = 94987 }, + { url = "https://files.pythonhosted.org/packages/bb/bf/b74e38f09a246e8abbe1e90eb65787ed745ccab6eaa58b9c9308e052323d/frozenlist-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2f3f7a0fbc219fb4455264cae4d9f01ad41ae6ee8524500f381de64ffaa077d5", size = 54584 }, + { url = "https://files.pythonhosted.org/packages/2c/31/ab01375682f14f7613a1ade30149f684c84f9b8823a4391ed950c8285656/frozenlist-1.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f47c9c9028f55a04ac254346e92977bf0f166c483c74b4232bee19a6697e4778", size = 52499 }, + { url = "https://files.pythonhosted.org/packages/98/a8/d0ac0b9276e1404f58fec3ab6e90a4f76b778a49373ccaf6a563f100dfbc/frozenlist-1.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0996c66760924da6e88922756d99b47512a71cfd45215f3570bf1e0b694c206a", size = 276357 }, + { url = "https://files.pythonhosted.org/packages/ad/c9/c7761084fa822f07dac38ac29f841d4587570dd211e2262544aa0b791d21/frozenlist-1.5.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a2fe128eb4edeabe11896cb6af88fca5346059f6c8d807e3b910069f39157869", size = 287516 }, + { url = "https://files.pythonhosted.org/packages/a1/ff/cd7479e703c39df7bdab431798cef89dc75010d8aa0ca2514c5b9321db27/frozenlist-1.5.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a8ea951bbb6cacd492e3948b8da8c502a3f814f5d20935aae74b5df2b19cf3d", size = 283131 }, + { url = "https://files.pythonhosted.org/packages/59/a0/370941beb47d237eca4fbf27e4e91389fd68699e6f4b0ebcc95da463835b/frozenlist-1.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de537c11e4aa01d37db0d403b57bd6f0546e71a82347a97c6a9f0dcc532b3a45", size = 261320 }, + { url = "https://files.pythonhosted.org/packages/b8/5f/c10123e8d64867bc9b4f2f510a32042a306ff5fcd7e2e09e5ae5100ee333/frozenlist-1.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c2623347b933fcb9095841f1cc5d4ff0b278addd743e0e966cb3d460278840d", size = 274877 }, + { url = "https://files.pythonhosted.org/packages/fa/79/38c505601ae29d4348f21706c5d89755ceded02a745016ba2f58bd5f1ea6/frozenlist-1.5.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cee6798eaf8b1416ef6909b06f7dc04b60755206bddc599f52232606e18179d3", size = 269592 }, + { url = "https://files.pythonhosted.org/packages/19/e2/39f3a53191b8204ba9f0bb574b926b73dd2efba2a2b9d2d730517e8f7622/frozenlist-1.5.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f5f9da7f5dbc00a604fe74aa02ae7c98bcede8a3b8b9666f9f86fc13993bc71a", size = 265934 }, + { url = "https://files.pythonhosted.org/packages/d5/c9/3075eb7f7f3a91f1a6b00284af4de0a65a9ae47084930916f5528144c9dd/frozenlist-1.5.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:90646abbc7a5d5c7c19461d2e3eeb76eb0b204919e6ece342feb6032c9325ae9", size = 283859 }, + { url = "https://files.pythonhosted.org/packages/05/f5/549f44d314c29408b962fa2b0e69a1a67c59379fb143b92a0a065ffd1f0f/frozenlist-1.5.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:bdac3c7d9b705d253b2ce370fde941836a5f8b3c5c2b8fd70940a3ea3af7f4f2", size = 287560 }, + { url = "https://files.pythonhosted.org/packages/9d/f8/cb09b3c24a3eac02c4c07a9558e11e9e244fb02bf62c85ac2106d1eb0c0b/frozenlist-1.5.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:03d33c2ddbc1816237a67f66336616416e2bbb6beb306e5f890f2eb22b959cdf", size = 277150 }, + { url = "https://files.pythonhosted.org/packages/37/48/38c2db3f54d1501e692d6fe058f45b6ad1b358d82cd19436efab80cfc965/frozenlist-1.5.0-cp311-cp311-win32.whl", hash = "sha256:237f6b23ee0f44066219dae14c70ae38a63f0440ce6750f868ee08775073f942", size = 45244 }, + { url = "https://files.pythonhosted.org/packages/ca/8c/2ddffeb8b60a4bce3b196c32fcc30d8830d4615e7b492ec2071da801b8ad/frozenlist-1.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:0cc974cc93d32c42e7b0f6cf242a6bd941c57c61b618e78b6c0a96cb72788c1d", size = 51634 }, + { url = "https://files.pythonhosted.org/packages/79/73/fa6d1a96ab7fd6e6d1c3500700963eab46813847f01ef0ccbaa726181dd5/frozenlist-1.5.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:31115ba75889723431aa9a4e77d5f398f5cf976eea3bdf61749731f62d4a4a21", size = 94026 }, + { url = "https://files.pythonhosted.org/packages/ab/04/ea8bf62c8868b8eada363f20ff1b647cf2e93377a7b284d36062d21d81d1/frozenlist-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7437601c4d89d070eac8323f121fcf25f88674627505334654fd027b091db09d", size = 54150 }, + { url = "https://files.pythonhosted.org/packages/d0/9a/8e479b482a6f2070b26bda572c5e6889bb3ba48977e81beea35b5ae13ece/frozenlist-1.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7948140d9f8ece1745be806f2bfdf390127cf1a763b925c4a805c603df5e697e", size = 51927 }, + { url = "https://files.pythonhosted.org/packages/e3/12/2aad87deb08a4e7ccfb33600871bbe8f0e08cb6d8224371387f3303654d7/frozenlist-1.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feeb64bc9bcc6b45c6311c9e9b99406660a9c05ca8a5b30d14a78555088b0b3a", size = 282647 }, + { url = "https://files.pythonhosted.org/packages/77/f2/07f06b05d8a427ea0060a9cef6e63405ea9e0d761846b95ef3fb3be57111/frozenlist-1.5.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:683173d371daad49cffb8309779e886e59c2f369430ad28fe715f66d08d4ab1a", size = 289052 }, + { url = "https://files.pythonhosted.org/packages/bd/9f/8bf45a2f1cd4aa401acd271b077989c9267ae8463e7c8b1eb0d3f561b65e/frozenlist-1.5.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7d57d8f702221405a9d9b40f9da8ac2e4a1a8b5285aac6100f3393675f0a85ee", size = 291719 }, + { url = "https://files.pythonhosted.org/packages/41/d1/1f20fd05a6c42d3868709b7604c9f15538a29e4f734c694c6bcfc3d3b935/frozenlist-1.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30c72000fbcc35b129cb09956836c7d7abf78ab5416595e4857d1cae8d6251a6", size = 267433 }, + { url = "https://files.pythonhosted.org/packages/af/f2/64b73a9bb86f5a89fb55450e97cd5c1f84a862d4ff90d9fd1a73ab0f64a5/frozenlist-1.5.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:000a77d6034fbad9b6bb880f7ec073027908f1b40254b5d6f26210d2dab1240e", size = 283591 }, + { url = "https://files.pythonhosted.org/packages/29/e2/ffbb1fae55a791fd6c2938dd9ea779509c977435ba3940b9f2e8dc9d5316/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5d7f5a50342475962eb18b740f3beecc685a15b52c91f7d975257e13e029eca9", size = 273249 }, + { url = "https://files.pythonhosted.org/packages/2e/6e/008136a30798bb63618a114b9321b5971172a5abddff44a100c7edc5ad4f/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:87f724d055eb4785d9be84e9ebf0f24e392ddfad00b3fe036e43f489fafc9039", size = 271075 }, + { url = "https://files.pythonhosted.org/packages/ae/f0/4e71e54a026b06724cec9b6c54f0b13a4e9e298cc8db0f82ec70e151f5ce/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:6e9080bb2fb195a046e5177f10d9d82b8a204c0736a97a153c2466127de87784", size = 285398 }, + { url = "https://files.pythonhosted.org/packages/4d/36/70ec246851478b1c0b59f11ef8ade9c482ff447c1363c2bd5fad45098b12/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9b93d7aaa36c966fa42efcaf716e6b3900438632a626fb09c049f6a2f09fc631", size = 294445 }, + { url = "https://files.pythonhosted.org/packages/37/e0/47f87544055b3349b633a03c4d94b405956cf2437f4ab46d0928b74b7526/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:52ef692a4bc60a6dd57f507429636c2af8b6046db8b31b18dac02cbc8f507f7f", size = 280569 }, + { url = "https://files.pythonhosted.org/packages/f9/7c/490133c160fb6b84ed374c266f42800e33b50c3bbab1652764e6e1fc498a/frozenlist-1.5.0-cp312-cp312-win32.whl", hash = "sha256:29d94c256679247b33a3dc96cce0f93cbc69c23bf75ff715919332fdbb6a32b8", size = 44721 }, + { url = "https://files.pythonhosted.org/packages/b1/56/4e45136ffc6bdbfa68c29ca56ef53783ef4c2fd395f7cbf99a2624aa9aaa/frozenlist-1.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:8969190d709e7c48ea386db202d708eb94bdb29207a1f269bab1196ce0dcca1f", size = 51329 }, + { url = "https://files.pythonhosted.org/packages/da/3b/915f0bca8a7ea04483622e84a9bd90033bab54bdf485479556c74fd5eaf5/frozenlist-1.5.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7a1a048f9215c90973402e26c01d1cff8a209e1f1b53f72b95c13db61b00f953", size = 91538 }, + { url = "https://files.pythonhosted.org/packages/c7/d1/a7c98aad7e44afe5306a2b068434a5830f1470675f0e715abb86eb15f15b/frozenlist-1.5.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:dd47a5181ce5fcb463b5d9e17ecfdb02b678cca31280639255ce9d0e5aa67af0", size = 52849 }, + { url = "https://files.pythonhosted.org/packages/3a/c8/76f23bf9ab15d5f760eb48701909645f686f9c64fbb8982674c241fbef14/frozenlist-1.5.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1431d60b36d15cda188ea222033eec8e0eab488f39a272461f2e6d9e1a8e63c2", size = 50583 }, + { url = "https://files.pythonhosted.org/packages/1f/22/462a3dd093d11df623179d7754a3b3269de3b42de2808cddef50ee0f4f48/frozenlist-1.5.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6482a5851f5d72767fbd0e507e80737f9c8646ae7fd303def99bfe813f76cf7f", size = 265636 }, + { url = "https://files.pythonhosted.org/packages/80/cf/e075e407fc2ae7328155a1cd7e22f932773c8073c1fc78016607d19cc3e5/frozenlist-1.5.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44c49271a937625619e862baacbd037a7ef86dd1ee215afc298a417ff3270608", size = 270214 }, + { url = "https://files.pythonhosted.org/packages/a1/58/0642d061d5de779f39c50cbb00df49682832923f3d2ebfb0fedf02d05f7f/frozenlist-1.5.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:12f78f98c2f1c2429d42e6a485f433722b0061d5c0b0139efa64f396efb5886b", size = 273905 }, + { url = "https://files.pythonhosted.org/packages/ab/66/3fe0f5f8f2add5b4ab7aa4e199f767fd3b55da26e3ca4ce2cc36698e50c4/frozenlist-1.5.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce3aa154c452d2467487765e3adc730a8c153af77ad84096bc19ce19a2400840", size = 250542 }, + { url = "https://files.pythonhosted.org/packages/f6/b8/260791bde9198c87a465224e0e2bb62c4e716f5d198fc3a1dacc4895dbd1/frozenlist-1.5.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b7dc0c4338e6b8b091e8faf0db3168a37101943e687f373dce00959583f7439", size = 267026 }, + { url = "https://files.pythonhosted.org/packages/2e/a4/3d24f88c527f08f8d44ade24eaee83b2627793fa62fa07cbb7ff7a2f7d42/frozenlist-1.5.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:45e0896250900b5aa25180f9aec243e84e92ac84bd4a74d9ad4138ef3f5c97de", size = 257690 }, + { url = "https://files.pythonhosted.org/packages/de/9a/d311d660420b2beeff3459b6626f2ab4fb236d07afbdac034a4371fe696e/frozenlist-1.5.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:561eb1c9579d495fddb6da8959fd2a1fca2c6d060d4113f5844b433fc02f2641", size = 253893 }, + { url = "https://files.pythonhosted.org/packages/c6/23/e491aadc25b56eabd0f18c53bb19f3cdc6de30b2129ee0bc39cd387cd560/frozenlist-1.5.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:df6e2f325bfee1f49f81aaac97d2aa757c7646534a06f8f577ce184afe2f0a9e", size = 267006 }, + { url = "https://files.pythonhosted.org/packages/08/c4/ab918ce636a35fb974d13d666dcbe03969592aeca6c3ab3835acff01f79c/frozenlist-1.5.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:140228863501b44b809fb39ec56b5d4071f4d0aa6d216c19cbb08b8c5a7eadb9", size = 276157 }, + { url = "https://files.pythonhosted.org/packages/c0/29/3b7a0bbbbe5a34833ba26f686aabfe982924adbdcafdc294a7a129c31688/frozenlist-1.5.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7707a25d6a77f5d27ea7dc7d1fc608aa0a478193823f88511ef5e6b8a48f9d03", size = 264642 }, + { url = "https://files.pythonhosted.org/packages/ab/42/0595b3dbffc2e82d7fe658c12d5a5bafcd7516c6bf2d1d1feb5387caa9c1/frozenlist-1.5.0-cp313-cp313-win32.whl", hash = "sha256:31a9ac2b38ab9b5a8933b693db4939764ad3f299fcaa931a3e605bc3460e693c", size = 44914 }, + { url = "https://files.pythonhosted.org/packages/17/c4/b7db1206a3fea44bf3b838ca61deb6f74424a8a5db1dd53ecb21da669be6/frozenlist-1.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:11aabdd62b8b9c4b84081a3c246506d1cddd2dd93ff0ad53ede5defec7886b28", size = 51167 }, + { url = "https://files.pythonhosted.org/packages/c6/c8/a5be5b7550c10858fcf9b0ea054baccab474da77d37f1e828ce043a3a5d4/frozenlist-1.5.0-py3-none-any.whl", hash = "sha256:d994863bba198a4a518b467bb971c56e1db3f180a25c6cf7bb1949c267f748c3", size = 11901 }, +] + +[[package]] +name = "fsspec" +version = "2024.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a0/52/f16a068ebadae42526484c31f4398e62962504e5724a8ba5dc3409483df2/fsspec-2024.10.0.tar.gz", hash = "sha256:eda2d8a4116d4f2429db8550f2457da57279247dd930bb12f821b58391359493", size = 286853 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/b2/454d6e7f0158951d8a78c2e1eb4f69ae81beb8dca5fee9809c6c99e9d0d0/fsspec-2024.10.0-py3-none-any.whl", hash = "sha256:03b9a6785766a4de40368b88906366755e2819e758b83705c88cd7cb5fe81871", size = 179641 }, +] + +[package.optional-dependencies] +s3 = [ + { name = "s3fs" }, +] + +[[package]] +name = "heapdict" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/9b/d8963ae7e388270b695f3b556b6dc9adb70ae9618fba09aa1e7b1886652d/HeapDict-1.0.1.tar.gz", hash = "sha256:8495f57b3e03d8e46d5f1b2cc62ca881aca392fd5cc048dc0aa2e1a6d23ecdb6", size = 4274 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b6/9d/cd4777dbcf3bef9d9627e0fe4bc43d2e294b1baeb01d0422399d5e9de319/HeapDict-1.0.1-py3-none-any.whl", hash = "sha256:6065f90933ab1bb7e50db403b90cab653c853690c5992e69294c2de2b253fc92", size = 3917 }, +] + +[[package]] +name = "hsluv" +version = "5.0.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ac/81/af16607fa045724e515579d312577261b436f36f419e7c677e7e88fcc943/hsluv-5.0.4.tar.gz", hash = "sha256:2281f946427a882010042844a38c7bbe9e0d0aaf9d46babe46366ed6f169b72e", size = 543090 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/96/36/5bddefea3d7adf22a64f9aa9701492f8a9fe6948223f5cf2602c22ec9be7/hsluv-5.0.4-py2.py3-none-any.whl", hash = "sha256:0138bd10038e2ee1b13eecae9a7d49d4ec8c320b1d7eb4f860832c792e3e4567", size = 5252 }, +] + +[[package]] +name = "identify" +version = "2.6.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/49/a5/7de3053524ee006b91099968d7ecb2e0b420f7ae728094394c33e8a2a2b9/identify-2.6.4.tar.gz", hash = "sha256:285a7d27e397652e8cafe537a6cc97dd470a970f48fb2e9d979aa38eae5513ac", size = 99209 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/9d/52f036403ae86474804f699c0d084b4b071e333a390b20269bb8accc65e0/identify-2.6.4-py2.py3-none-any.whl", hash = "sha256:993b0f01b97e0568c179bb9196391ff391bfb88a99099dbf5ce392b68f42d0af", size = 99072 }, +] + +[[package]] +name = "idna" +version = "3.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, +] + +[[package]] +name = "imageio" +version = "2.36.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "pillow" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/70/aa/2e7a49259339e691ff2b477ae0696b1784a09313c5872700bbbdd00a3030/imageio-2.36.1.tar.gz", hash = "sha256:e4e1d231f47f9a9e16100b0f7ce1a86e8856fb4d1c0fa2c4365a316f1746be62", size = 389522 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/f9/f78e7f5ac8077c481bf6b43b8bc736605363034b3d5eb3ce8eb79f53f5f1/imageio-2.36.1-py3-none-any.whl", hash = "sha256:20abd2cae58e55ca1af8a8dcf43293336a59adf0391f1917bf8518633cfc2cdf", size = 315435 }, +] + +[[package]] +name = "imagesize" +version = "1.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a7/84/62473fb57d61e31fef6e36d64a179c8781605429fd927b5dd608c997be31/imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a", size = 1280026 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ff/62/85c4c919272577931d407be5ba5d71c20f0b616d31a0befe0ae45bb79abd/imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b", size = 8769 }, +] + +[[package]] +name = "importlib-metadata" +version = "8.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "zipp", marker = "python_full_version < '3.12'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cd/12/33e59336dca5be0c398a7482335911a33aa0e20776128f038019f1a95f1b/importlib_metadata-8.5.0.tar.gz", hash = "sha256:71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7", size = 55304 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/d9/a1e041c5e7caa9a05c925f4bdbdfb7f006d1f74996af53467bc394c97be7/importlib_metadata-8.5.0-py3-none-any.whl", hash = "sha256:45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b", size = 26514 }, +] + +[[package]] +name = "in-n-out" +version = "0.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/af/08/07edfac98a38ab0208557524cbdd94a296f565b0558417ccb2c03d14a6ea/in_n_out-0.2.1.tar.gz", hash = "sha256:43cde2b7de981d41a6d70618a2b7bd989481095922a53ead4dc75f2bbd5dffea", size = 26026 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/06/711a4d105ad3d01d3ef351a1039bb5cc517a57dbf377d7da9a0808e34c77/in_n_out-0.2.1-py3-none-any.whl", hash = "sha256:343e81edb27cf41ec946134a92964f408465abdf6a065c6c55fe96f53bc3c8b7", size = 19951 }, +] + +[[package]] +name = "iniconfig" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3", size = 4646 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374", size = 5892 }, +] + +[[package]] +name = "ipykernel" +version = "6.29.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "appnope", marker = "sys_platform == 'darwin'" }, + { name = "comm" }, + { name = "debugpy" }, + { name = "ipython" }, + { 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/e9/5c/67594cb0c7055dc50814b21731c22a601101ea3b1b50a9a1b090e11f5d0f/ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215", size = 163367 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/5c/368ae6c01c7628438358e6d337c19b05425727fbb221d2a3c4303c372f42/ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5", size = 117173 }, +] + +[[package]] +name = "ipython" +version = "8.30.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "decorator" }, + { name = "jedi" }, + { name = "matplotlib-inline" }, + { name = "pexpect", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "prompt-toolkit" }, + { name = "pygments" }, + { name = "stack-data" }, + { name = "traitlets" }, + { name = "typing-extensions", marker = "python_full_version < '3.12'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d8/8b/710af065ab8ed05649afa5bd1e07401637c9ec9fb7cfda9eac7e91e9fbd4/ipython-8.30.0.tar.gz", hash = "sha256:cb0a405a306d2995a5cbb9901894d240784a9f341394c6ba3f4fe8c6eb89ff6e", size = 5592205 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/f3/1332ba2f682b07b304ad34cad2f003adcfeb349486103f4b632335074a7c/ipython-8.30.0-py3-none-any.whl", hash = "sha256:85ec56a7e20f6c38fce7727dcca699ae4ffc85985aa7b23635a8008f918ae321", size = 820765 }, +] + +[[package]] +name = "jedi" +version = "0.19.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "parso" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", size = 1231287 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278 }, +] + +[[package]] +name = "jinja2" +version = "3.1.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ed/55/39036716d19cab0747a5020fc7e907f362fbf48c984b14e62127f7e68e5d/jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369", size = 240245 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/31/80/3a54838c3fb461f6fec263ebf3a3a41771bd05190238de3486aae8540c36/jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d", size = 133271 }, +] + +[[package]] +name = "jmespath" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/00/2a/e867e8531cf3e36b41201936b7fa7ba7b5702dbef42922193f05c8976cd6/jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe", size = 25843 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/31/b4/b9b800c45527aadd64d5b442f9b932b00648617eb5d63d2c7a6587b7cafc/jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980", size = 20256 }, +] + +[[package]] +name = "jsonschema" +version = "4.23.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "jsonschema-specifications" }, + { name = "referencing" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/38/2e/03362ee4034a4c917f697890ccd4aec0800ccf9ded7f511971c75451deec/jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4", size = 325778 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/4a/4f9dbeb84e8850557c02365a0eee0649abe5eb1d84af92a25731c6c0f922/jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566", size = 88462 }, +] + +[[package]] +name = "jsonschema-specifications" +version = "2024.10.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "referencing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/10/db/58f950c996c793472e336ff3655b13fbcf1e3b359dcf52dcf3ed3b52c352/jsonschema_specifications-2024.10.1.tar.gz", hash = "sha256:0f38b83639958ce1152d02a7f062902c41c8fd20d558b0c34344292d417ae272", size = 15561 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/0f/8910b19ac0670a0f80ce1008e5e751c4a57e14d2c4c13a482aa6079fa9d6/jsonschema_specifications-2024.10.1-py3-none-any.whl", hash = "sha256:a09a0680616357d9a0ecf05c12ad234479f549239d0f5b55f3deea67475da9bf", size = 18459 }, +] + +[[package]] +name = "jupyter-client" +version = "8.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-core" }, + { name = "python-dateutil" }, + { name = "pyzmq" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/71/22/bf9f12fdaeae18019a468b68952a60fe6dbab5d67cd2a103cac7659b41ca/jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419", size = 342019 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105 }, +] + +[[package]] +name = "jupyter-core" +version = "5.7.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "platformdirs" }, + { name = "pywin32", marker = "platform_python_implementation != 'PyPy' and sys_platform == 'win32'" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/00/11/b56381fa6c3f4cc5d2cf54a7dbf98ad9aa0b339ef7a601d6053538b079a7/jupyter_core-5.7.2.tar.gz", hash = "sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9", size = 87629 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c9/fb/108ecd1fe961941959ad0ee4e12ee7b8b1477247f30b1fdfd83ceaf017f0/jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409", size = 28965 }, +] + +[[package]] +name = "kiwisolver" +version = "1.4.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/85/4d/2255e1c76304cbd60b48cee302b66d1dde4468dc5b1160e4b7cb43778f2a/kiwisolver-1.4.7.tar.gz", hash = "sha256:9893ff81bd7107f7b685d3017cc6583daadb4fc26e4a888350df530e41980a60", size = 97286 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/44/77429fa0a58f941d6e1c58da9efe08597d2e86bf2b2cce6626834f49d07b/kiwisolver-1.4.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d2b0e12a42fb4e72d509fc994713d099cbb15ebf1103545e8a45f14da2dfca54", size = 122442 }, + { url = "https://files.pythonhosted.org/packages/e5/20/8c75caed8f2462d63c7fd65e16c832b8f76cda331ac9e615e914ee80bac9/kiwisolver-1.4.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2a8781ac3edc42ea4b90bc23e7d37b665d89423818e26eb6df90698aa2287c95", size = 65762 }, + { url = "https://files.pythonhosted.org/packages/f4/98/fe010f15dc7230f45bc4cf367b012d651367fd203caaa992fd1f5963560e/kiwisolver-1.4.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:46707a10836894b559e04b0fd143e343945c97fd170d69a2d26d640b4e297935", size = 64319 }, + { url = "https://files.pythonhosted.org/packages/8b/1b/b5d618f4e58c0675654c1e5051bcf42c776703edb21c02b8c74135541f60/kiwisolver-1.4.7-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef97b8df011141c9b0f6caf23b29379f87dd13183c978a30a3c546d2c47314cb", size = 1334260 }, + { url = "https://files.pythonhosted.org/packages/b8/01/946852b13057a162a8c32c4c8d2e9ed79f0bb5d86569a40c0b5fb103e373/kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ab58c12a2cd0fc769089e6d38466c46d7f76aced0a1f54c77652446733d2d02", size = 1426589 }, + { url = "https://files.pythonhosted.org/packages/70/d1/c9f96df26b459e15cf8a965304e6e6f4eb291e0f7a9460b4ad97b047561e/kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:803b8e1459341c1bb56d1c5c010406d5edec8a0713a0945851290a7930679b51", size = 1541080 }, + { url = "https://files.pythonhosted.org/packages/d3/73/2686990eb8b02d05f3de759d6a23a4ee7d491e659007dd4c075fede4b5d0/kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f9a9e8a507420fe35992ee9ecb302dab68550dedc0da9e2880dd88071c5fb052", size = 1470049 }, + { url = "https://files.pythonhosted.org/packages/a7/4b/2db7af3ed3af7c35f388d5f53c28e155cd402a55432d800c543dc6deb731/kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18077b53dc3bb490e330669a99920c5e6a496889ae8c63b58fbc57c3d7f33a18", size = 1426376 }, + { url = "https://files.pythonhosted.org/packages/05/83/2857317d04ea46dc5d115f0df7e676997bbd968ced8e2bd6f7f19cfc8d7f/kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6af936f79086a89b3680a280c47ea90b4df7047b5bdf3aa5c524bbedddb9e545", size = 2222231 }, + { url = "https://files.pythonhosted.org/packages/0d/b5/866f86f5897cd4ab6d25d22e403404766a123f138bd6a02ecb2cdde52c18/kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:3abc5b19d24af4b77d1598a585b8a719beb8569a71568b66f4ebe1fb0449460b", size = 2368634 }, + { url = "https://files.pythonhosted.org/packages/c1/ee/73de8385403faba55f782a41260210528fe3273d0cddcf6d51648202d6d0/kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:933d4de052939d90afbe6e9d5273ae05fb836cc86c15b686edd4b3560cc0ee36", size = 2329024 }, + { url = "https://files.pythonhosted.org/packages/a1/e7/cd101d8cd2cdfaa42dc06c433df17c8303d31129c9fdd16c0ea37672af91/kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:65e720d2ab2b53f1f72fb5da5fb477455905ce2c88aaa671ff0a447c2c80e8e3", size = 2468484 }, + { url = "https://files.pythonhosted.org/packages/e1/72/84f09d45a10bc57a40bb58b81b99d8f22b58b2040c912b7eb97ebf625bf2/kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3bf1ed55088f214ba6427484c59553123fdd9b218a42bbc8c6496d6754b1e523", size = 2284078 }, + { url = "https://files.pythonhosted.org/packages/d2/d4/71828f32b956612dc36efd7be1788980cb1e66bfb3706e6dec9acad9b4f9/kiwisolver-1.4.7-cp311-cp311-win32.whl", hash = "sha256:4c00336b9dd5ad96d0a558fd18a8b6f711b7449acce4c157e7343ba92dd0cf3d", size = 46645 }, + { url = "https://files.pythonhosted.org/packages/a1/65/d43e9a20aabcf2e798ad1aff6c143ae3a42cf506754bcb6a7ed8259c8425/kiwisolver-1.4.7-cp311-cp311-win_amd64.whl", hash = "sha256:929e294c1ac1e9f615c62a4e4313ca1823ba37326c164ec720a803287c4c499b", size = 56022 }, + { url = "https://files.pythonhosted.org/packages/35/b3/9f75a2e06f1b4ca00b2b192bc2b739334127d27f1d0625627ff8479302ba/kiwisolver-1.4.7-cp311-cp311-win_arm64.whl", hash = "sha256:e33e8fbd440c917106b237ef1a2f1449dfbb9b6f6e1ce17c94cd6a1e0d438376", size = 48536 }, + { url = "https://files.pythonhosted.org/packages/97/9c/0a11c714cf8b6ef91001c8212c4ef207f772dd84540104952c45c1f0a249/kiwisolver-1.4.7-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:5360cc32706dab3931f738d3079652d20982511f7c0ac5711483e6eab08efff2", size = 121808 }, + { url = "https://files.pythonhosted.org/packages/f2/d8/0fe8c5f5d35878ddd135f44f2af0e4e1d379e1c7b0716f97cdcb88d4fd27/kiwisolver-1.4.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:942216596dc64ddb25adb215c3c783215b23626f8d84e8eff8d6d45c3f29f75a", size = 65531 }, + { url = "https://files.pythonhosted.org/packages/80/c5/57fa58276dfdfa612241d640a64ca2f76adc6ffcebdbd135b4ef60095098/kiwisolver-1.4.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:48b571ecd8bae15702e4f22d3ff6a0f13e54d3d00cd25216d5e7f658242065ee", size = 63894 }, + { url = "https://files.pythonhosted.org/packages/8b/e9/26d3edd4c4ad1c5b891d8747a4f81b1b0aba9fb9721de6600a4adc09773b/kiwisolver-1.4.7-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ad42ba922c67c5f219097b28fae965e10045ddf145d2928bfac2eb2e17673640", size = 1369296 }, + { url = "https://files.pythonhosted.org/packages/b6/67/3f4850b5e6cffb75ec40577ddf54f7b82b15269cc5097ff2e968ee32ea7d/kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:612a10bdae23404a72941a0fc8fa2660c6ea1217c4ce0dbcab8a8f6543ea9e7f", size = 1461450 }, + { url = "https://files.pythonhosted.org/packages/52/be/86cbb9c9a315e98a8dc6b1d23c43cffd91d97d49318854f9c37b0e41cd68/kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9e838bba3a3bac0fe06d849d29772eb1afb9745a59710762e4ba3f4cb8424483", size = 1579168 }, + { url = "https://files.pythonhosted.org/packages/0f/00/65061acf64bd5fd34c1f4ae53f20b43b0a017a541f242a60b135b9d1e301/kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:22f499f6157236c19f4bbbd472fa55b063db77a16cd74d49afe28992dff8c258", size = 1507308 }, + { url = "https://files.pythonhosted.org/packages/21/e4/c0b6746fd2eb62fe702118b3ca0cb384ce95e1261cfada58ff693aeec08a/kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693902d433cf585133699972b6d7c42a8b9f8f826ebcaf0132ff55200afc599e", size = 1464186 }, + { url = "https://files.pythonhosted.org/packages/0a/0f/529d0a9fffb4d514f2782c829b0b4b371f7f441d61aa55f1de1c614c4ef3/kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4e77f2126c3e0b0d055f44513ed349038ac180371ed9b52fe96a32aa071a5107", size = 2247877 }, + { url = "https://files.pythonhosted.org/packages/d1/e1/66603ad779258843036d45adcbe1af0d1a889a07af4635f8b4ec7dccda35/kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:657a05857bda581c3656bfc3b20e353c232e9193eb167766ad2dc58b56504948", size = 2404204 }, + { url = "https://files.pythonhosted.org/packages/8d/61/de5fb1ca7ad1f9ab7970e340a5b833d735df24689047de6ae71ab9d8d0e7/kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4bfa75a048c056a411f9705856abfc872558e33c055d80af6a380e3658766038", size = 2352461 }, + { url = "https://files.pythonhosted.org/packages/ba/d2/0edc00a852e369827f7e05fd008275f550353f1f9bcd55db9363d779fc63/kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:34ea1de54beef1c104422d210c47c7d2a4999bdecf42c7b5718fbe59a4cac383", size = 2501358 }, + { url = "https://files.pythonhosted.org/packages/84/15/adc15a483506aec6986c01fb7f237c3aec4d9ed4ac10b756e98a76835933/kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:90da3b5f694b85231cf93586dad5e90e2d71b9428f9aad96952c99055582f520", size = 2314119 }, + { url = "https://files.pythonhosted.org/packages/36/08/3a5bb2c53c89660863a5aa1ee236912269f2af8762af04a2e11df851d7b2/kiwisolver-1.4.7-cp312-cp312-win32.whl", hash = "sha256:18e0cca3e008e17fe9b164b55735a325140a5a35faad8de92dd80265cd5eb80b", size = 46367 }, + { url = "https://files.pythonhosted.org/packages/19/93/c05f0a6d825c643779fc3c70876bff1ac221f0e31e6f701f0e9578690d70/kiwisolver-1.4.7-cp312-cp312-win_amd64.whl", hash = "sha256:58cb20602b18f86f83a5c87d3ee1c766a79c0d452f8def86d925e6c60fbf7bfb", size = 55884 }, + { url = "https://files.pythonhosted.org/packages/d2/f9/3828d8f21b6de4279f0667fb50a9f5215e6fe57d5ec0d61905914f5b6099/kiwisolver-1.4.7-cp312-cp312-win_arm64.whl", hash = "sha256:f5a8b53bdc0b3961f8b6125e198617c40aeed638b387913bf1ce78afb1b0be2a", size = 48528 }, + { url = "https://files.pythonhosted.org/packages/c4/06/7da99b04259b0f18b557a4effd1b9c901a747f7fdd84cf834ccf520cb0b2/kiwisolver-1.4.7-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2e6039dcbe79a8e0f044f1c39db1986a1b8071051efba3ee4d74f5b365f5226e", size = 121913 }, + { url = "https://files.pythonhosted.org/packages/97/f5/b8a370d1aa593c17882af0a6f6755aaecd643640c0ed72dcfd2eafc388b9/kiwisolver-1.4.7-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a1ecf0ac1c518487d9d23b1cd7139a6a65bc460cd101ab01f1be82ecf09794b6", size = 65627 }, + { url = "https://files.pythonhosted.org/packages/2a/fc/6c0374f7503522539e2d4d1b497f5ebad3f8ed07ab51aed2af988dd0fb65/kiwisolver-1.4.7-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7ab9ccab2b5bd5702ab0803676a580fffa2aa178c2badc5557a84cc943fcf750", size = 63888 }, + { url = "https://files.pythonhosted.org/packages/bf/3e/0b7172793d0f41cae5c923492da89a2ffcd1adf764c16159ca047463ebd3/kiwisolver-1.4.7-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f816dd2277f8d63d79f9c8473a79fe54047bc0467754962840782c575522224d", size = 1369145 }, + { url = "https://files.pythonhosted.org/packages/77/92/47d050d6f6aced2d634258123f2688fbfef8ded3c5baf2c79d94d91f1f58/kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf8bcc23ceb5a1b624572a1623b9f79d2c3b337c8c455405ef231933a10da379", size = 1461448 }, + { url = "https://files.pythonhosted.org/packages/9c/1b/8f80b18e20b3b294546a1adb41701e79ae21915f4175f311a90d042301cf/kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dea0bf229319828467d7fca8c7c189780aa9ff679c94539eed7532ebe33ed37c", size = 1578750 }, + { url = "https://files.pythonhosted.org/packages/a4/fe/fe8e72f3be0a844f257cadd72689c0848c6d5c51bc1d60429e2d14ad776e/kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c06a4c7cf15ec739ce0e5971b26c93638730090add60e183530d70848ebdd34", size = 1507175 }, + { url = "https://files.pythonhosted.org/packages/39/fa/cdc0b6105d90eadc3bee525fecc9179e2b41e1ce0293caaf49cb631a6aaf/kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:913983ad2deb14e66d83c28b632fd35ba2b825031f2fa4ca29675e665dfecbe1", size = 1463963 }, + { url = "https://files.pythonhosted.org/packages/6e/5c/0c03c4e542720c6177d4f408e56d1c8315899db72d46261a4e15b8b33a41/kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5337ec7809bcd0f424c6b705ecf97941c46279cf5ed92311782c7c9c2026f07f", size = 2248220 }, + { url = "https://files.pythonhosted.org/packages/3d/ee/55ef86d5a574f4e767df7da3a3a7ff4954c996e12d4fbe9c408170cd7dcc/kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4c26ed10c4f6fa6ddb329a5120ba3b6db349ca192ae211e882970bfc9d91420b", size = 2404463 }, + { url = "https://files.pythonhosted.org/packages/0f/6d/73ad36170b4bff4825dc588acf4f3e6319cb97cd1fb3eb04d9faa6b6f212/kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c619b101e6de2222c1fcb0531e1b17bbffbe54294bfba43ea0d411d428618c27", size = 2352842 }, + { url = "https://files.pythonhosted.org/packages/0b/16/fa531ff9199d3b6473bb4d0f47416cdb08d556c03b8bc1cccf04e756b56d/kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:073a36c8273647592ea332e816e75ef8da5c303236ec0167196793eb1e34657a", size = 2501635 }, + { url = "https://files.pythonhosted.org/packages/78/7e/aa9422e78419db0cbe75fb86d8e72b433818f2e62e2e394992d23d23a583/kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:3ce6b2b0231bda412463e152fc18335ba32faf4e8c23a754ad50ffa70e4091ee", size = 2314556 }, + { url = "https://files.pythonhosted.org/packages/a8/b2/15f7f556df0a6e5b3772a1e076a9d9f6c538ce5f05bd590eca8106508e06/kiwisolver-1.4.7-cp313-cp313-win32.whl", hash = "sha256:f4c9aee212bc89d4e13f58be11a56cc8036cabad119259d12ace14b34476fd07", size = 46364 }, + { url = "https://files.pythonhosted.org/packages/0b/db/32e897e43a330eee8e4770bfd2737a9584b23e33587a0812b8e20aac38f7/kiwisolver-1.4.7-cp313-cp313-win_amd64.whl", hash = "sha256:8a3ec5aa8e38fc4c8af308917ce12c536f1c88452ce554027e55b22cbbfbff76", size = 55887 }, + { url = "https://files.pythonhosted.org/packages/c8/a4/df2bdca5270ca85fd25253049eb6708d4127be2ed0e5c2650217450b59e9/kiwisolver-1.4.7-cp313-cp313-win_arm64.whl", hash = "sha256:76c8094ac20ec259471ac53e774623eb62e6e1f56cd8690c67ce6ce4fcb05650", size = 48530 }, +] + +[[package]] +name = "lazy-loader" +version = "0.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6f/6b/c875b30a1ba490860c93da4cabf479e03f584eba06fe5963f6f6644653d8/lazy_loader-0.4.tar.gz", hash = "sha256:47c75182589b91a4e1a85a136c074285a5ad4d9f39c63e0d7fb76391c4574cd1", size = 15431 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/83/60/d497a310bde3f01cb805196ac61b7ad6dc5dcf8dce66634dc34364b20b4f/lazy_loader-0.4-py3-none-any.whl", hash = "sha256:342aa8e14d543a154047afb4ba8ef17f5563baad3fc610d7b15b213b0f119efc", size = 12097 }, +] + +[[package]] +name = "llvmlite" +version = "0.43.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9f/3d/f513755f285db51ab363a53e898b85562e950f79a2e6767a364530c2f645/llvmlite-0.43.0.tar.gz", hash = "sha256:ae2b5b5c3ef67354824fb75517c8db5fbe93bc02cd9671f3c62271626bc041d5", size = 157069 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/8c/de3276d773ab6ce3ad676df5fab5aac19696b2956319d65d7dd88fb10f19/llvmlite-0.43.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3e8d0618cb9bfe40ac38a9633f2493d4d4e9fcc2f438d39a4e854f39cc0f5f98", size = 31064409 }, + { url = "https://files.pythonhosted.org/packages/ee/e1/38deed89ced4cf378c61e232265cfe933ccde56ae83c901aa68b477d14b1/llvmlite-0.43.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0a9a1a39d4bf3517f2af9d23d479b4175ead205c592ceeb8b89af48a327ea57", size = 28793149 }, + { url = "https://files.pythonhosted.org/packages/2f/b2/4429433eb2dc8379e2cb582502dca074c23837f8fd009907f78a24de4c25/llvmlite-0.43.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1da416ab53e4f7f3bc8d4eeba36d801cc1894b9fbfbf2022b29b6bad34a7df2", size = 42857277 }, + { url = "https://files.pythonhosted.org/packages/6b/99/5d00a7d671b1ba1751fc9f19d3b36f3300774c6eebe2bcdb5f6191763eb4/llvmlite-0.43.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:977525a1e5f4059316b183fb4fd34fa858c9eade31f165427a3977c95e3ee749", size = 43871781 }, + { url = "https://files.pythonhosted.org/packages/20/ab/ed5ed3688c6ba4f0b8d789da19fd8e30a9cf7fc5852effe311bc5aefe73e/llvmlite-0.43.0-cp311-cp311-win_amd64.whl", hash = "sha256:d5bd550001d26450bd90777736c69d68c487d17bf371438f975229b2b8241a91", size = 28107433 }, + { url = "https://files.pythonhosted.org/packages/0b/67/9443509e5d2b6d8587bae3ede5598fa8bd586b1c7701696663ea8af15b5b/llvmlite-0.43.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f99b600aa7f65235a5a05d0b9a9f31150c390f31261f2a0ba678e26823ec38f7", size = 31064409 }, + { url = "https://files.pythonhosted.org/packages/a2/9c/24139d3712d2d352e300c39c0e00d167472c08b3bd350c3c33d72c88ff8d/llvmlite-0.43.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:35d80d61d0cda2d767f72de99450766250560399edc309da16937b93d3b676e7", size = 28793145 }, + { url = "https://files.pythonhosted.org/packages/bf/f1/4c205a48488e574ee9f6505d50e84370a978c90f08dab41a42d8f2c576b6/llvmlite-0.43.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eccce86bba940bae0d8d48ed925f21dbb813519169246e2ab292b5092aba121f", size = 42857276 }, + { url = "https://files.pythonhosted.org/packages/00/5f/323c4d56e8401c50185fd0e875fcf06b71bf825a863699be1eb10aa2a9cb/llvmlite-0.43.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:df6509e1507ca0760787a199d19439cc887bfd82226f5af746d6977bd9f66844", size = 43871781 }, + { url = "https://files.pythonhosted.org/packages/c6/94/dea10e263655ce78d777e78d904903faae39d1fc440762be4a9dc46bed49/llvmlite-0.43.0-cp312-cp312-win_amd64.whl", hash = "sha256:7a2872ee80dcf6b5dbdc838763d26554c2a18aa833d31a2635bff16aafefb9c9", size = 28107442 }, +] + +[[package]] +name = "locket" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2f/83/97b29fe05cb6ae28d2dbd30b81e2e402a3eed5f460c26e9eaa5895ceacf5/locket-1.0.0.tar.gz", hash = "sha256:5c0d4c052a8bbbf750e056a8e65ccd309086f4f0f18a2eac306a8dfa4112a632", size = 4350 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/db/bc/83e112abc66cd466c6b83f99118035867cecd41802f8d044638aa78a106e/locket-1.0.0-py2.py3-none-any.whl", hash = "sha256:b6c819a722f7b6bd955b80781788e4a66a55628b858d347536b7e81325a3a5e3", size = 4398 }, +] + +[[package]] +name = "magicgui" +version = "0.10.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "docstring-parser" }, + { name = "psygnal" }, + { name = "qtpy" }, + { name = "superqt", extra = ["iconify"] }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ce/44/405f7028b00d94e29ddbaff00f2674e548d3bff8d343fbf7500bd77aa071/magicgui-0.10.0.tar.gz", hash = "sha256:56dbe28afc526809e09932cd6caad8fc1a8305fe66c8feca16f797a04b5aee7c", size = 20942460 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b6/42/7e4f03201dfc10b4a8d4d94d183c878d7d0d4f2eee173e95294c71828014/magicgui-0.10.0-py3-none-any.whl", hash = "sha256:836276d61b0d9752eb8a215ff9f140c9c07ed5659b6e2a3c78df1cc96399aecd", size = 126758 }, +] + +[[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 } +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 }, +] + +[[package]] +name = "markupsafe" +version = "3.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/28/bbf83e3f76936960b850435576dd5e67034e200469571be53f69174a2dfd/MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d", size = 14353 }, + { url = "https://files.pythonhosted.org/packages/6c/30/316d194b093cde57d448a4c3209f22e3046c5bb2fb0820b118292b334be7/MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93", size = 12392 }, + { url = "https://files.pythonhosted.org/packages/f2/96/9cdafba8445d3a53cae530aaf83c38ec64c4d5427d975c974084af5bc5d2/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832", size = 23984 }, + { url = "https://files.pythonhosted.org/packages/f1/a4/aefb044a2cd8d7334c8a47d3fb2c9f328ac48cb349468cc31c20b539305f/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84", size = 23120 }, + { url = "https://files.pythonhosted.org/packages/8d/21/5e4851379f88f3fad1de30361db501300d4f07bcad047d3cb0449fc51f8c/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca", size = 23032 }, + { url = "https://files.pythonhosted.org/packages/00/7b/e92c64e079b2d0d7ddf69899c98842f3f9a60a1ae72657c89ce2655c999d/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798", size = 24057 }, + { url = "https://files.pythonhosted.org/packages/f9/ac/46f960ca323037caa0a10662ef97d0a4728e890334fc156b9f9e52bcc4ca/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e", size = 23359 }, + { url = "https://files.pythonhosted.org/packages/69/84/83439e16197337b8b14b6a5b9c2105fff81d42c2a7c5b58ac7b62ee2c3b1/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4", size = 23306 }, + { url = "https://files.pythonhosted.org/packages/9a/34/a15aa69f01e2181ed8d2b685c0d2f6655d5cca2c4db0ddea775e631918cd/MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d", size = 15094 }, + { url = "https://files.pythonhosted.org/packages/da/b8/3a3bd761922d416f3dc5d00bfbed11f66b1ab89a0c2b6e887240a30b0f6b/MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b", size = 15521 }, + { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274 }, + { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348 }, + { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149 }, + { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118 }, + { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993 }, + { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178 }, + { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319 }, + { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352 }, + { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097 }, + { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601 }, + { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274 }, + { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352 }, + { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122 }, + { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085 }, + { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978 }, + { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208 }, + { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357 }, + { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344 }, + { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101 }, + { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603 }, + { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510 }, + { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486 }, + { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480 }, + { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914 }, + { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796 }, + { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473 }, + { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114 }, + { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098 }, + { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208 }, + { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739 }, +] + +[[package]] +name = "matplotlib-inline" +version = "0.1.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/99/5b/a36a337438a14116b16480db471ad061c36c3694df7c2084a0da7ba538b7/matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90", size = 8159 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899 }, +] + +[[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 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 }, +] + +[[package]] +name = "msgpack" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cb/d0/7555686ae7ff5731205df1012ede15dd9d927f6227ea151e901c7406af4f/msgpack-1.1.0.tar.gz", hash = "sha256:dd432ccc2c72b914e4cb77afce64aab761c1137cc698be3984eee260bcb2896e", size = 167260 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/5e/a4c7154ba65d93be91f2f1e55f90e76c5f91ccadc7efc4341e6f04c8647f/msgpack-1.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3d364a55082fb2a7416f6c63ae383fbd903adb5a6cf78c5b96cc6316dc1cedc7", size = 150803 }, + { url = "https://files.pythonhosted.org/packages/60/c2/687684164698f1d51c41778c838d854965dd284a4b9d3a44beba9265c931/msgpack-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:79ec007767b9b56860e0372085f8504db5d06bd6a327a335449508bbee9648fa", size = 84343 }, + { url = "https://files.pythonhosted.org/packages/42/ae/d3adea9bb4a1342763556078b5765e666f8fdf242e00f3f6657380920972/msgpack-1.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6ad622bf7756d5a497d5b6836e7fc3752e2dd6f4c648e24b1803f6048596f701", size = 81408 }, + { url = "https://files.pythonhosted.org/packages/dc/17/6313325a6ff40ce9c3207293aee3ba50104aed6c2c1559d20d09e5c1ff54/msgpack-1.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e59bca908d9ca0de3dc8684f21ebf9a690fe47b6be93236eb40b99af28b6ea6", size = 396096 }, + { url = "https://files.pythonhosted.org/packages/a8/a1/ad7b84b91ab5a324e707f4c9761633e357820b011a01e34ce658c1dda7cc/msgpack-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e1da8f11a3dd397f0a32c76165cf0c4eb95b31013a94f6ecc0b280c05c91b59", size = 403671 }, + { url = "https://files.pythonhosted.org/packages/bb/0b/fd5b7c0b308bbf1831df0ca04ec76fe2f5bf6319833646b0a4bd5e9dc76d/msgpack-1.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:452aff037287acb1d70a804ffd022b21fa2bb7c46bee884dbc864cc9024128a0", size = 387414 }, + { url = "https://files.pythonhosted.org/packages/f0/03/ff8233b7c6e9929a1f5da3c7860eccd847e2523ca2de0d8ef4878d354cfa/msgpack-1.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8da4bf6d54ceed70e8861f833f83ce0814a2b72102e890cbdfe4b34764cdd66e", size = 383759 }, + { url = "https://files.pythonhosted.org/packages/1f/1b/eb82e1fed5a16dddd9bc75f0854b6e2fe86c0259c4353666d7fab37d39f4/msgpack-1.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:41c991beebf175faf352fb940bf2af9ad1fb77fd25f38d9142053914947cdbf6", size = 394405 }, + { url = "https://files.pythonhosted.org/packages/90/2e/962c6004e373d54ecf33d695fb1402f99b51832631e37c49273cc564ffc5/msgpack-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a52a1f3a5af7ba1c9ace055b659189f6c669cf3657095b50f9602af3a3ba0fe5", size = 396041 }, + { url = "https://files.pythonhosted.org/packages/f8/20/6e03342f629474414860c48aeffcc2f7f50ddaf351d95f20c3f1c67399a8/msgpack-1.1.0-cp311-cp311-win32.whl", hash = "sha256:58638690ebd0a06427c5fe1a227bb6b8b9fdc2bd07701bec13c2335c82131a88", size = 68538 }, + { url = "https://files.pythonhosted.org/packages/aa/c4/5a582fc9a87991a3e6f6800e9bb2f3c82972912235eb9539954f3e9997c7/msgpack-1.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:fd2906780f25c8ed5d7b323379f6138524ba793428db5d0e9d226d3fa6aa1788", size = 74871 }, + { url = "https://files.pythonhosted.org/packages/e1/d6/716b7ca1dbde63290d2973d22bbef1b5032ca634c3ff4384a958ec3f093a/msgpack-1.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d46cf9e3705ea9485687aa4001a76e44748b609d260af21c4ceea7f2212a501d", size = 152421 }, + { url = "https://files.pythonhosted.org/packages/70/da/5312b067f6773429cec2f8f08b021c06af416bba340c912c2ec778539ed6/msgpack-1.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5dbad74103df937e1325cc4bfeaf57713be0b4f15e1c2da43ccdd836393e2ea2", size = 85277 }, + { url = "https://files.pythonhosted.org/packages/28/51/da7f3ae4462e8bb98af0d5bdf2707f1b8c65a0d4f496e46b6afb06cbc286/msgpack-1.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:58dfc47f8b102da61e8949708b3eafc3504509a5728f8b4ddef84bd9e16ad420", size = 82222 }, + { url = "https://files.pythonhosted.org/packages/33/af/dc95c4b2a49cff17ce47611ca9ba218198806cad7796c0b01d1e332c86bb/msgpack-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4676e5be1b472909b2ee6356ff425ebedf5142427842aa06b4dfd5117d1ca8a2", size = 392971 }, + { url = "https://files.pythonhosted.org/packages/f1/54/65af8de681fa8255402c80eda2a501ba467921d5a7a028c9c22a2c2eedb5/msgpack-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17fb65dd0bec285907f68b15734a993ad3fc94332b5bb21b0435846228de1f39", size = 401403 }, + { url = "https://files.pythonhosted.org/packages/97/8c/e333690777bd33919ab7024269dc3c41c76ef5137b211d776fbb404bfead/msgpack-1.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a51abd48c6d8ac89e0cfd4fe177c61481aca2d5e7ba42044fd218cfd8ea9899f", size = 385356 }, + { url = "https://files.pythonhosted.org/packages/57/52/406795ba478dc1c890559dd4e89280fa86506608a28ccf3a72fbf45df9f5/msgpack-1.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2137773500afa5494a61b1208619e3871f75f27b03bcfca7b3a7023284140247", size = 383028 }, + { url = "https://files.pythonhosted.org/packages/e7/69/053b6549bf90a3acadcd8232eae03e2fefc87f066a5b9fbb37e2e608859f/msgpack-1.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:398b713459fea610861c8a7b62a6fec1882759f308ae0795b5413ff6a160cf3c", size = 391100 }, + { url = "https://files.pythonhosted.org/packages/23/f0/d4101d4da054f04274995ddc4086c2715d9b93111eb9ed49686c0f7ccc8a/msgpack-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:06f5fd2f6bb2a7914922d935d3b8bb4a7fff3a9a91cfce6d06c13bc42bec975b", size = 394254 }, + { url = "https://files.pythonhosted.org/packages/1c/12/cf07458f35d0d775ff3a2dc5559fa2e1fcd06c46f1ef510e594ebefdca01/msgpack-1.1.0-cp312-cp312-win32.whl", hash = "sha256:ad33e8400e4ec17ba782f7b9cf868977d867ed784a1f5f2ab46e7ba53b6e1e1b", size = 69085 }, + { url = "https://files.pythonhosted.org/packages/73/80/2708a4641f7d553a63bc934a3eb7214806b5b39d200133ca7f7afb0a53e8/msgpack-1.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:115a7af8ee9e8cddc10f87636767857e7e3717b7a2e97379dc2054712693e90f", size = 75347 }, + { url = "https://files.pythonhosted.org/packages/c8/b0/380f5f639543a4ac413e969109978feb1f3c66e931068f91ab6ab0f8be00/msgpack-1.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:071603e2f0771c45ad9bc65719291c568d4edf120b44eb36324dcb02a13bfddf", size = 151142 }, + { url = "https://files.pythonhosted.org/packages/c8/ee/be57e9702400a6cb2606883d55b05784fada898dfc7fd12608ab1fdb054e/msgpack-1.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0f92a83b84e7c0749e3f12821949d79485971f087604178026085f60ce109330", size = 84523 }, + { url = "https://files.pythonhosted.org/packages/7e/3a/2919f63acca3c119565449681ad08a2f84b2171ddfcff1dba6959db2cceb/msgpack-1.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4a1964df7b81285d00a84da4e70cb1383f2e665e0f1f2a7027e683956d04b734", size = 81556 }, + { url = "https://files.pythonhosted.org/packages/7c/43/a11113d9e5c1498c145a8925768ea2d5fce7cbab15c99cda655aa09947ed/msgpack-1.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59caf6a4ed0d164055ccff8fe31eddc0ebc07cf7326a2aaa0dbf7a4001cd823e", size = 392105 }, + { url = "https://files.pythonhosted.org/packages/2d/7b/2c1d74ca6c94f70a1add74a8393a0138172207dc5de6fc6269483519d048/msgpack-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0907e1a7119b337971a689153665764adc34e89175f9a34793307d9def08e6ca", size = 399979 }, + { url = "https://files.pythonhosted.org/packages/82/8c/cf64ae518c7b8efc763ca1f1348a96f0e37150061e777a8ea5430b413a74/msgpack-1.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65553c9b6da8166e819a6aa90ad15288599b340f91d18f60b2061f402b9a4915", size = 383816 }, + { url = "https://files.pythonhosted.org/packages/69/86/a847ef7a0f5ef3fa94ae20f52a4cacf596a4e4a010197fbcc27744eb9a83/msgpack-1.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7a946a8992941fea80ed4beae6bff74ffd7ee129a90b4dd5cf9c476a30e9708d", size = 380973 }, + { url = "https://files.pythonhosted.org/packages/aa/90/c74cf6e1126faa93185d3b830ee97246ecc4fe12cf9d2d31318ee4246994/msgpack-1.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4b51405e36e075193bc051315dbf29168d6141ae2500ba8cd80a522964e31434", size = 387435 }, + { url = "https://files.pythonhosted.org/packages/7a/40/631c238f1f338eb09f4acb0f34ab5862c4e9d7eda11c1b685471a4c5ea37/msgpack-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b4c01941fd2ff87c2a934ee6055bda4ed353a7846b8d4f341c428109e9fcde8c", size = 399082 }, + { url = "https://files.pythonhosted.org/packages/e9/1b/fa8a952be252a1555ed39f97c06778e3aeb9123aa4cccc0fd2acd0b4e315/msgpack-1.1.0-cp313-cp313-win32.whl", hash = "sha256:7c9a35ce2c2573bada929e0b7b3576de647b0defbd25f5139dcdaba0ae35a4cc", size = 69037 }, + { url = "https://files.pythonhosted.org/packages/b6/bc/8bd826dd03e022153bfa1766dcdec4976d6c818865ed54223d71f07862b3/msgpack-1.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:bce7d9e614a04d0883af0b3d4d501171fbfca038f12c77fa838d9f198147a23f", size = 75140 }, +] + +[[package]] +name = "multidict" +version = "6.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/be/504b89a5e9ca731cd47487e91c469064f8ae5af93b7259758dcfc2b9c848/multidict-6.1.0.tar.gz", hash = "sha256:22ae2ebf9b0c69d206c003e2f6a914ea33f0a932d4aa16f236afc049d9958f4a", size = 64002 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/93/13/df3505a46d0cd08428e4c8169a196131d1b0c4b515c3649829258843dde6/multidict-6.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3efe2c2cb5763f2f1b275ad2bf7a287d3f7ebbef35648a9726e3b69284a4f3d6", size = 48570 }, + { url = "https://files.pythonhosted.org/packages/f0/e1/a215908bfae1343cdb72f805366592bdd60487b4232d039c437fe8f5013d/multidict-6.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7053d3b0353a8b9de430a4f4b4268ac9a4fb3481af37dfe49825bf45ca24156", size = 29316 }, + { url = "https://files.pythonhosted.org/packages/70/0f/6dc70ddf5d442702ed74f298d69977f904960b82368532c88e854b79f72b/multidict-6.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:27e5fc84ccef8dfaabb09d82b7d179c7cf1a3fbc8a966f8274fcb4ab2eb4cadb", size = 29640 }, + { url = "https://files.pythonhosted.org/packages/d8/6d/9c87b73a13d1cdea30b321ef4b3824449866bd7f7127eceed066ccb9b9ff/multidict-6.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e2b90b43e696f25c62656389d32236e049568b39320e2735d51f08fd362761b", size = 131067 }, + { url = "https://files.pythonhosted.org/packages/cc/1e/1b34154fef373371fd6c65125b3d42ff5f56c7ccc6bfff91b9b3c60ae9e0/multidict-6.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d83a047959d38a7ff552ff94be767b7fd79b831ad1cd9920662db05fec24fe72", size = 138507 }, + { url = "https://files.pythonhosted.org/packages/fb/e0/0bc6b2bac6e461822b5f575eae85da6aae76d0e2a79b6665d6206b8e2e48/multidict-6.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d1a9dd711d0877a1ece3d2e4fea11a8e75741ca21954c919406b44e7cf971304", size = 133905 }, + { url = "https://files.pythonhosted.org/packages/ba/af/73d13b918071ff9b2205fcf773d316e0f8fefb4ec65354bbcf0b10908cc6/multidict-6.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec2abea24d98246b94913b76a125e855eb5c434f7c46546046372fe60f666351", size = 129004 }, + { url = "https://files.pythonhosted.org/packages/74/21/23960627b00ed39643302d81bcda44c9444ebcdc04ee5bedd0757513f259/multidict-6.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4867cafcbc6585e4b678876c489b9273b13e9fff9f6d6d66add5e15d11d926cb", size = 121308 }, + { url = "https://files.pythonhosted.org/packages/8b/5c/cf282263ffce4a596ed0bb2aa1a1dddfe1996d6a62d08842a8d4b33dca13/multidict-6.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5b48204e8d955c47c55b72779802b219a39acc3ee3d0116d5080c388970b76e3", size = 132608 }, + { url = "https://files.pythonhosted.org/packages/d7/3e/97e778c041c72063f42b290888daff008d3ab1427f5b09b714f5a8eff294/multidict-6.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d8fff389528cad1618fb4b26b95550327495462cd745d879a8c7c2115248e399", size = 127029 }, + { url = "https://files.pythonhosted.org/packages/47/ac/3efb7bfe2f3aefcf8d103e9a7162572f01936155ab2f7ebcc7c255a23212/multidict-6.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a7a9541cd308eed5e30318430a9c74d2132e9a8cb46b901326272d780bf2d423", size = 137594 }, + { url = "https://files.pythonhosted.org/packages/42/9b/6c6e9e8dc4f915fc90a9b7798c44a30773dea2995fdcb619870e705afe2b/multidict-6.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:da1758c76f50c39a2efd5e9859ce7d776317eb1dd34317c8152ac9251fc574a3", size = 134556 }, + { url = "https://files.pythonhosted.org/packages/1d/10/8e881743b26aaf718379a14ac58572a240e8293a1c9d68e1418fb11c0f90/multidict-6.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c943a53e9186688b45b323602298ab727d8865d8c9ee0b17f8d62d14b56f0753", size = 130993 }, + { url = "https://files.pythonhosted.org/packages/45/84/3eb91b4b557442802d058a7579e864b329968c8d0ea57d907e7023c677f2/multidict-6.1.0-cp311-cp311-win32.whl", hash = "sha256:90f8717cb649eea3504091e640a1b8568faad18bd4b9fcd692853a04475a4b80", size = 26405 }, + { url = "https://files.pythonhosted.org/packages/9f/0b/ad879847ecbf6d27e90a6eabb7eff6b62c129eefe617ea45eae7c1f0aead/multidict-6.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:82176036e65644a6cc5bd619f65f6f19781e8ec2e5330f51aa9ada7504cc1926", size = 28795 }, + { url = "https://files.pythonhosted.org/packages/fd/16/92057c74ba3b96d5e211b553895cd6dc7cc4d1e43d9ab8fafc727681ef71/multidict-6.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b04772ed465fa3cc947db808fa306d79b43e896beb677a56fb2347ca1a49c1fa", size = 48713 }, + { url = "https://files.pythonhosted.org/packages/94/3d/37d1b8893ae79716179540b89fc6a0ee56b4a65fcc0d63535c6f5d96f217/multidict-6.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6180c0ae073bddeb5a97a38c03f30c233e0a4d39cd86166251617d1bbd0af436", size = 29516 }, + { url = "https://files.pythonhosted.org/packages/a2/12/adb6b3200c363062f805275b4c1e656be2b3681aada66c80129932ff0bae/multidict-6.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:071120490b47aa997cca00666923a83f02c7fbb44f71cf7f136df753f7fa8761", size = 29557 }, + { url = "https://files.pythonhosted.org/packages/47/e9/604bb05e6e5bce1e6a5cf80a474e0f072e80d8ac105f1b994a53e0b28c42/multidict-6.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50b3a2710631848991d0bf7de077502e8994c804bb805aeb2925a981de58ec2e", size = 130170 }, + { url = "https://files.pythonhosted.org/packages/7e/13/9efa50801785eccbf7086b3c83b71a4fb501a4d43549c2f2f80b8787d69f/multidict-6.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b58c621844d55e71c1b7f7c498ce5aa6985d743a1a59034c57a905b3f153c1ef", size = 134836 }, + { url = "https://files.pythonhosted.org/packages/bf/0f/93808b765192780d117814a6dfcc2e75de6dcc610009ad408b8814dca3ba/multidict-6.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55b6d90641869892caa9ca42ff913f7ff1c5ece06474fbd32fb2cf6834726c95", size = 133475 }, + { url = "https://files.pythonhosted.org/packages/d3/c8/529101d7176fe7dfe1d99604e48d69c5dfdcadb4f06561f465c8ef12b4df/multidict-6.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b820514bfc0b98a30e3d85462084779900347e4d49267f747ff54060cc33925", size = 131049 }, + { url = "https://files.pythonhosted.org/packages/ca/0c/fc85b439014d5a58063e19c3a158a889deec399d47b5269a0f3b6a2e28bc/multidict-6.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10a9b09aba0c5b48c53761b7c720aaaf7cf236d5fe394cd399c7ba662d5f9966", size = 120370 }, + { url = "https://files.pythonhosted.org/packages/db/46/d4416eb20176492d2258fbd47b4abe729ff3b6e9c829ea4236f93c865089/multidict-6.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1e16bf3e5fc9f44632affb159d30a437bfe286ce9e02754759be5536b169b305", size = 125178 }, + { url = "https://files.pythonhosted.org/packages/5b/46/73697ad7ec521df7de5531a32780bbfd908ded0643cbe457f981a701457c/multidict-6.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:76f364861c3bfc98cbbcbd402d83454ed9e01a5224bb3a28bf70002a230f73e2", size = 119567 }, + { url = "https://files.pythonhosted.org/packages/cd/ed/51f060e2cb0e7635329fa6ff930aa5cffa17f4c7f5c6c3ddc3500708e2f2/multidict-6.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:820c661588bd01a0aa62a1283f20d2be4281b086f80dad9e955e690c75fb54a2", size = 129822 }, + { url = "https://files.pythonhosted.org/packages/df/9e/ee7d1954b1331da3eddea0c4e08d9142da5f14b1321c7301f5014f49d492/multidict-6.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:0e5f362e895bc5b9e67fe6e4ded2492d8124bdf817827f33c5b46c2fe3ffaca6", size = 128656 }, + { url = "https://files.pythonhosted.org/packages/77/00/8538f11e3356b5d95fa4b024aa566cde7a38aa7a5f08f4912b32a037c5dc/multidict-6.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3ec660d19bbc671e3a6443325f07263be452c453ac9e512f5eb935e7d4ac28b3", size = 125360 }, + { url = "https://files.pythonhosted.org/packages/be/05/5d334c1f2462d43fec2363cd00b1c44c93a78c3925d952e9a71caf662e96/multidict-6.1.0-cp312-cp312-win32.whl", hash = "sha256:58130ecf8f7b8112cdb841486404f1282b9c86ccb30d3519faf301b2e5659133", size = 26382 }, + { url = "https://files.pythonhosted.org/packages/a3/bf/f332a13486b1ed0496d624bcc7e8357bb8053823e8cd4b9a18edc1d97e73/multidict-6.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:188215fc0aafb8e03341995e7c4797860181562380f81ed0a87ff455b70bf1f1", size = 28529 }, + { url = "https://files.pythonhosted.org/packages/22/67/1c7c0f39fe069aa4e5d794f323be24bf4d33d62d2a348acdb7991f8f30db/multidict-6.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:d569388c381b24671589335a3be6e1d45546c2988c2ebe30fdcada8457a31008", size = 48771 }, + { url = "https://files.pythonhosted.org/packages/3c/25/c186ee7b212bdf0df2519eacfb1981a017bda34392c67542c274651daf23/multidict-6.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:052e10d2d37810b99cc170b785945421141bf7bb7d2f8799d431e7db229c385f", size = 29533 }, + { url = "https://files.pythonhosted.org/packages/67/5e/04575fd837e0958e324ca035b339cea174554f6f641d3fb2b4f2e7ff44a2/multidict-6.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f90c822a402cb865e396a504f9fc8173ef34212a342d92e362ca498cad308e28", size = 29595 }, + { url = "https://files.pythonhosted.org/packages/d3/b2/e56388f86663810c07cfe4a3c3d87227f3811eeb2d08450b9e5d19d78876/multidict-6.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b225d95519a5bf73860323e633a664b0d85ad3d5bede6d30d95b35d4dfe8805b", size = 130094 }, + { url = "https://files.pythonhosted.org/packages/6c/ee/30ae9b4186a644d284543d55d491fbd4239b015d36b23fea43b4c94f7052/multidict-6.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:23bfd518810af7de1116313ebd9092cb9aa629beb12f6ed631ad53356ed6b86c", size = 134876 }, + { url = "https://files.pythonhosted.org/packages/84/c7/70461c13ba8ce3c779503c70ec9d0345ae84de04521c1f45a04d5f48943d/multidict-6.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c09fcfdccdd0b57867577b719c69e347a436b86cd83747f179dbf0cc0d4c1f3", size = 133500 }, + { url = "https://files.pythonhosted.org/packages/4a/9f/002af221253f10f99959561123fae676148dd730e2daa2cd053846a58507/multidict-6.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf6bea52ec97e95560af5ae576bdac3aa3aae0b6758c6efa115236d9e07dae44", size = 131099 }, + { url = "https://files.pythonhosted.org/packages/82/42/d1c7a7301d52af79d88548a97e297f9d99c961ad76bbe6f67442bb77f097/multidict-6.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57feec87371dbb3520da6192213c7d6fc892d5589a93db548331954de8248fd2", size = 120403 }, + { url = "https://files.pythonhosted.org/packages/68/f3/471985c2c7ac707547553e8f37cff5158030d36bdec4414cb825fbaa5327/multidict-6.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0c3f390dc53279cbc8ba976e5f8035eab997829066756d811616b652b00a23a3", size = 125348 }, + { url = "https://files.pythonhosted.org/packages/67/2c/e6df05c77e0e433c214ec1d21ddd203d9a4770a1f2866a8ca40a545869a0/multidict-6.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:59bfeae4b25ec05b34f1956eaa1cb38032282cd4dfabc5056d0a1ec4d696d3aa", size = 119673 }, + { url = "https://files.pythonhosted.org/packages/c5/cd/bc8608fff06239c9fb333f9db7743a1b2eafe98c2666c9a196e867a3a0a4/multidict-6.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:b2f59caeaf7632cc633b5cf6fc449372b83bbdf0da4ae04d5be36118e46cc0aa", size = 129927 }, + { url = "https://files.pythonhosted.org/packages/44/8e/281b69b7bc84fc963a44dc6e0bbcc7150e517b91df368a27834299a526ac/multidict-6.1.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:37bb93b2178e02b7b618893990941900fd25b6b9ac0fa49931a40aecdf083fe4", size = 128711 }, + { url = "https://files.pythonhosted.org/packages/12/a4/63e7cd38ed29dd9f1881d5119f272c898ca92536cdb53ffe0843197f6c85/multidict-6.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4e9f48f58c2c523d5a06faea47866cd35b32655c46b443f163d08c6d0ddb17d6", size = 125519 }, + { url = "https://files.pythonhosted.org/packages/38/e0/4f5855037a72cd8a7a2f60a3952d9aa45feedb37ae7831642102604e8a37/multidict-6.1.0-cp313-cp313-win32.whl", hash = "sha256:3a37ffb35399029b45c6cc33640a92bef403c9fd388acce75cdc88f58bd19a81", size = 26426 }, + { url = "https://files.pythonhosted.org/packages/7e/a5/17ee3a4db1e310b7405f5d25834460073a8ccd86198ce044dfaf69eac073/multidict-6.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:e9aa71e15d9d9beaad2c6b9319edcdc0a49a43ef5c0a4c8265ca9ee7d6c67774", size = 28531 }, + { url = "https://files.pythonhosted.org/packages/99/b7/b9e70fde2c0f0c9af4cc5277782a89b66d35948ea3369ec9f598358c3ac5/multidict-6.1.0-py3-none-any.whl", hash = "sha256:48e171e52d1c4d33888e529b999e5900356b9ae588c2f09a52dcefb158b27506", size = 10051 }, +] + +[[package]] +name = "napari" +version = "0.5.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "app-model" }, + { name = "appdirs" }, + { name = "cachey" }, + { name = "certifi" }, + { name = "dask", extra = ["array"] }, + { name = "imageio" }, + { name = "jsonschema" }, + { name = "lazy-loader" }, + { name = "magicgui" }, + { name = "napari-console" }, + { name = "napari-plugin-engine" }, + { name = "napari-svg" }, + { name = "npe2" }, + { name = "numpy" }, + { name = "numpydoc" }, + { name = "pandas" }, + { name = "pillow" }, + { name = "pint" }, + { name = "psutil" }, + { name = "psygnal" }, + { name = "pydantic" }, + { name = "pygments" }, + { name = "pyopengl" }, + { name = "pywin32", marker = "sys_platform == 'win32'" }, + { name = "pyyaml" }, + { name = "qtpy" }, + { name = "scikit-image", extra = ["data"] }, + { name = "scipy" }, + { name = "superqt" }, + { name = "tifffile" }, + { name = "toolz" }, + { name = "tqdm" }, + { name = "typing-extensions" }, + { name = "vispy" }, + { name = "wrapt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2a/f3/1fbb155aa6359e8ec62753c8d1e0357dc61aba1cb5f3dac5d447a437aacb/napari-0.5.5.tar.gz", hash = "sha256:8c634957f98cce20352405b1c50e9e17ad7633b87d4808fc18740060c18d3a66", size = 2837588 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/75/e3/ccc78078cdb6a8f15eeeafa69f82bd0ff72a80e1a903bd1f6447688ac87e/napari-0.5.5-py3-none-any.whl", hash = "sha256:4171b5dec707b3745e556d6a2a705a3d5b4778db6373c5df934be8689a07cfda", size = 3076865 }, +] + +[package.optional-dependencies] +all = [ + { name = "napari-plugin-manager" }, + { name = "numba" }, + { name = "pyqt5" }, + { name = "triangle", marker = "platform_machine != 'arm64'" }, + { name = "zarr" }, +] + +[[package]] +name = "napari-console" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ipykernel" }, + { name = "ipython" }, + { name = "qtconsole" }, + { name = "qtpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2d/c6/4b02a952567be03855bb86a0480ad2a9fb8890dfa0d89db14de36396aa41/napari_console-0.1.2.tar.gz", hash = "sha256:2e6311104715673c70b1d4c44d77ae19fc6ec4ca61fed1670602c5bc2cd3be68", size = 19961 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4b/98/6d2b2aa4ecf9c1ced5090763f6fb15e65fd8e8c82d0a882ecf1ac5d749bd/napari_console-0.1.2-py3-none-any.whl", hash = "sha256:104c71c4ff0e311f2089ccdc4257a37d4f8074145a42415dbec1797f3410b0dc", size = 9990 }, +] + +[[package]] +name = "napari-ome-zarr" +version = "0.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "napari" }, + { name = "numpy" }, + { name = "ome-zarr" }, + { name = "vispy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/67/50/630bff98a60e71fad6a1e9a5cee3df7a043c88668ff752dacedbf0d987d1/napari_ome_zarr-0.6.1.tar.gz", hash = "sha256:3d3054823c2adaa4d2bf370c46adcc4a54192cfec3bbbe98d144e50b95bd6f89", size = 21099 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0d/81/8088d4d695ff7b93af4b1224448ec3270990c37d4e77bdb454c0078384e7/napari_ome_zarr-0.6.1-py3-none-any.whl", hash = "sha256:5b8ff2ef448c179a63261e240b8a1dcc92f79afe67aea4d9ecd14f8bccff7585", size = 9021 }, +] + +[[package]] +name = "napari-plugin-engine" +version = "0.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c3/a1/2794988f0075bfe18d7934516fb640af20b797001901c7900bfbc44d0a7a/napari-plugin-engine-0.2.0.tar.gz", hash = "sha256:fa926f869d70e0d652c005661948cd0c7fee5508ae17d437937f34f5287590b3", size = 54725 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c9/60/eaf45290008cfb7cc1e99f6427540704fafc5c65a3a25ff0024085cd2e0d/napari_plugin_engine-0.2.0-py3-none-any.whl", hash = "sha256:bd148b46ffb76f82623a6577741712f45ff30be66b3564fdc5446dfd7007ecc3", size = 33358 }, +] + +[[package]] +name = "napari-plugin-manager" +version = "0.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "npe2" }, + { name = "pip" }, + { name = "qtpy" }, + { name = "superqt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/5c/4f305188c719d648065f711155a64490b3af061b163227ff5a3e42465bd0/napari_plugin_manager-0.1.3.tar.gz", hash = "sha256:67e73f2d280f901c2de4879534fa69612b0a1debde412995714c3bc609a44e85", size = 1176046 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/68/98c60afe5fee5471eb334b632057a39b3ab0dd17d6128b2c96d9d845c028/napari_plugin_manager-0.1.3-py3-none-any.whl", hash = "sha256:5b0a316adc637c77c7e24e68cd1e130a859b1f9187adcc1e0033eb8a34d3275c", size = 38470 }, +] + +[[package]] +name = "napari-svg" +version = "0.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "imageio" }, + { name = "numpy" }, + { name = "vispy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ec/9e/daa80264951cf85b1967ff5faf8f478439173d554ef4e113772d8baac837/napari_svg-0.2.0.tar.gz", hash = "sha256:9e2f295bae33e45c0195032bbb2cb3f372e8016f0f3d69715dac3cb3505d10f6", size = 17018 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/02/e7/8cf145b19dda544a4a4eebfb4461313aa933cf6874532b7ae696fab65a90/napari_svg-0.2.0-py3-none-any.whl", hash = "sha256:700633abe7397e3c012f0e388072b92560d64f7561223686f003de3d3bc60a14", size = 15950 }, +] + +[[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 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195 }, +] + +[[package]] +name = "networkx" +version = "3.4.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fd/1d/06475e1cd5264c0b870ea2cc6fdb3e37177c1e565c43f56ff17a10e3937f/networkx-3.4.2.tar.gz", hash = "sha256:307c3669428c5362aab27c8a1260aa8f47c4e91d3891f48be0141738d8d053e1", size = 2151368 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl", hash = "sha256:df5d4365b724cf81b8c6a7312509d0c22386097011ad1abe274afd5e9d3bbc5f", size = 1723263 }, +] + +[[package]] +name = "nodeenv" +version = "1.9.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314 }, +] + +[[package]] +name = "npe2" +version = "0.7.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "appdirs" }, + { name = "build" }, + { name = "psygnal" }, + { name = "pydantic" }, + { name = "pyyaml" }, + { name = "rich" }, + { name = "tomli-w" }, + { name = "typer" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c0/5a/a27548db6725f2f9415be83d0eed4e75d13b5ff71d40c5ae1a7985c04708/npe2-0.7.7.tar.gz", hash = "sha256:8e5e3ef3b2ea020c9b8bb31c589148f0fd486779a939b52e4f3c7fea422a9136", size = 117533 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6c/4c/1d459c6915cc26d61c2c182d213770670dfe7aa1a00e0006ac05fbb66df7/npe2-0.7.7-py3-none-any.whl", hash = "sha256:ad634992c2728a641511d5ff23d1a0abddb68258036a2fd066f48a9010495b58", size = 92564 }, +] + +[[package]] +name = "numba" +version = "0.60.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "llvmlite" }, + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3c/93/2849300a9184775ba274aba6f82f303343669b0592b7bb0849ea713dabb0/numba-0.60.0.tar.gz", hash = "sha256:5df6158e5584eece5fc83294b949fd30b9f1125df7708862205217e068aabf16", size = 2702171 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/98/ad/df18d492a8f00d29a30db307904b9b296e37507034eedb523876f3a2e13e/numba-0.60.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a17b70fc9e380ee29c42717e8cc0bfaa5556c416d94f9aa96ba13acb41bdece8", size = 2647254 }, + { url = "https://files.pythonhosted.org/packages/9a/51/a4dc2c01ce7a850b8e56ff6d5381d047a5daea83d12bad08aa071d34b2ee/numba-0.60.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3fb02b344a2a80efa6f677aa5c40cd5dd452e1b35f8d1c2af0dfd9ada9978e4b", size = 2649970 }, + { url = "https://files.pythonhosted.org/packages/f9/4c/8889ac94c0b33dca80bed11564b8c6d9ea14d7f094e674c58e5c5b05859b/numba-0.60.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5f4fde652ea604ea3c86508a3fb31556a6157b2c76c8b51b1d45eb40c8598703", size = 3412492 }, + { url = "https://files.pythonhosted.org/packages/57/03/2b4245b05b71c0cee667e6a0b51606dfa7f4157c9093d71c6b208385a611/numba-0.60.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4142d7ac0210cc86432b818338a2bc368dc773a2f5cf1e32ff7c5b378bd63ee8", size = 3705018 }, + { url = "https://files.pythonhosted.org/packages/79/89/2d924ca60dbf949f18a6fec223a2445f5f428d9a5f97a6b29c2122319015/numba-0.60.0-cp311-cp311-win_amd64.whl", hash = "sha256:cac02c041e9b5bc8cf8f2034ff6f0dbafccd1ae9590dc146b3a02a45e53af4e2", size = 2686920 }, + { url = "https://files.pythonhosted.org/packages/eb/5c/b5ec752c475e78a6c3676b67c514220dbde2725896bbb0b6ec6ea54b2738/numba-0.60.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d7da4098db31182fc5ffe4bc42c6f24cd7d1cb8a14b59fd755bfee32e34b8404", size = 2647866 }, + { url = "https://files.pythonhosted.org/packages/65/42/39559664b2e7c15689a638c2a38b3b74c6e69a04e2b3019b9f7742479188/numba-0.60.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:38d6ea4c1f56417076ecf8fc327c831ae793282e0ff51080c5094cb726507b1c", size = 2650208 }, + { url = "https://files.pythonhosted.org/packages/67/88/c4459ccc05674ef02119abf2888ccd3e2fed12a323f52255f4982fc95876/numba-0.60.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:62908d29fb6a3229c242e981ca27e32a6e606cc253fc9e8faeb0e48760de241e", size = 3466946 }, + { url = "https://files.pythonhosted.org/packages/8b/41/ac11cf33524def12aa5bd698226ae196a1185831c05ed29dc0c56eaa308b/numba-0.60.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0ebaa91538e996f708f1ab30ef4d3ddc344b64b5227b67a57aa74f401bb68b9d", size = 3761463 }, + { url = "https://files.pythonhosted.org/packages/ca/bd/0fe29fcd1b6a8de479a4ed25c6e56470e467e3611c079d55869ceef2b6d1/numba-0.60.0-cp312-cp312-win_amd64.whl", hash = "sha256:f75262e8fe7fa96db1dca93d53a194a38c46da28b112b8a4aca168f0df860347", size = 2707588 }, +] + +[[package]] +name = "numcodecs" +version = "0.13.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/85/56/8895a76abe4ec94ebd01eeb6d74f587bc4cddd46569670e1402852a5da13/numcodecs-0.13.1.tar.gz", hash = "sha256:a3cf37881df0898f3a9c0d4477df88133fe85185bffe57ba31bcc2fa207709bc", size = 5955215 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f0/78/34b8e869ef143e88d62e8231f4dbfcad85e5c41302a11fc5bd2228a13df5/numcodecs-0.13.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2eda97dd2f90add98df6d295f2c6ae846043396e3d51a739ca5db6c03b5eb666", size = 1580199 }, + { url = "https://files.pythonhosted.org/packages/3b/cf/f70797d86bb585d258d1e6993dced30396f2044725b96ce8bcf87a02be9c/numcodecs-0.13.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2a86f5367af9168e30f99727ff03b27d849c31ad4522060dde0bce2923b3a8bc", size = 1177203 }, + { url = "https://files.pythonhosted.org/packages/a8/b5/d14ad69b63fde041153dfd05d7181a49c0d4864de31a7a1093c8370da957/numcodecs-0.13.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233bc7f26abce24d57e44ea8ebeb5cd17084690b4e7409dd470fdb75528d615f", size = 8868743 }, + { url = "https://files.pythonhosted.org/packages/13/d4/27a7b5af0b33f6d61e198faf177fbbf3cb83ff10d9d1a6857b7efc525ad5/numcodecs-0.13.1-cp311-cp311-win_amd64.whl", hash = "sha256:796b3e6740107e4fa624cc636248a1580138b3f1c579160f260f76ff13a4261b", size = 829603 }, + { url = "https://files.pythonhosted.org/packages/37/3a/bc09808425e7d3df41e5fc73fc7a802c429ba8c6b05e55f133654ade019d/numcodecs-0.13.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5195bea384a6428f8afcece793860b1ab0ae28143c853f0b2b20d55a8947c917", size = 1575806 }, + { url = "https://files.pythonhosted.org/packages/3a/cc/dc74d0bfdf9ec192332a089d199f1e543e747c556b5659118db7a437dcca/numcodecs-0.13.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3501a848adaddce98a71a262fee15cd3618312692aa419da77acd18af4a6a3f6", size = 1178233 }, + { url = "https://files.pythonhosted.org/packages/d4/ce/434e8e3970b8e92ae9ab6d9db16cb9bc7aa1cd02e17c11de6848224100a1/numcodecs-0.13.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2230484e6102e5fa3cc1a5dd37ca1f92dfbd183d91662074d6f7574e3e8f53", size = 8857827 }, + { url = "https://files.pythonhosted.org/packages/83/e7/1d8b1b266a92f9013c755b1c146c5ad71a2bff147ecbc67f86546a2e4d6a/numcodecs-0.13.1-cp312-cp312-win_amd64.whl", hash = "sha256:e5db4824ebd5389ea30e54bc8aeccb82d514d28b6b68da6c536b8fa4596f4bca", size = 826539 }, + { url = "https://files.pythonhosted.org/packages/83/8b/06771dead2cc4a8ae1ea9907737cf1c8d37a323392fa28f938a586373468/numcodecs-0.13.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7a60d75179fd6692e301ddfb3b266d51eb598606dcae7b9fc57f986e8d65cb43", size = 1571660 }, + { url = "https://files.pythonhosted.org/packages/f9/ea/d925bf85f92dfe4635356018da9fe4bfecb07b1c72f62b01c1bc47f936b1/numcodecs-0.13.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3f593c7506b0ab248961a3b13cb148cc6e8355662ff124ac591822310bc55ecf", size = 1169925 }, + { url = "https://files.pythonhosted.org/packages/0f/d6/643a3839d571d8e439a2c77dc4b0b8cab18d96ac808e4a81dbe88e959ab6/numcodecs-0.13.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80d3071465f03522e776a31045ddf2cfee7f52df468b977ed3afdd7fe5869701", size = 8814257 }, + { url = "https://files.pythonhosted.org/packages/a6/c5/f3e56bc9b4e438a287fff738993d6d11abef368c0328a612ac2842ba9fca/numcodecs-0.13.1-cp313-cp313-win_amd64.whl", hash = "sha256:90d3065ae74c9342048ae0046006f99dcb1388b7288da5a19b3bddf9c30c3176", size = 821887 }, +] + +[[package]] +name = "numpy" +version = "2.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a9/75/10dd1f8116a8b796cb2c737b674e02d02e80454bda953fa7e65d8c12b016/numpy-2.0.2.tar.gz", hash = "sha256:883c987dee1880e2a864ab0dc9892292582510604156762362d9326444636e78", size = 18902015 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8b/cf/034500fb83041aa0286e0fb16e7c76e5c8b67c0711bb6e9e9737a717d5fe/numpy-2.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:49ca4decb342d66018b01932139c0961a8f9ddc7589611158cb3c27cbcf76448", size = 21169137 }, + { url = "https://files.pythonhosted.org/packages/4a/d9/32de45561811a4b87fbdee23b5797394e3d1504b4a7cf40c10199848893e/numpy-2.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:11a76c372d1d37437857280aa142086476136a8c0f373b2e648ab2c8f18fb195", size = 13703552 }, + { url = "https://files.pythonhosted.org/packages/c1/ca/2f384720020c7b244d22508cb7ab23d95f179fcfff33c31a6eeba8d6c512/numpy-2.0.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:807ec44583fd708a21d4a11d94aedf2f4f3c3719035c76a2bbe1fe8e217bdc57", size = 5298957 }, + { url = "https://files.pythonhosted.org/packages/0e/78/a3e4f9fb6aa4e6fdca0c5428e8ba039408514388cf62d89651aade838269/numpy-2.0.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:8cafab480740e22f8d833acefed5cc87ce276f4ece12fdaa2e8903db2f82897a", size = 6905573 }, + { url = "https://files.pythonhosted.org/packages/a0/72/cfc3a1beb2caf4efc9d0b38a15fe34025230da27e1c08cc2eb9bfb1c7231/numpy-2.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a15f476a45e6e5a3a79d8a14e62161d27ad897381fecfa4a09ed5322f2085669", size = 13914330 }, + { url = "https://files.pythonhosted.org/packages/ba/a8/c17acf65a931ce551fee11b72e8de63bf7e8a6f0e21add4c937c83563538/numpy-2.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13e689d772146140a252c3a28501da66dfecd77490b498b168b501835041f951", size = 19534895 }, + { url = "https://files.pythonhosted.org/packages/ba/86/8767f3d54f6ae0165749f84648da9dcc8cd78ab65d415494962c86fac80f/numpy-2.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9ea91dfb7c3d1c56a0e55657c0afb38cf1eeae4544c208dc465c3c9f3a7c09f9", size = 19937253 }, + { url = "https://files.pythonhosted.org/packages/df/87/f76450e6e1c14e5bb1eae6836478b1028e096fd02e85c1c37674606ab752/numpy-2.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c1c9307701fec8f3f7a1e6711f9089c06e6284b3afbbcd259f7791282d660a15", size = 14414074 }, + { url = "https://files.pythonhosted.org/packages/5c/ca/0f0f328e1e59f73754f06e1adfb909de43726d4f24c6a3f8805f34f2b0fa/numpy-2.0.2-cp311-cp311-win32.whl", hash = "sha256:a392a68bd329eafac5817e5aefeb39038c48b671afd242710b451e76090e81f4", size = 6470640 }, + { url = "https://files.pythonhosted.org/packages/eb/57/3a3f14d3a759dcf9bf6e9eda905794726b758819df4663f217d658a58695/numpy-2.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:286cd40ce2b7d652a6f22efdfc6d1edf879440e53e76a75955bc0c826c7e64dc", size = 15910230 }, + { url = "https://files.pythonhosted.org/packages/45/40/2e117be60ec50d98fa08c2f8c48e09b3edea93cfcabd5a9ff6925d54b1c2/numpy-2.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:df55d490dea7934f330006d0f81e8551ba6010a5bf035a249ef61a94f21c500b", size = 20895803 }, + { url = "https://files.pythonhosted.org/packages/46/92/1b8b8dee833f53cef3e0a3f69b2374467789e0bb7399689582314df02651/numpy-2.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8df823f570d9adf0978347d1f926b2a867d5608f434a7cff7f7908c6570dcf5e", size = 13471835 }, + { url = "https://files.pythonhosted.org/packages/7f/19/e2793bde475f1edaea6945be141aef6c8b4c669b90c90a300a8954d08f0a/numpy-2.0.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:9a92ae5c14811e390f3767053ff54eaee3bf84576d99a2456391401323f4ec2c", size = 5038499 }, + { url = "https://files.pythonhosted.org/packages/e3/ff/ddf6dac2ff0dd50a7327bcdba45cb0264d0e96bb44d33324853f781a8f3c/numpy-2.0.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:a842d573724391493a97a62ebbb8e731f8a5dcc5d285dfc99141ca15a3302d0c", size = 6633497 }, + { url = "https://files.pythonhosted.org/packages/72/21/67f36eac8e2d2cd652a2e69595a54128297cdcb1ff3931cfc87838874bd4/numpy-2.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c05e238064fc0610c840d1cf6a13bf63d7e391717d247f1bf0318172e759e692", size = 13621158 }, + { url = "https://files.pythonhosted.org/packages/39/68/e9f1126d757653496dbc096cb429014347a36b228f5a991dae2c6b6cfd40/numpy-2.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0123ffdaa88fa4ab64835dcbde75dcdf89c453c922f18dced6e27c90d1d0ec5a", size = 19236173 }, + { url = "https://files.pythonhosted.org/packages/d1/e9/1f5333281e4ebf483ba1c888b1d61ba7e78d7e910fdd8e6499667041cc35/numpy-2.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:96a55f64139912d61de9137f11bf39a55ec8faec288c75a54f93dfd39f7eb40c", size = 19634174 }, + { url = "https://files.pythonhosted.org/packages/71/af/a469674070c8d8408384e3012e064299f7a2de540738a8e414dcfd639996/numpy-2.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ec9852fb39354b5a45a80bdab5ac02dd02b15f44b3804e9f00c556bf24b4bded", size = 14099701 }, + { url = "https://files.pythonhosted.org/packages/d0/3d/08ea9f239d0e0e939b6ca52ad403c84a2bce1bde301a8eb4888c1c1543f1/numpy-2.0.2-cp312-cp312-win32.whl", hash = "sha256:671bec6496f83202ed2d3c8fdc486a8fc86942f2e69ff0e986140339a63bcbe5", size = 6174313 }, + { url = "https://files.pythonhosted.org/packages/b2/b5/4ac39baebf1fdb2e72585c8352c56d063b6126be9fc95bd2bb5ef5770c20/numpy-2.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:cfd41e13fdc257aa5778496b8caa5e856dc4896d4ccf01841daee1d96465467a", size = 15606179 }, +] + +[[package]] +name = "numpydoc" +version = "1.8.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "sphinx" }, + { name = "tabulate" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ee/59/5d1d1afb0b9598e21e7cda477935188e39ef845bcf59cb65ac20845bfd45/numpydoc-1.8.0.tar.gz", hash = "sha256:022390ab7464a44f8737f79f8b31ce1d3cfa4b4af79ccaa1aac5e8368db587fb", size = 90445 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6c/45/56d99ba9366476cd8548527667f01869279cedb9e66b28eb4dfb27701679/numpydoc-1.8.0-py3-none-any.whl", hash = "sha256:72024c7fd5e17375dec3608a27c03303e8ad00c81292667955c6fea7a3ccf541", size = 64003 }, +] + +[[package]] +name = "nviz" +version = "0.1.dev2+g065b289.d20250124" +source = { editable = "." } +dependencies = [ + { name = "napari", extra = ["all"] }, + { name = "napari-ome-zarr" }, + { name = "numpy" }, + { name = "ome-zarr" }, + { name = "tifffile" }, + { name = "xmltodict" }, + { name = "zarr" }, +] + +[package.dev-dependencies] +dev = [ + { name = "coverage" }, + { name = "pre-commit" }, + { name = "pytest" }, + { name = "setuptools-scm" }, +] + +[package.metadata] +requires-dist = [ + { name = "napari", extras = ["all"], specifier = ">=0.5.5" }, + { name = "napari-ome-zarr", specifier = ">=0.6.1" }, + { name = "numpy", specifier = "<2.1" }, + { name = "ome-zarr", specifier = ">=0.10.2" }, + { name = "tifffile", specifier = ">=2024.12.12" }, + { name = "xmltodict", specifier = ">=0.14.2" }, + { name = "zarr", specifier = ">=2.18.4" }, +] + +[package.metadata.requires-dev] +dev = [ + { name = "coverage", specifier = ">=7.6.10" }, + { name = "pre-commit", specifier = ">=4.0.1" }, + { name = "pytest", specifier = ">=8.3.4" }, + { name = "setuptools-scm", specifier = ">=8.1" }, +] + +[[package]] +name = "ome-zarr" +version = "0.10.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiohttp" }, + { name = "dask" }, + { name = "distributed" }, + { name = "fsspec", extra = ["s3"] }, + { name = "numpy" }, + { name = "requests" }, + { name = "scikit-image" }, + { name = "toolz" }, + { name = "zarr" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/04/33/3f96501c7028cf9c9238d298d7ef84c59a35722b30249456801ede19ff8c/ome_zarr-0.10.2.tar.gz", hash = "sha256:9fcc401681708a67c4449d2d085c5d3182bb4d371c34c87b6dc603d485f62df3", size = 45867 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e0/d1/89b9b8fd454e05b0188f4a3dcb629a56d8a06451259553b61a32753be540/ome_zarr-0.10.2-py3-none-any.whl", hash = "sha256:524f17e2e2d7277fc11da0c527e743b427cc3953ec27d82215fff1c4c11adb00", size = 37052 }, +] + +[[package]] +name = "packaging" +version = "24.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f", size = 163950 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451 }, +] + +[[package]] +name = "pandas" +version = "2.2.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "python-dateutil" }, + { name = "pytz" }, + { name = "tzdata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9c/d6/9f8431bacc2e19dca897724cd097b1bb224a6ad5433784a44b587c7c13af/pandas-2.2.3.tar.gz", hash = "sha256:4f18ba62b61d7e192368b84517265a99b4d7ee8912f8708660fb4a366cc82667", size = 4399213 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a8/44/d9502bf0ed197ba9bf1103c9867d5904ddcaf869e52329787fc54ed70cc8/pandas-2.2.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:66108071e1b935240e74525006034333f98bcdb87ea116de573a6a0dccb6c039", size = 12602222 }, + { url = "https://files.pythonhosted.org/packages/52/11/9eac327a38834f162b8250aab32a6781339c69afe7574368fffe46387edf/pandas-2.2.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7c2875855b0ff77b2a64a0365e24455d9990730d6431b9e0ee18ad8acee13dbd", size = 11321274 }, + { url = "https://files.pythonhosted.org/packages/45/fb/c4beeb084718598ba19aa9f5abbc8aed8b42f90930da861fcb1acdb54c3a/pandas-2.2.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cd8d0c3be0515c12fed0bdbae072551c8b54b7192c7b1fda0ba56059a0179698", size = 15579836 }, + { url = "https://files.pythonhosted.org/packages/cd/5f/4dba1d39bb9c38d574a9a22548c540177f78ea47b32f99c0ff2ec499fac5/pandas-2.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c124333816c3a9b03fbeef3a9f230ba9a737e9e5bb4060aa2107a86cc0a497fc", size = 13058505 }, + { url = "https://files.pythonhosted.org/packages/b9/57/708135b90391995361636634df1f1130d03ba456e95bcf576fada459115a/pandas-2.2.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:63cc132e40a2e084cf01adf0775b15ac515ba905d7dcca47e9a251819c575ef3", size = 16744420 }, + { url = "https://files.pythonhosted.org/packages/86/4a/03ed6b7ee323cf30404265c284cee9c65c56a212e0a08d9ee06984ba2240/pandas-2.2.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:29401dbfa9ad77319367d36940cd8a0b3a11aba16063e39632d98b0e931ddf32", size = 14440457 }, + { url = "https://files.pythonhosted.org/packages/ed/8c/87ddf1fcb55d11f9f847e3c69bb1c6f8e46e2f40ab1a2d2abadb2401b007/pandas-2.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:3fc6873a41186404dad67245896a6e440baacc92f5b716ccd1bc9ed2995ab2c5", size = 11617166 }, + { url = "https://files.pythonhosted.org/packages/17/a3/fb2734118db0af37ea7433f57f722c0a56687e14b14690edff0cdb4b7e58/pandas-2.2.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b1d432e8d08679a40e2a6d8b2f9770a5c21793a6f9f47fdd52c5ce1948a5a8a9", size = 12529893 }, + { url = "https://files.pythonhosted.org/packages/e1/0c/ad295fd74bfac85358fd579e271cded3ac969de81f62dd0142c426b9da91/pandas-2.2.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a5a1595fe639f5988ba6a8e5bc9649af3baf26df3998a0abe56c02609392e0a4", size = 11363475 }, + { url = "https://files.pythonhosted.org/packages/c6/2a/4bba3f03f7d07207481fed47f5b35f556c7441acddc368ec43d6643c5777/pandas-2.2.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5de54125a92bb4d1c051c0659e6fcb75256bf799a732a87184e5ea503965bce3", size = 15188645 }, + { url = "https://files.pythonhosted.org/packages/38/f8/d8fddee9ed0d0c0f4a2132c1dfcf0e3e53265055da8df952a53e7eaf178c/pandas-2.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fffb8ae78d8af97f849404f21411c95062db1496aeb3e56f146f0355c9989319", size = 12739445 }, + { url = "https://files.pythonhosted.org/packages/20/e8/45a05d9c39d2cea61ab175dbe6a2de1d05b679e8de2011da4ee190d7e748/pandas-2.2.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dfcb5ee8d4d50c06a51c2fffa6cff6272098ad6540aed1a76d15fb9318194d8", size = 16359235 }, + { url = "https://files.pythonhosted.org/packages/1d/99/617d07a6a5e429ff90c90da64d428516605a1ec7d7bea494235e1c3882de/pandas-2.2.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:062309c1b9ea12a50e8ce661145c6aab431b1e99530d3cd60640e255778bd43a", size = 14056756 }, + { url = "https://files.pythonhosted.org/packages/29/d4/1244ab8edf173a10fd601f7e13b9566c1b525c4f365d6bee918e68381889/pandas-2.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:59ef3764d0fe818125a5097d2ae867ca3fa64df032331b7e0917cf5d7bf66b13", size = 11504248 }, + { url = "https://files.pythonhosted.org/packages/64/22/3b8f4e0ed70644e85cfdcd57454686b9057c6c38d2f74fe4b8bc2527214a/pandas-2.2.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f00d1345d84d8c86a63e476bb4955e46458b304b9575dcf71102b5c705320015", size = 12477643 }, + { url = "https://files.pythonhosted.org/packages/e4/93/b3f5d1838500e22c8d793625da672f3eec046b1a99257666c94446969282/pandas-2.2.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3508d914817e153ad359d7e069d752cdd736a247c322d932eb89e6bc84217f28", size = 11281573 }, + { url = "https://files.pythonhosted.org/packages/f5/94/6c79b07f0e5aab1dcfa35a75f4817f5c4f677931d4234afcd75f0e6a66ca/pandas-2.2.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:22a9d949bfc9a502d320aa04e5d02feab689d61da4e7764b62c30b991c42c5f0", size = 15196085 }, + { url = "https://files.pythonhosted.org/packages/e8/31/aa8da88ca0eadbabd0a639788a6da13bb2ff6edbbb9f29aa786450a30a91/pandas-2.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3a255b2c19987fbbe62a9dfd6cff7ff2aa9ccab3fc75218fd4b7530f01efa24", size = 12711809 }, + { url = "https://files.pythonhosted.org/packages/ee/7c/c6dbdb0cb2a4344cacfb8de1c5808ca885b2e4dcfde8008266608f9372af/pandas-2.2.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:800250ecdadb6d9c78eae4990da62743b857b470883fa27f652db8bdde7f6659", size = 16356316 }, + { url = "https://files.pythonhosted.org/packages/57/b7/8b757e7d92023b832869fa8881a992696a0bfe2e26f72c9ae9f255988d42/pandas-2.2.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6374c452ff3ec675a8f46fd9ab25c4ad0ba590b71cf0656f8b6daa5202bca3fb", size = 14022055 }, + { url = "https://files.pythonhosted.org/packages/3b/bc/4b18e2b8c002572c5a441a64826252ce5da2aa738855747247a971988043/pandas-2.2.3-cp313-cp313-win_amd64.whl", hash = "sha256:61c5ad4043f791b61dd4752191d9f07f0ae412515d59ba8f005832a532f8736d", size = 11481175 }, + { url = "https://files.pythonhosted.org/packages/76/a3/a5d88146815e972d40d19247b2c162e88213ef51c7c25993942c39dbf41d/pandas-2.2.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3b71f27954685ee685317063bf13c7709a7ba74fc996b84fc6821c59b0f06468", size = 12615650 }, + { url = "https://files.pythonhosted.org/packages/9c/8c/f0fd18f6140ddafc0c24122c8a964e48294acc579d47def376fef12bcb4a/pandas-2.2.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:38cf8125c40dae9d5acc10fa66af8ea6fdf760b2714ee482ca691fc66e6fcb18", size = 11290177 }, + { url = "https://files.pythonhosted.org/packages/ed/f9/e995754eab9c0f14c6777401f7eece0943840b7a9fc932221c19d1abee9f/pandas-2.2.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ba96630bc17c875161df3818780af30e43be9b166ce51c9a18c1feae342906c2", size = 14651526 }, + { url = "https://files.pythonhosted.org/packages/25/b0/98d6ae2e1abac4f35230aa756005e8654649d305df9a28b16b9ae4353bff/pandas-2.2.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1db71525a1538b30142094edb9adc10be3f3e176748cd7acc2240c2f2e5aa3a4", size = 11871013 }, + { url = "https://files.pythonhosted.org/packages/cc/57/0f72a10f9db6a4628744c8e8f0df4e6e21de01212c7c981d31e50ffc8328/pandas-2.2.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:15c0e1e02e93116177d29ff83e8b1619c93ddc9c49083f237d4312337a61165d", size = 15711620 }, + { url = "https://files.pythonhosted.org/packages/ab/5f/b38085618b950b79d2d9164a711c52b10aefc0ae6833b96f626b7021b2ed/pandas-2.2.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ad5b65698ab28ed8d7f18790a0dc58005c7629f227be9ecc1072aa74c0c1d43a", size = 13098436 }, +] + +[[package]] +name = "parso" +version = "0.8.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/66/94/68e2e17afaa9169cf6412ab0f28623903be73d1b32e208d9e8e541bb086d/parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d", size = 400609 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18", size = 103650 }, +] + +[[package]] +name = "partd" +version = "1.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "locket" }, + { name = "toolz" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b2/3a/3f06f34820a31257ddcabdfafc2672c5816be79c7e353b02c1f318daa7d4/partd-1.4.2.tar.gz", hash = "sha256:d022c33afbdc8405c226621b015e8067888173d85f7f5ecebb3cafed9a20f02c", size = 21029 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/e7/40fb618334dcdf7c5a316c0e7343c5cd82d3d866edc100d98e29bc945ecd/partd-1.4.2-py3-none-any.whl", hash = "sha256:978e4ac767ec4ba5b86c6eaa52e5a2a3bc748a2ca839e8cc798f1cc6ce6efb0f", size = 18905 }, +] + +[[package]] +name = "pexpect" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ptyprocess", marker = "sys_platform != 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772 }, +] + +[[package]] +name = "pillow" +version = "11.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a5/26/0d95c04c868f6bdb0c447e3ee2de5564411845e36a858cfd63766bc7b563/pillow-11.0.0.tar.gz", hash = "sha256:72bacbaf24ac003fea9bff9837d1eedb6088758d41e100c1552930151f677739", size = 46737780 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f0/eb/f7e21b113dd48a9c97d364e0915b3988c6a0b6207652f5a92372871b7aa4/pillow-11.0.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:1c1d72714f429a521d8d2d018badc42414c3077eb187a59579f28e4270b4b0fc", size = 3154705 }, + { url = "https://files.pythonhosted.org/packages/25/b3/2b54a1d541accebe6bd8b1358b34ceb2c509f51cb7dcda8687362490da5b/pillow-11.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:499c3a1b0d6fc8213519e193796eb1a86a1be4b1877d678b30f83fd979811d1a", size = 2979222 }, + { url = "https://files.pythonhosted.org/packages/20/12/1a41eddad8265c5c19dda8fb6c269ce15ee25e0b9f8f26286e6202df6693/pillow-11.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c8b2351c85d855293a299038e1f89db92a2f35e8d2f783489c6f0b2b5f3fe8a3", size = 4190220 }, + { url = "https://files.pythonhosted.org/packages/a9/9b/8a8c4d07d77447b7457164b861d18f5a31ae6418ef5c07f6f878fa09039a/pillow-11.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f4dba50cfa56f910241eb7f883c20f1e7b1d8f7d91c750cd0b318bad443f4d5", size = 4291399 }, + { url = "https://files.pythonhosted.org/packages/fc/e4/130c5fab4a54d3991129800dd2801feeb4b118d7630148cd67f0e6269d4c/pillow-11.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:5ddbfd761ee00c12ee1be86c9c0683ecf5bb14c9772ddbd782085779a63dd55b", size = 4202709 }, + { url = "https://files.pythonhosted.org/packages/39/63/b3fc299528d7df1f678b0666002b37affe6b8751225c3d9c12cf530e73ed/pillow-11.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:45c566eb10b8967d71bf1ab8e4a525e5a93519e29ea071459ce517f6b903d7fa", size = 4372556 }, + { url = "https://files.pythonhosted.org/packages/c6/a6/694122c55b855b586c26c694937d36bb8d3b09c735ff41b2f315c6e66a10/pillow-11.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b4fd7bd29610a83a8c9b564d457cf5bd92b4e11e79a4ee4716a63c959699b306", size = 4287187 }, + { url = "https://files.pythonhosted.org/packages/ba/a9/f9d763e2671a8acd53d29b1e284ca298bc10a595527f6be30233cdb9659d/pillow-11.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:cb929ca942d0ec4fac404cbf520ee6cac37bf35be479b970c4ffadf2b6a1cad9", size = 4418468 }, + { url = "https://files.pythonhosted.org/packages/6e/0e/b5cbad2621377f11313a94aeb44ca55a9639adabcaaa073597a1925f8c26/pillow-11.0.0-cp311-cp311-win32.whl", hash = "sha256:006bcdd307cc47ba43e924099a038cbf9591062e6c50e570819743f5607404f5", size = 2249249 }, + { url = "https://files.pythonhosted.org/packages/dc/83/1470c220a4ff06cd75fc609068f6605e567ea51df70557555c2ab6516b2c/pillow-11.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:52a2d8323a465f84faaba5236567d212c3668f2ab53e1c74c15583cf507a0291", size = 2566769 }, + { url = "https://files.pythonhosted.org/packages/52/98/def78c3a23acee2bcdb2e52005fb2810ed54305602ec1bfcfab2bda6f49f/pillow-11.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:16095692a253047fe3ec028e951fa4221a1f3ed3d80c397e83541a3037ff67c9", size = 2254611 }, + { url = "https://files.pythonhosted.org/packages/1c/a3/26e606ff0b2daaf120543e537311fa3ae2eb6bf061490e4fea51771540be/pillow-11.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d2c0a187a92a1cb5ef2c8ed5412dd8d4334272617f532d4ad4de31e0495bd923", size = 3147642 }, + { url = "https://files.pythonhosted.org/packages/4f/d5/1caabedd8863526a6cfa44ee7a833bd97f945dc1d56824d6d76e11731939/pillow-11.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:084a07ef0821cfe4858fe86652fffac8e187b6ae677e9906e192aafcc1b69903", size = 2978999 }, + { url = "https://files.pythonhosted.org/packages/d9/ff/5a45000826a1aa1ac6874b3ec5a856474821a1b59d838c4f6ce2ee518fe9/pillow-11.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8069c5179902dcdce0be9bfc8235347fdbac249d23bd90514b7a47a72d9fecf4", size = 4196794 }, + { url = "https://files.pythonhosted.org/packages/9d/21/84c9f287d17180f26263b5f5c8fb201de0f88b1afddf8a2597a5c9fe787f/pillow-11.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f02541ef64077f22bf4924f225c0fd1248c168f86e4b7abdedd87d6ebaceab0f", size = 4300762 }, + { url = "https://files.pythonhosted.org/packages/84/39/63fb87cd07cc541438b448b1fed467c4d687ad18aa786a7f8e67b255d1aa/pillow-11.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:fcb4621042ac4b7865c179bb972ed0da0218a076dc1820ffc48b1d74c1e37fe9", size = 4210468 }, + { url = "https://files.pythonhosted.org/packages/7f/42/6e0f2c2d5c60f499aa29be14f860dd4539de322cd8fb84ee01553493fb4d/pillow-11.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:00177a63030d612148e659b55ba99527803288cea7c75fb05766ab7981a8c1b7", size = 4381824 }, + { url = "https://files.pythonhosted.org/packages/31/69/1ef0fb9d2f8d2d114db982b78ca4eeb9db9a29f7477821e160b8c1253f67/pillow-11.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8853a3bf12afddfdf15f57c4b02d7ded92c7a75a5d7331d19f4f9572a89c17e6", size = 4296436 }, + { url = "https://files.pythonhosted.org/packages/44/ea/dad2818c675c44f6012289a7c4f46068c548768bc6c7f4e8c4ae5bbbc811/pillow-11.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3107c66e43bda25359d5ef446f59c497de2b5ed4c7fdba0894f8d6cf3822dafc", size = 4429714 }, + { url = "https://files.pythonhosted.org/packages/af/3a/da80224a6eb15bba7a0dcb2346e2b686bb9bf98378c0b4353cd88e62b171/pillow-11.0.0-cp312-cp312-win32.whl", hash = "sha256:86510e3f5eca0ab87429dd77fafc04693195eec7fd6a137c389c3eeb4cfb77c6", size = 2249631 }, + { url = "https://files.pythonhosted.org/packages/57/97/73f756c338c1d86bb802ee88c3cab015ad7ce4b838f8a24f16b676b1ac7c/pillow-11.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:8ec4a89295cd6cd4d1058a5e6aec6bf51e0eaaf9714774e1bfac7cfc9051db47", size = 2567533 }, + { url = "https://files.pythonhosted.org/packages/0b/30/2b61876e2722374558b871dfbfcbe4e406626d63f4f6ed92e9c8e24cac37/pillow-11.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:27a7860107500d813fcd203b4ea19b04babe79448268403172782754870dac25", size = 2254890 }, + { url = "https://files.pythonhosted.org/packages/63/24/e2e15e392d00fcf4215907465d8ec2a2f23bcec1481a8ebe4ae760459995/pillow-11.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:bcd1fb5bb7b07f64c15618c89efcc2cfa3e95f0e3bcdbaf4642509de1942a699", size = 3147300 }, + { url = "https://files.pythonhosted.org/packages/43/72/92ad4afaa2afc233dc44184adff289c2e77e8cd916b3ddb72ac69495bda3/pillow-11.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0e038b0745997c7dcaae350d35859c9715c71e92ffb7e0f4a8e8a16732150f38", size = 2978742 }, + { url = "https://files.pythonhosted.org/packages/9e/da/c8d69c5bc85d72a8523fe862f05ababdc52c0a755cfe3d362656bb86552b/pillow-11.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ae08bd8ffc41aebf578c2af2f9d8749d91f448b3bfd41d7d9ff573d74f2a6b2", size = 4194349 }, + { url = "https://files.pythonhosted.org/packages/cd/e8/686d0caeed6b998351d57796496a70185376ed9c8ec7d99e1d19ad591fc6/pillow-11.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d69bfd8ec3219ae71bcde1f942b728903cad25fafe3100ba2258b973bd2bc1b2", size = 4298714 }, + { url = "https://files.pythonhosted.org/packages/ec/da/430015cec620d622f06854be67fd2f6721f52fc17fca8ac34b32e2d60739/pillow-11.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:61b887f9ddba63ddf62fd02a3ba7add935d053b6dd7d58998c630e6dbade8527", size = 4208514 }, + { url = "https://files.pythonhosted.org/packages/44/ae/7e4f6662a9b1cb5f92b9cc9cab8321c381ffbee309210940e57432a4063a/pillow-11.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:c6a660307ca9d4867caa8d9ca2c2658ab685de83792d1876274991adec7b93fa", size = 4380055 }, + { url = "https://files.pythonhosted.org/packages/74/d5/1a807779ac8a0eeed57f2b92a3c32ea1b696e6140c15bd42eaf908a261cd/pillow-11.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:73e3a0200cdda995c7e43dd47436c1548f87a30bb27fb871f352a22ab8dcf45f", size = 4296751 }, + { url = "https://files.pythonhosted.org/packages/38/8c/5fa3385163ee7080bc13026d59656267daaaaf3c728c233d530e2c2757c8/pillow-11.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fba162b8872d30fea8c52b258a542c5dfd7b235fb5cb352240c8d63b414013eb", size = 4430378 }, + { url = "https://files.pythonhosted.org/packages/ca/1d/ad9c14811133977ff87035bf426875b93097fb50af747793f013979facdb/pillow-11.0.0-cp313-cp313-win32.whl", hash = "sha256:f1b82c27e89fffc6da125d5eb0ca6e68017faf5efc078128cfaa42cf5cb38798", size = 2249588 }, + { url = "https://files.pythonhosted.org/packages/fb/01/3755ba287dac715e6afdb333cb1f6d69740a7475220b4637b5ce3d78cec2/pillow-11.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:8ba470552b48e5835f1d23ecb936bb7f71d206f9dfeee64245f30c3270b994de", size = 2567509 }, + { url = "https://files.pythonhosted.org/packages/c0/98/2c7d727079b6be1aba82d195767d35fcc2d32204c7a5820f822df5330152/pillow-11.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:846e193e103b41e984ac921b335df59195356ce3f71dcfd155aa79c603873b84", size = 2254791 }, + { url = "https://files.pythonhosted.org/packages/eb/38/998b04cc6f474e78b563716b20eecf42a2fa16a84589d23c8898e64b0ffd/pillow-11.0.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4ad70c4214f67d7466bea6a08061eba35c01b1b89eaa098040a35272a8efb22b", size = 3150854 }, + { url = "https://files.pythonhosted.org/packages/13/8e/be23a96292113c6cb26b2aa3c8b3681ec62b44ed5c2bd0b258bd59503d3c/pillow-11.0.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:6ec0d5af64f2e3d64a165f490d96368bb5dea8b8f9ad04487f9ab60dc4bb6003", size = 2982369 }, + { url = "https://files.pythonhosted.org/packages/97/8a/3db4eaabb7a2ae8203cd3a332a005e4aba00067fc514aaaf3e9721be31f1/pillow-11.0.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c809a70e43c7977c4a42aefd62f0131823ebf7dd73556fa5d5950f5b354087e2", size = 4333703 }, + { url = "https://files.pythonhosted.org/packages/28/ac/629ffc84ff67b9228fe87a97272ab125bbd4dc462745f35f192d37b822f1/pillow-11.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:4b60c9520f7207aaf2e1d94de026682fc227806c6e1f55bba7606d1c94dd623a", size = 4412550 }, + { url = "https://files.pythonhosted.org/packages/d6/07/a505921d36bb2df6868806eaf56ef58699c16c388e378b0dcdb6e5b2fb36/pillow-11.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:1e2688958a840c822279fda0086fec1fdab2f95bf2b717b66871c4ad9859d7e8", size = 4461038 }, + { url = "https://files.pythonhosted.org/packages/d6/b9/fb620dd47fc7cc9678af8f8bd8c772034ca4977237049287e99dda360b66/pillow-11.0.0-cp313-cp313t-win32.whl", hash = "sha256:607bbe123c74e272e381a8d1957083a9463401f7bd01287f50521ecb05a313f8", size = 2253197 }, + { url = "https://files.pythonhosted.org/packages/df/86/25dde85c06c89d7fc5db17940f07aae0a56ac69aa9ccb5eb0f09798862a8/pillow-11.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5c39ed17edea3bc69c743a8dd3e9853b7509625c2462532e62baa0732163a904", size = 2572169 }, + { url = "https://files.pythonhosted.org/packages/51/85/9c33f2517add612e17f3381aee7c4072779130c634921a756c97bc29fb49/pillow-11.0.0-cp313-cp313t-win_arm64.whl", hash = "sha256:75acbbeb05b86bc53cbe7b7e6fe00fbcf82ad7c684b3ad82e3d711da9ba287d3", size = 2256828 }, +] + +[[package]] +name = "pint" +version = "0.24.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "flexcache" }, + { name = "flexparser" }, + { name = "platformdirs" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/20/bb/52b15ddf7b7706ed591134a895dbf6e41c8348171fb635e655e0a4bbb0ea/pint-0.24.4.tar.gz", hash = "sha256:35275439b574837a6cd3020a5a4a73645eb125ce4152a73a2f126bf164b91b80", size = 342225 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/16/bd2f5904557265882108dc2e04f18abc05ab0c2b7082ae9430091daf1d5c/Pint-0.24.4-py3-none-any.whl", hash = "sha256:aa54926c8772159fcf65f82cc0d34de6768c151b32ad1deb0331291c38fe7659", size = 302029 }, +] + +[[package]] +name = "pip" +version = "24.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f4/b1/b422acd212ad7eedddaf7981eee6e5de085154ff726459cf2da7c5a184c1/pip-24.3.1.tar.gz", hash = "sha256:ebcb60557f2aefabc2e0f918751cd24ea0d56d8ec5445fe1807f1d2109660b99", size = 1931073 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/7d/500c9ad20238fcfcb4cb9243eede163594d7020ce87bd9610c9e02771876/pip-24.3.1-py3-none-any.whl", hash = "sha256:3790624780082365f47549d032f3770eeb2b1e8bd1f7b2e02dace1afa361b4ed", size = 1822182 }, +] + +[[package]] +name = "platformdirs" +version = "4.3.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/13/fc/128cc9cb8f03208bdbf93d3aa862e16d376844a14f9a0ce5cf4507372de4/platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907", size = 21302 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/a6/bc1012356d8ece4d66dd75c4b9fc6c1f6650ddd5991e421177d9f8f671be/platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb", size = 18439 }, +] + +[[package]] +name = "pluggy" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556 }, +] + +[[package]] +name = "pooch" +version = "1.8.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, + { name = "platformdirs" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c6/77/b3d3e00c696c16cf99af81ef7b1f5fe73bd2a307abca41bd7605429fe6e5/pooch-1.8.2.tar.gz", hash = "sha256:76561f0de68a01da4df6af38e9955c4c9d1a5c90da73f7e40276a5728ec83d10", size = 59353 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a8/87/77cc11c7a9ea9fd05503def69e3d18605852cd0d4b0d3b8f15bbeb3ef1d1/pooch-1.8.2-py3-none-any.whl", hash = "sha256:3529a57096f7198778a5ceefd5ac3ef0e4d06a6ddaf9fc2d609b806f25302c47", size = 64574 }, +] + +[[package]] +name = "pre-commit" +version = "4.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cfgv" }, + { name = "identify" }, + { name = "nodeenv" }, + { name = "pyyaml" }, + { name = "virtualenv" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2e/c8/e22c292035f1bac8b9f5237a2622305bc0304e776080b246f3df57c4ff9f/pre_commit-4.0.1.tar.gz", hash = "sha256:80905ac375958c0444c65e9cebebd948b3cdb518f335a091a670a89d652139d2", size = 191678 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/16/8f/496e10d51edd6671ebe0432e33ff800aa86775d2d147ce7d43389324a525/pre_commit-4.0.1-py2.py3-none-any.whl", hash = "sha256:efde913840816312445dc98787724647c65473daefe420785f885e8ed9a06878", size = 218713 }, +] + +[[package]] +name = "prompt-toolkit" +version = "3.0.48" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wcwidth" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2d/4f/feb5e137aff82f7c7f3248267b97451da3644f6cdc218edfe549fb354127/prompt_toolkit-3.0.48.tar.gz", hash = "sha256:d6623ab0477a80df74e646bdbc93621143f5caf104206aa29294d53de1a03d90", size = 424684 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/6a/fd08d94654f7e67c52ca30523a178b3f8ccc4237fce4be90d39c938a831a/prompt_toolkit-3.0.48-py3-none-any.whl", hash = "sha256:f49a827f90062e411f1ce1f854f2aedb3c23353244f8108b89283587397ac10e", size = 386595 }, +] + +[[package]] +name = "propcache" +version = "0.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/c8/2a13f78d82211490855b2fb303b6721348d0787fdd9a12ac46d99d3acde1/propcache-0.2.1.tar.gz", hash = "sha256:3f77ce728b19cb537714499928fe800c3dda29e8d9428778fc7c186da4c09a64", size = 41735 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bc/0f/2913b6791ebefb2b25b4efd4bb2299c985e09786b9f5b19184a88e5778dd/propcache-0.2.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1ffc3cca89bb438fb9c95c13fc874012f7b9466b89328c3c8b1aa93cdcfadd16", size = 79297 }, + { url = "https://files.pythonhosted.org/packages/cf/73/af2053aeccd40b05d6e19058419ac77674daecdd32478088b79375b9ab54/propcache-0.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f174bbd484294ed9fdf09437f889f95807e5f229d5d93588d34e92106fbf6717", size = 45611 }, + { url = "https://files.pythonhosted.org/packages/3c/09/8386115ba7775ea3b9537730e8cf718d83bbf95bffe30757ccf37ec4e5da/propcache-0.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:70693319e0b8fd35dd863e3e29513875eb15c51945bf32519ef52927ca883bc3", size = 45146 }, + { url = "https://files.pythonhosted.org/packages/03/7a/793aa12f0537b2e520bf09f4c6833706b63170a211ad042ca71cbf79d9cb/propcache-0.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b480c6a4e1138e1aa137c0079b9b6305ec6dcc1098a8ca5196283e8a49df95a9", size = 232136 }, + { url = "https://files.pythonhosted.org/packages/f1/38/b921b3168d72111769f648314100558c2ea1d52eb3d1ba7ea5c4aa6f9848/propcache-0.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d27b84d5880f6d8aa9ae3edb253c59d9f6642ffbb2c889b78b60361eed449787", size = 239706 }, + { url = "https://files.pythonhosted.org/packages/14/29/4636f500c69b5edea7786db3c34eb6166f3384b905665ce312a6e42c720c/propcache-0.2.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:857112b22acd417c40fa4595db2fe28ab900c8c5fe4670c7989b1c0230955465", size = 238531 }, + { url = "https://files.pythonhosted.org/packages/85/14/01fe53580a8e1734ebb704a3482b7829a0ef4ea68d356141cf0994d9659b/propcache-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf6c4150f8c0e32d241436526f3c3f9cbd34429492abddbada2ffcff506c51af", size = 231063 }, + { url = "https://files.pythonhosted.org/packages/33/5c/1d961299f3c3b8438301ccfbff0143b69afcc30c05fa28673cface692305/propcache-0.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66d4cfda1d8ed687daa4bc0274fcfd5267873db9a5bc0418c2da19273040eeb7", size = 220134 }, + { url = "https://files.pythonhosted.org/packages/00/d0/ed735e76db279ba67a7d3b45ba4c654e7b02bc2f8050671ec365d8665e21/propcache-0.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c2f992c07c0fca81655066705beae35fc95a2fa7366467366db627d9f2ee097f", size = 220009 }, + { url = "https://files.pythonhosted.org/packages/75/90/ee8fab7304ad6533872fee982cfff5a53b63d095d78140827d93de22e2d4/propcache-0.2.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:4a571d97dbe66ef38e472703067021b1467025ec85707d57e78711c085984e54", size = 212199 }, + { url = "https://files.pythonhosted.org/packages/eb/ec/977ffaf1664f82e90737275873461695d4c9407d52abc2f3c3e24716da13/propcache-0.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:bb6178c241278d5fe853b3de743087be7f5f4c6f7d6d22a3b524d323eecec505", size = 214827 }, + { url = "https://files.pythonhosted.org/packages/57/48/031fb87ab6081764054821a71b71942161619549396224cbb242922525e8/propcache-0.2.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:ad1af54a62ffe39cf34db1aa6ed1a1873bd548f6401db39d8e7cd060b9211f82", size = 228009 }, + { url = "https://files.pythonhosted.org/packages/1a/06/ef1390f2524850838f2390421b23a8b298f6ce3396a7cc6d39dedd4047b0/propcache-0.2.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:e7048abd75fe40712005bcfc06bb44b9dfcd8e101dda2ecf2f5aa46115ad07ca", size = 231638 }, + { url = "https://files.pythonhosted.org/packages/38/2a/101e6386d5a93358395da1d41642b79c1ee0f3b12e31727932b069282b1d/propcache-0.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:160291c60081f23ee43d44b08a7e5fb76681221a8e10b3139618c5a9a291b84e", size = 222788 }, + { url = "https://files.pythonhosted.org/packages/db/81/786f687951d0979007e05ad9346cd357e50e3d0b0f1a1d6074df334b1bbb/propcache-0.2.1-cp311-cp311-win32.whl", hash = "sha256:819ce3b883b7576ca28da3861c7e1a88afd08cc8c96908e08a3f4dd64a228034", size = 40170 }, + { url = "https://files.pythonhosted.org/packages/cf/59/7cc7037b295d5772eceb426358bb1b86e6cab4616d971bd74275395d100d/propcache-0.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:edc9fc7051e3350643ad929df55c451899bb9ae6d24998a949d2e4c87fb596d3", size = 44404 }, + { url = "https://files.pythonhosted.org/packages/4c/28/1d205fe49be8b1b4df4c50024e62480a442b1a7b818e734308bb0d17e7fb/propcache-0.2.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:081a430aa8d5e8876c6909b67bd2d937bfd531b0382d3fdedb82612c618bc41a", size = 79588 }, + { url = "https://files.pythonhosted.org/packages/21/ee/fc4d893f8d81cd4971affef2a6cb542b36617cd1d8ce56b406112cb80bf7/propcache-0.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d2ccec9ac47cf4e04897619c0e0c1a48c54a71bdf045117d3a26f80d38ab1fb0", size = 45825 }, + { url = "https://files.pythonhosted.org/packages/4a/de/bbe712f94d088da1d237c35d735f675e494a816fd6f54e9db2f61ef4d03f/propcache-0.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:14d86fe14b7e04fa306e0c43cdbeebe6b2c2156a0c9ce56b815faacc193e320d", size = 45357 }, + { url = "https://files.pythonhosted.org/packages/7f/14/7ae06a6cf2a2f1cb382586d5a99efe66b0b3d0c6f9ac2f759e6f7af9d7cf/propcache-0.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:049324ee97bb67285b49632132db351b41e77833678432be52bdd0289c0e05e4", size = 241869 }, + { url = "https://files.pythonhosted.org/packages/cc/59/227a78be960b54a41124e639e2c39e8807ac0c751c735a900e21315f8c2b/propcache-0.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1cd9a1d071158de1cc1c71a26014dcdfa7dd3d5f4f88c298c7f90ad6f27bb46d", size = 247884 }, + { url = "https://files.pythonhosted.org/packages/84/58/f62b4ffaedf88dc1b17f04d57d8536601e4e030feb26617228ef930c3279/propcache-0.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98110aa363f1bb4c073e8dcfaefd3a5cea0f0834c2aab23dda657e4dab2f53b5", size = 248486 }, + { url = "https://files.pythonhosted.org/packages/1c/07/ebe102777a830bca91bbb93e3479cd34c2ca5d0361b83be9dbd93104865e/propcache-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:647894f5ae99c4cf6bb82a1bb3a796f6e06af3caa3d32e26d2350d0e3e3faf24", size = 243649 }, + { url = "https://files.pythonhosted.org/packages/ed/bc/4f7aba7f08f520376c4bb6a20b9a981a581b7f2e385fa0ec9f789bb2d362/propcache-0.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bfd3223c15bebe26518d58ccf9a39b93948d3dcb3e57a20480dfdd315356baff", size = 229103 }, + { url = "https://files.pythonhosted.org/packages/fe/d5/04ac9cd4e51a57a96f78795e03c5a0ddb8f23ec098b86f92de028d7f2a6b/propcache-0.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d71264a80f3fcf512eb4f18f59423fe82d6e346ee97b90625f283df56aee103f", size = 226607 }, + { url = "https://files.pythonhosted.org/packages/e3/f0/24060d959ea41d7a7cc7fdbf68b31852331aabda914a0c63bdb0e22e96d6/propcache-0.2.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:e73091191e4280403bde6c9a52a6999d69cdfde498f1fdf629105247599b57ec", size = 221153 }, + { url = "https://files.pythonhosted.org/packages/77/a7/3ac76045a077b3e4de4859a0753010765e45749bdf53bd02bc4d372da1a0/propcache-0.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3935bfa5fede35fb202c4b569bb9c042f337ca4ff7bd540a0aa5e37131659348", size = 222151 }, + { url = "https://files.pythonhosted.org/packages/e7/af/5e29da6f80cebab3f5a4dcd2a3240e7f56f2c4abf51cbfcc99be34e17f0b/propcache-0.2.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f508b0491767bb1f2b87fdfacaba5f7eddc2f867740ec69ece6d1946d29029a6", size = 233812 }, + { url = "https://files.pythonhosted.org/packages/8c/89/ebe3ad52642cc5509eaa453e9f4b94b374d81bae3265c59d5c2d98efa1b4/propcache-0.2.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:1672137af7c46662a1c2be1e8dc78cb6d224319aaa40271c9257d886be4363a6", size = 238829 }, + { url = "https://files.pythonhosted.org/packages/e9/2f/6b32f273fa02e978b7577159eae7471b3cfb88b48563b1c2578b2d7ca0bb/propcache-0.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b74c261802d3d2b85c9df2dfb2fa81b6f90deeef63c2db9f0e029a3cac50b518", size = 230704 }, + { url = "https://files.pythonhosted.org/packages/5c/2e/f40ae6ff5624a5f77edd7b8359b208b5455ea113f68309e2b00a2e1426b6/propcache-0.2.1-cp312-cp312-win32.whl", hash = "sha256:d09c333d36c1409d56a9d29b3a1b800a42c76a57a5a8907eacdbce3f18768246", size = 40050 }, + { url = "https://files.pythonhosted.org/packages/3b/77/a92c3ef994e47180862b9d7d11e37624fb1c00a16d61faf55115d970628b/propcache-0.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:c214999039d4f2a5b2073ac506bba279945233da8c786e490d411dfc30f855c1", size = 44117 }, + { url = "https://files.pythonhosted.org/packages/0f/2a/329e0547cf2def8857157f9477669043e75524cc3e6251cef332b3ff256f/propcache-0.2.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aca405706e0b0a44cc6bfd41fbe89919a6a56999157f6de7e182a990c36e37bc", size = 77002 }, + { url = "https://files.pythonhosted.org/packages/12/2d/c4df5415e2382f840dc2ecbca0eeb2293024bc28e57a80392f2012b4708c/propcache-0.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:12d1083f001ace206fe34b6bdc2cb94be66d57a850866f0b908972f90996b3e9", size = 44639 }, + { url = "https://files.pythonhosted.org/packages/d0/5a/21aaa4ea2f326edaa4e240959ac8b8386ea31dedfdaa636a3544d9e7a408/propcache-0.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d93f3307ad32a27bda2e88ec81134b823c240aa3abb55821a8da553eed8d9439", size = 44049 }, + { url = "https://files.pythonhosted.org/packages/4e/3e/021b6cd86c0acc90d74784ccbb66808b0bd36067a1bf3e2deb0f3845f618/propcache-0.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba278acf14471d36316159c94a802933d10b6a1e117b8554fe0d0d9b75c9d536", size = 224819 }, + { url = "https://files.pythonhosted.org/packages/3c/57/c2fdeed1b3b8918b1770a133ba5c43ad3d78e18285b0c06364861ef5cc38/propcache-0.2.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4e6281aedfca15301c41f74d7005e6e3f4ca143584ba696ac69df4f02f40d629", size = 229625 }, + { url = "https://files.pythonhosted.org/packages/9d/81/70d4ff57bf2877b5780b466471bebf5892f851a7e2ca0ae7ffd728220281/propcache-0.2.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b750a8e5a1262434fb1517ddf64b5de58327f1adc3524a5e44c2ca43305eb0b", size = 232934 }, + { url = "https://files.pythonhosted.org/packages/3c/b9/bb51ea95d73b3fb4100cb95adbd4e1acaf2cbb1fd1083f5468eeb4a099a8/propcache-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf72af5e0fb40e9babf594308911436c8efde3cb5e75b6f206c34ad18be5c052", size = 227361 }, + { url = "https://files.pythonhosted.org/packages/f1/20/3c6d696cd6fd70b29445960cc803b1851a1131e7a2e4ee261ee48e002bcd/propcache-0.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b2d0a12018b04f4cb820781ec0dffb5f7c7c1d2a5cd22bff7fb055a2cb19ebce", size = 213904 }, + { url = "https://files.pythonhosted.org/packages/a1/cb/1593bfc5ac6d40c010fa823f128056d6bc25b667f5393781e37d62f12005/propcache-0.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e800776a79a5aabdb17dcc2346a7d66d0777e942e4cd251defeb084762ecd17d", size = 212632 }, + { url = "https://files.pythonhosted.org/packages/6d/5c/e95617e222be14a34c709442a0ec179f3207f8a2b900273720501a70ec5e/propcache-0.2.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:4160d9283bd382fa6c0c2b5e017acc95bc183570cd70968b9202ad6d8fc48dce", size = 207897 }, + { url = "https://files.pythonhosted.org/packages/8e/3b/56c5ab3dc00f6375fbcdeefdede5adf9bee94f1fab04adc8db118f0f9e25/propcache-0.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:30b43e74f1359353341a7adb783c8f1b1c676367b011709f466f42fda2045e95", size = 208118 }, + { url = "https://files.pythonhosted.org/packages/86/25/d7ef738323fbc6ebcbce33eb2a19c5e07a89a3df2fded206065bd5e868a9/propcache-0.2.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:58791550b27d5488b1bb52bc96328456095d96206a250d28d874fafe11b3dfaf", size = 217851 }, + { url = "https://files.pythonhosted.org/packages/b3/77/763e6cef1852cf1ba740590364ec50309b89d1c818e3256d3929eb92fabf/propcache-0.2.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:0f022d381747f0dfe27e99d928e31bc51a18b65bb9e481ae0af1380a6725dd1f", size = 222630 }, + { url = "https://files.pythonhosted.org/packages/4f/e9/0f86be33602089c701696fbed8d8c4c07b6ee9605c5b7536fd27ed540c5b/propcache-0.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:297878dc9d0a334358f9b608b56d02e72899f3b8499fc6044133f0d319e2ec30", size = 216269 }, + { url = "https://files.pythonhosted.org/packages/cc/02/5ac83217d522394b6a2e81a2e888167e7ca629ef6569a3f09852d6dcb01a/propcache-0.2.1-cp313-cp313-win32.whl", hash = "sha256:ddfab44e4489bd79bda09d84c430677fc7f0a4939a73d2bba3073036f487a0a6", size = 39472 }, + { url = "https://files.pythonhosted.org/packages/f4/33/d6f5420252a36034bc8a3a01171bc55b4bff5df50d1c63d9caa50693662f/propcache-0.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:556fc6c10989f19a179e4321e5d678db8eb2924131e64652a51fe83e4c3db0e1", size = 43363 }, + { url = "https://files.pythonhosted.org/packages/41/b6/c5319caea262f4821995dca2107483b94a3345d4607ad797c76cb9c36bcc/propcache-0.2.1-py3-none-any.whl", hash = "sha256:52277518d6aae65536e9cea52d4e7fd2f7a66f4aa2d30ed3f2fcea620ace3c54", size = 11818 }, +] + +[[package]] +name = "psutil" +version = "6.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/26/10/2a30b13c61e7cf937f4adf90710776b7918ed0a9c434e2c38224732af310/psutil-6.1.0.tar.gz", hash = "sha256:353815f59a7f64cdaca1c0307ee13558a0512f6db064e92fe833784f08539c7a", size = 508565 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/01/9e/8be43078a171381953cfee33c07c0d628594b5dbfc5157847b85022c2c1b/psutil-6.1.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6e2dcd475ce8b80522e51d923d10c7871e45f20918e027ab682f94f1c6351688", size = 247762 }, + { url = "https://files.pythonhosted.org/packages/1d/cb/313e80644ea407f04f6602a9e23096540d9dc1878755f3952ea8d3d104be/psutil-6.1.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:0895b8414afafc526712c498bd9de2b063deaac4021a3b3c34566283464aff8e", size = 248777 }, + { url = "https://files.pythonhosted.org/packages/65/8e/bcbe2025c587b5d703369b6a75b65d41d1367553da6e3f788aff91eaf5bd/psutil-6.1.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9dcbfce5d89f1d1f2546a2090f4fcf87c7f669d1d90aacb7d7582addece9fb38", size = 284259 }, + { url = "https://files.pythonhosted.org/packages/58/4d/8245e6f76a93c98aab285a43ea71ff1b171bcd90c9d238bf81f7021fb233/psutil-6.1.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:498c6979f9c6637ebc3a73b3f87f9eb1ec24e1ce53a7c5173b8508981614a90b", size = 287255 }, + { url = "https://files.pythonhosted.org/packages/27/c2/d034856ac47e3b3cdfa9720d0e113902e615f4190d5d1bdb8df4b2015fb2/psutil-6.1.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d905186d647b16755a800e7263d43df08b790d709d575105d419f8b6ef65423a", size = 288804 }, + { url = "https://files.pythonhosted.org/packages/ea/55/5389ed243c878725feffc0d6a3bc5ef6764312b6fc7c081faaa2cfa7ef37/psutil-6.1.0-cp37-abi3-win32.whl", hash = "sha256:1ad45a1f5d0b608253b11508f80940985d1d0c8f6111b5cb637533a0e6ddc13e", size = 250386 }, + { url = "https://files.pythonhosted.org/packages/11/91/87fa6f060e649b1e1a7b19a4f5869709fbf750b7c8c262ee776ec32f3028/psutil-6.1.0-cp37-abi3-win_amd64.whl", hash = "sha256:a8fb3752b491d246034fa4d279ff076501588ce8cbcdbb62c32fd7a377d996be", size = 254228 }, +] + +[[package]] +name = "psygnal" +version = "0.11.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bc/b0/194cfbcb76dbf9c4a1c4271ccc825b38406d20fb7f95fd18320c28708800/psygnal-0.11.1.tar.gz", hash = "sha256:f9b02ca246ab0adb108c4010b4a486e464f940543201074591e50370cd7b0cc0", size = 102103 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a6/a8/ed06fe70c8bd03f02ab0c1df020f53f079a6dbae056eba0a91823c0d1242/psygnal-0.11.1-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:3c04baec10f882cdf784a7312e23892416188417ad85607e6d1de2e8a9e70709", size = 427499 }, + { url = "https://files.pythonhosted.org/packages/25/92/6dcab17c3bb91fa3f250ebdbb66de55332436da836c4c547c26e3942877e/psygnal-0.11.1-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:8f77317cbd11fbed5bfdd40ea41b4e551ee0cf37881cdbc325b67322af577485", size = 453373 }, + { url = "https://files.pythonhosted.org/packages/84/6f/868f1d7d22c76b96e0c8a75f8eb196deaff83916ad2da7bd78d1d0f6a5df/psygnal-0.11.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24e69ea57ee39e3677298f38a18828af87cdc0bf0aa64685d44259e608bae3ec", size = 717571 }, + { url = "https://files.pythonhosted.org/packages/da/7d/24ca61d177b26e6ab89e9c520dca9c6341083920ab0ea8ac763a31b2b029/psygnal-0.11.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d77f1a71fe9859c0335c87d92afe1b17c520a4137326810e94351839342d8fc7", size = 695336 }, + { url = "https://files.pythonhosted.org/packages/33/5d/9b2d8f91a9198dda6ad0eaa276f975207b1314ac2d22a2f905f0a6e34524/psygnal-0.11.1-cp312-cp312-macosx_10_16_arm64.whl", hash = "sha256:0b55cb42e468f3a7de75392520778604fef2bc518b7df36c639b35ce4ed92016", size = 425244 }, + { url = "https://files.pythonhosted.org/packages/c4/66/e1bd57a8efef6582141939876d014f86792adbbb8853bd475a1cbf3649ca/psygnal-0.11.1-cp312-cp312-macosx_10_16_x86_64.whl", hash = "sha256:c7dd3cf809c9c1127d90c6b11fbbd1eb2d66d512ccd4d5cab048786f13d11220", size = 444681 }, + { url = "https://files.pythonhosted.org/packages/49/ad/8ee3f8ac1d59cf269ae2d55f7cac7c65fe3b3f41cada5d6a17bc2f4c5d6d/psygnal-0.11.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:885922a6e65ece9ff8ccf2b6810f435ca8067f410889f7a8fffb6b0d61421a0d", size = 743785 }, + { url = "https://files.pythonhosted.org/packages/14/54/b29b854dff0e27bdaf42a7c1edc65f6d3ea35866e9d9250f1dbabf6381a0/psygnal-0.11.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1c2388360a9ffcd1381e9b36d0f794287a270d58e69bf17658a194bbf86685c1", size = 725134 }, + { url = "https://files.pythonhosted.org/packages/68/76/d5c5bf5a932ec2dcdc4a23565815a1cc5fd96b03b26ff3f647cdff5ea62c/psygnal-0.11.1-py3-none-any.whl", hash = "sha256:04255fe28828060a80320f8fda937c47bc0c21ca14f55a13eb7c494b165ea395", size = 76998 }, +] + +[[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 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993 }, +] + +[[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 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842 }, +] + +[[package]] +name = "pyconify" +version = "0.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dd/21/8b703dd994e4833dcfa611536485ce2096c215aa74cbf610c2ff51a7dea8/pyconify-0.1.6.tar.gz", hash = "sha256:25272f7a29965f32ee698c9da6aab8bbbeb0756ca3bfeadd3d9effab689d239d", size = 22236 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/34/fc/be68d2acc43d22dbfe6d52d573dc83da14e4fd45821acaf42992e8803682/pyconify-0.1.6-py3-none-any.whl", hash = "sha256:63040836b344ec351c05531231609edd30425c145ff68478b6250f33135b8fc5", size = 18929 }, +] + +[[package]] +name = "pycparser" +version = "2.22" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552 }, +] + +[[package]] +name = "pydantic" +version = "2.10.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/70/7e/fb60e6fee04d0ef8f15e4e01ff187a196fa976eb0f0ab524af4599e5754c/pydantic-2.10.4.tar.gz", hash = "sha256:82f12e9723da6de4fe2ba888b5971157b3be7ad914267dea8f05f82b28254f06", size = 762094 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f3/26/3e1bbe954fde7ee22a6e7d31582c642aad9e84ffe4b5fb61e63b87cd326f/pydantic-2.10.4-py3-none-any.whl", hash = "sha256:597e135ea68be3a37552fb524bc7d0d66dcf93d395acd93a00682f1efcb8ee3d", size = 431765 }, +] + +[[package]] +name = "pydantic-compat" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pydantic" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9c/7e/43400b6e0800065a982efcfa3e87c8f8d247d60ea75ca1a9d01702e050f8/pydantic_compat-0.1.2.tar.gz", hash = "sha256:c5c5bca39ca2d22cad00c02898e400e1920e5127649a8e860637f15566739373", size = 12838 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7f/65/2edf586ff7b3dfc520977c6529c9b718c86ef8459ece088f1ef1f74bf1d4/pydantic_compat-0.1.2-py3-none-any.whl", hash = "sha256:37a4df48565a35aedc947f0fde5edbdff270a30836d995923287292bb59d5677", size = 13092 }, +] + +[[package]] +name = "pydantic-core" +version = "2.27.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/01/f3e5ac5e7c25833db5eb555f7b7ab24cd6f8c322d3a3ad2d67a952dc0abc/pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39", size = 413443 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/89/f3450af9d09d44eea1f2c369f49e8f181d742f28220f88cc4dfaae91ea6e/pydantic_core-2.27.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8e10c99ef58cfdf2a66fc15d66b16c4a04f62bca39db589ae8cba08bc55331bc", size = 1893421 }, + { url = "https://files.pythonhosted.org/packages/9e/e3/71fe85af2021f3f386da42d291412e5baf6ce7716bd7101ea49c810eda90/pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7", size = 1814998 }, + { url = "https://files.pythonhosted.org/packages/a6/3c/724039e0d848fd69dbf5806894e26479577316c6f0f112bacaf67aa889ac/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c19d1ea0673cd13cc2f872f6c9ab42acc4e4f492a7ca9d3795ce2b112dd7e15", size = 1826167 }, + { url = "https://files.pythonhosted.org/packages/2b/5b/1b29e8c1fb5f3199a9a57c1452004ff39f494bbe9bdbe9a81e18172e40d3/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e68c4446fe0810e959cdff46ab0a41ce2f2c86d227d96dc3847af0ba7def306", size = 1865071 }, + { url = "https://files.pythonhosted.org/packages/89/6c/3985203863d76bb7d7266e36970d7e3b6385148c18a68cc8915fd8c84d57/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9640b0059ff4f14d1f37321b94061c6db164fbe49b334b31643e0528d100d99", size = 2036244 }, + { url = "https://files.pythonhosted.org/packages/0e/41/f15316858a246b5d723f7d7f599f79e37493b2e84bfc789e58d88c209f8a/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:40d02e7d45c9f8af700f3452f329ead92da4c5f4317ca9b896de7ce7199ea459", size = 2737470 }, + { url = "https://files.pythonhosted.org/packages/a8/7c/b860618c25678bbd6d1d99dbdfdf0510ccb50790099b963ff78a124b754f/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c1fd185014191700554795c99b347d64f2bb637966c4cfc16998a0ca700d048", size = 1992291 }, + { url = "https://files.pythonhosted.org/packages/bf/73/42c3742a391eccbeab39f15213ecda3104ae8682ba3c0c28069fbcb8c10d/pydantic_core-2.27.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d81d2068e1c1228a565af076598f9e7451712700b673de8f502f0334f281387d", size = 1994613 }, + { url = "https://files.pythonhosted.org/packages/94/7a/941e89096d1175d56f59340f3a8ebaf20762fef222c298ea96d36a6328c5/pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a4207639fb02ec2dbb76227d7c751a20b1a6b4bc52850568e52260cae64ca3b", size = 2002355 }, + { url = "https://files.pythonhosted.org/packages/6e/95/2359937a73d49e336a5a19848713555605d4d8d6940c3ec6c6c0ca4dcf25/pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:3de3ce3c9ddc8bbd88f6e0e304dea0e66d843ec9de1b0042b0911c1663ffd474", size = 2126661 }, + { url = "https://files.pythonhosted.org/packages/2b/4c/ca02b7bdb6012a1adef21a50625b14f43ed4d11f1fc237f9d7490aa5078c/pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:30c5f68ded0c36466acede341551106821043e9afaad516adfb6e8fa80a4e6a6", size = 2153261 }, + { url = "https://files.pythonhosted.org/packages/72/9d/a241db83f973049a1092a079272ffe2e3e82e98561ef6214ab53fe53b1c7/pydantic_core-2.27.2-cp311-cp311-win32.whl", hash = "sha256:c70c26d2c99f78b125a3459f8afe1aed4d9687c24fd677c6a4436bc042e50d6c", size = 1812361 }, + { url = "https://files.pythonhosted.org/packages/e8/ef/013f07248041b74abd48a385e2110aa3a9bbfef0fbd97d4e6d07d2f5b89a/pydantic_core-2.27.2-cp311-cp311-win_amd64.whl", hash = "sha256:08e125dbdc505fa69ca7d9c499639ab6407cfa909214d500897d02afb816e7cc", size = 1982484 }, + { url = "https://files.pythonhosted.org/packages/10/1c/16b3a3e3398fd29dca77cea0a1d998d6bde3902fa2706985191e2313cc76/pydantic_core-2.27.2-cp311-cp311-win_arm64.whl", hash = "sha256:26f0d68d4b235a2bae0c3fc585c585b4ecc51382db0e3ba402a22cbc440915e4", size = 1867102 }, + { url = "https://files.pythonhosted.org/packages/d6/74/51c8a5482ca447871c93e142d9d4a92ead74de6c8dc5e66733e22c9bba89/pydantic_core-2.27.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0", size = 1893127 }, + { url = "https://files.pythonhosted.org/packages/d3/f3/c97e80721735868313c58b89d2de85fa80fe8dfeeed84dc51598b92a135e/pydantic_core-2.27.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:83097677b8e3bd7eaa6775720ec8e0405f1575015a463285a92bfdfe254529ef", size = 1811340 }, + { url = "https://files.pythonhosted.org/packages/9e/91/840ec1375e686dbae1bd80a9e46c26a1e0083e1186abc610efa3d9a36180/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:172fce187655fece0c90d90a678424b013f8fbb0ca8b036ac266749c09438cb7", size = 1822900 }, + { url = "https://files.pythonhosted.org/packages/f6/31/4240bc96025035500c18adc149aa6ffdf1a0062a4b525c932065ceb4d868/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:519f29f5213271eeeeb3093f662ba2fd512b91c5f188f3bb7b27bc5973816934", size = 1869177 }, + { url = "https://files.pythonhosted.org/packages/fa/20/02fbaadb7808be578317015c462655c317a77a7c8f0ef274bc016a784c54/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05e3a55d124407fffba0dd6b0c0cd056d10e983ceb4e5dbd10dda135c31071d6", size = 2038046 }, + { url = "https://files.pythonhosted.org/packages/06/86/7f306b904e6c9eccf0668248b3f272090e49c275bc488a7b88b0823444a4/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c3ed807c7b91de05e63930188f19e921d1fe90de6b4f5cd43ee7fcc3525cb8c", size = 2685386 }, + { url = "https://files.pythonhosted.org/packages/8d/f0/49129b27c43396581a635d8710dae54a791b17dfc50c70164866bbf865e3/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2", size = 1997060 }, + { url = "https://files.pythonhosted.org/packages/0d/0f/943b4af7cd416c477fd40b187036c4f89b416a33d3cc0ab7b82708a667aa/pydantic_core-2.27.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28ccb213807e037460326424ceb8b5245acb88f32f3d2777427476e1b32c48c4", size = 2004870 }, + { url = "https://files.pythonhosted.org/packages/35/40/aea70b5b1a63911c53a4c8117c0a828d6790483f858041f47bab0b779f44/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:de3cd1899e2c279b140adde9357c4495ed9d47131b4a4eaff9052f23398076b3", size = 1999822 }, + { url = "https://files.pythonhosted.org/packages/f2/b3/807b94fd337d58effc5498fd1a7a4d9d59af4133e83e32ae39a96fddec9d/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:220f892729375e2d736b97d0e51466252ad84c51857d4d15f5e9692f9ef12be4", size = 2130364 }, + { url = "https://files.pythonhosted.org/packages/fc/df/791c827cd4ee6efd59248dca9369fb35e80a9484462c33c6649a8d02b565/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a0fcd29cd6b4e74fe8ddd2c90330fd8edf2e30cb52acda47f06dd615ae72da57", size = 2158303 }, + { url = "https://files.pythonhosted.org/packages/9b/67/4e197c300976af185b7cef4c02203e175fb127e414125916bf1128b639a9/pydantic_core-2.27.2-cp312-cp312-win32.whl", hash = "sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc", size = 1834064 }, + { url = "https://files.pythonhosted.org/packages/1f/ea/cd7209a889163b8dcca139fe32b9687dd05249161a3edda62860430457a5/pydantic_core-2.27.2-cp312-cp312-win_amd64.whl", hash = "sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9", size = 1989046 }, + { url = "https://files.pythonhosted.org/packages/bc/49/c54baab2f4658c26ac633d798dab66b4c3a9bbf47cff5284e9c182f4137a/pydantic_core-2.27.2-cp312-cp312-win_arm64.whl", hash = "sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b", size = 1885092 }, + { url = "https://files.pythonhosted.org/packages/41/b1/9bc383f48f8002f99104e3acff6cba1231b29ef76cfa45d1506a5cad1f84/pydantic_core-2.27.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b", size = 1892709 }, + { url = "https://files.pythonhosted.org/packages/10/6c/e62b8657b834f3eb2961b49ec8e301eb99946245e70bf42c8817350cbefc/pydantic_core-2.27.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154", size = 1811273 }, + { url = "https://files.pythonhosted.org/packages/ba/15/52cfe49c8c986e081b863b102d6b859d9defc63446b642ccbbb3742bf371/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9", size = 1823027 }, + { url = "https://files.pythonhosted.org/packages/b1/1c/b6f402cfc18ec0024120602bdbcebc7bdd5b856528c013bd4d13865ca473/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9", size = 1868888 }, + { url = "https://files.pythonhosted.org/packages/bd/7b/8cb75b66ac37bc2975a3b7de99f3c6f355fcc4d89820b61dffa8f1e81677/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1", size = 2037738 }, + { url = "https://files.pythonhosted.org/packages/c8/f1/786d8fe78970a06f61df22cba58e365ce304bf9b9f46cc71c8c424e0c334/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a", size = 2685138 }, + { url = "https://files.pythonhosted.org/packages/a6/74/d12b2cd841d8724dc8ffb13fc5cef86566a53ed358103150209ecd5d1999/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e", size = 1997025 }, + { url = "https://files.pythonhosted.org/packages/a0/6e/940bcd631bc4d9a06c9539b51f070b66e8f370ed0933f392db6ff350d873/pydantic_core-2.27.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4", size = 2004633 }, + { url = "https://files.pythonhosted.org/packages/50/cc/a46b34f1708d82498c227d5d80ce615b2dd502ddcfd8376fc14a36655af1/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27", size = 1999404 }, + { url = "https://files.pythonhosted.org/packages/ca/2d/c365cfa930ed23bc58c41463bae347d1005537dc8db79e998af8ba28d35e/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee", size = 2130130 }, + { url = "https://files.pythonhosted.org/packages/f4/d7/eb64d015c350b7cdb371145b54d96c919d4db516817f31cd1c650cae3b21/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1", size = 2157946 }, + { url = "https://files.pythonhosted.org/packages/a4/99/bddde3ddde76c03b65dfd5a66ab436c4e58ffc42927d4ff1198ffbf96f5f/pydantic_core-2.27.2-cp313-cp313-win32.whl", hash = "sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130", size = 1834387 }, + { url = "https://files.pythonhosted.org/packages/71/47/82b5e846e01b26ac6f1893d3c5f9f3a2eb6ba79be26eef0b759b4fe72946/pydantic_core-2.27.2-cp313-cp313-win_amd64.whl", hash = "sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee", size = 1990453 }, + { url = "https://files.pythonhosted.org/packages/51/b2/b2b50d5ecf21acf870190ae5d093602d95f66c9c31f9d5de6062eb329ad1/pydantic_core-2.27.2-cp313-cp313-win_arm64.whl", hash = "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b", size = 1885186 }, +] + +[[package]] +name = "pygments" +version = "2.18.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8e/62/8336eff65bcbc8e4cb5d05b55faf041285951b6e80f33e2bff2024788f31/pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199", size = 4891905 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a", size = 1205513 }, +] + +[[package]] +name = "pyopengl" +version = "3.1.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/b6/970868d44b619292f1f54501923c69c9bd0ab1d2d44cf02590eac2706f4f/PyOpenGL-3.1.7.tar.gz", hash = "sha256:eef31a3888e6984fd4d8e6c9961b184c9813ca82604d37fe3da80eb000a76c86", size = 1896446 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/99/48/00e31747821d3fc56faddd00a4725454d1e694a8b67d715cf20f531506a5/PyOpenGL-3.1.7-py3-none-any.whl", hash = "sha256:a6ab19cf290df6101aaf7470843a9c46207789855746399d0af92521a0a92b7a", size = 2416834 }, +] + +[[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 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bd/24/12818598c362d7f300f18e74db45963dbcb85150324092410c8b49405e42/pyproject_hooks-1.2.0-py3-none-any.whl", hash = "sha256:9e5c6bfa8dcc30091c74b0cf803c81fdd29d94f01992a7707bc97babb1141913", size = 10216 }, +] + +[[package]] +name = "pyqt5" +version = "5.15.11" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyqt5-qt5" }, + { name = "pyqt5-sip" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0e/07/c9ed0bd428df6f87183fca565a79fee19fa7c88c7f00a7f011ab4379e77a/PyQt5-5.15.11.tar.gz", hash = "sha256:fda45743ebb4a27b4b1a51c6d8ef455c4c1b5d610c90d2934c7802b5c1557c52", size = 3216775 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/64/42ec1b0bd72d87f87bde6ceb6869f444d91a2d601f2e67cd05febc0346a1/PyQt5-5.15.11-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:c8b03dd9380bb13c804f0bdb0f4956067f281785b5e12303d529f0462f9afdc2", size = 6579776 }, + { url = "https://files.pythonhosted.org/packages/49/f5/3fb696f4683ea45d68b7e77302eff173493ac81e43d63adb60fa760b9f91/PyQt5-5.15.11-cp38-abi3-macosx_11_0_x86_64.whl", hash = "sha256:6cd75628f6e732b1ffcfe709ab833a0716c0445d7aec8046a48d5843352becb6", size = 7016415 }, + { url = "https://files.pythonhosted.org/packages/b4/8c/4065950f9d013c4b2e588fe33cf04e564c2322842d84dbcbce5ba1dc28b0/PyQt5-5.15.11-cp38-abi3-manylinux_2_17_x86_64.whl", hash = "sha256:cd672a6738d1ae33ef7d9efa8e6cb0a1525ecf53ec86da80a9e1b6ec38c8d0f1", size = 8188103 }, + { url = "https://files.pythonhosted.org/packages/f3/f0/ae5a5b4f9b826b29ea4be841b2f2d951bcf5ae1d802f3732b145b57c5355/PyQt5-5.15.11-cp38-abi3-win32.whl", hash = "sha256:76be0322ceda5deecd1708a8d628e698089a1cea80d1a49d242a6d579a40babd", size = 5433308 }, + { url = "https://files.pythonhosted.org/packages/56/d5/68eb9f3d19ce65df01b6c7b7a577ad3bbc9ab3a5dd3491a4756e71838ec9/PyQt5-5.15.11-cp38-abi3-win_amd64.whl", hash = "sha256:bdde598a3bb95022131a5c9ea62e0a96bd6fb28932cc1619fd7ba211531b7517", size = 6865864 }, +] + +[[package]] +name = "pyqt5-qt5" +version = "5.15.16" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ff/89/65a4b9c6bc89012182ff46bf8e503a8aa5e5570df7cb628211c93012beca/PyQt5_Qt5-5.15.16-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:18b6fec012de60921fcb131cf2a21368171dc29050d43e4b81a64be407a36105", size = 39957063 }, + { url = "https://files.pythonhosted.org/packages/0a/60/b6db285c87666b02aa11d0946d7bb381d8bdcc815cc5aa61fa91272b321b/PyQt5_Qt5-5.15.16-py3-none-macosx_11_0_arm64.whl", hash = "sha256:e1a0e7ae35a7615c74a293705204579650930486a89af23082462f429dae504a", size = 37122434 }, + { url = "https://files.pythonhosted.org/packages/dc/1a/c4f861c4d7a9844a207b8bc3aa9dd84c51f823784d405469cde83d736cf1/PyQt5_Qt5-5.15.16-py3-none-manylinux2014_x86_64.whl", hash = "sha256:5ee1754a6460849cba76c0f0c490c0ccc3b514abc780b141cf772db22b76b54b", size = 59854452 }, +] + +[[package]] +name = "pyqt5-sip" +version = "12.16.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3c/cd/f6f957107447bc53e398f6149f55a7f335c434f201e77dcfb8a3c20dc42c/pyqt5_sip-12.16.1.tar.gz", hash = "sha256:8c831f8b619811a32369d72339faa50ae53a963f5fdfa4d71f845c63e9673125", size = 103975 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ea/69/b23bb48eeea59d934587ae5e11d9fce2cfa0536a311c78a177190134a62d/PyQt5_sip-12.16.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:09bfdb5f9adea15a542cbe4b89873a6b290c4f1669f66bb5f1a24993ce8bbdd0", size = 122619 }, + { url = "https://files.pythonhosted.org/packages/30/b7/78f68147ce4dfac84d705a9dbbb1c41878a365597fa08918bf2bdfd86809/PyQt5_sip-12.16.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:98b99fcdebbbfc999f4ab10829749151eb371b79201ecd98f20e934c16d0193e", size = 276217 }, + { url = "https://files.pythonhosted.org/packages/3c/01/0387b81f4b0797cb3762e1a2cbbe17086b7c15ba13de37e0f6e94b601a18/PyQt5_sip-12.16.1-cp311-cp311-win32.whl", hash = "sha256:67dbdc1b3be045caebfc75ee87966e23c6bee61d94cb634ddd71b634c9089890", size = 49044 }, + { url = "https://files.pythonhosted.org/packages/9a/96/67914c5e17456365b9d7bc71d6eec2a878340904aa9905ae48554a3f6f18/PyQt5_sip-12.16.1-cp311-cp311-win_amd64.whl", hash = "sha256:8afd633d5f35e4e5205680d310800d10d30fcbfb6bb7b852bfaa31097c1be449", size = 58997 }, + { url = "https://files.pythonhosted.org/packages/7f/3d/8dc6b2ef0132ab1cc534485905b594e6f4176176924e54e35a3f6a0fb164/PyQt5_sip-12.16.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f6724c590de3d556c730ebda8b8f906b38373934472209e94d99357b52b56f5f", size = 124549 }, + { url = "https://files.pythonhosted.org/packages/45/eb/fa72094f2ca861941d38a4df49d0a34bd024972cd458f516ef3c65d128e3/PyQt5_sip-12.16.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:633cba509a98bd626def951bb948d4e736635acbd0b7fabd7be55a3a096a8a0b", size = 281640 }, + { url = "https://files.pythonhosted.org/packages/12/a5/9439567dbf513bfc0fd71a5bb3797fae649338715749e89571ad86b4b3e3/PyQt5_sip-12.16.1-cp312-cp312-win32.whl", hash = "sha256:2b35ff92caa569e540675ffcd79ffbf3e7092cccf7166f89e2a8b388db80aa1c", size = 49428 }, + { url = "https://files.pythonhosted.org/packages/a7/33/d91e003b85ff7ab227d0fff236d48c18ada2f0cd49d5e35cb514867ba609/PyQt5_sip-12.16.1-cp312-cp312-win_amd64.whl", hash = "sha256:a0f83f554727f43dfe92afbf3a8c51e83bb8b78c5f160b635d4359fad681cebe", size = 57957 }, + { url = "https://files.pythonhosted.org/packages/1b/fe/d679c70e719f2ec46ee77bb6e878f23eb8d6ad8bc140e2ba6e732d99899d/PyQt5_sip-12.16.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2349f118dc6f01ee71fe57d8bab9e606ecf241468989abb23b5691d5538d7a69", size = 124520 }, + { url = "https://files.pythonhosted.org/packages/22/5d/35ffa29def1db02c06b70a77988b07daf989a8860ad7bf2fabe9726373af/PyQt5_sip-12.16.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:bbabdcc031e40417333bdd9e59d8add815c8f0663ebfcbcd3024bdeb55f35e9c", size = 281298 }, + { url = "https://files.pythonhosted.org/packages/07/96/88e6dd303c7891a55ab03b4159793252e06c020f7d56b8e0897fb4301681/PyQt5_sip-12.16.1-cp313-cp313-win32.whl", hash = "sha256:b6d06f6b49c7cd70db44277e21134390dcabb709da434d63754c9968ff6d98e2", size = 49372 }, + { url = "https://files.pythonhosted.org/packages/ba/e7/45e83e131f863377fd779fec1d6bbed364e202a9580240bbcee6c177d830/PyQt5_sip-12.16.1-cp313-cp313-win_amd64.whl", hash = "sha256:e2bd572cfb969089c2813c85d6e1393ec1a0aeecebc53934ba9f062acf440b50", size = 57943 }, +] + +[[package]] +name = "pytest" +version = "8.3.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "iniconfig" }, + { name = "packaging" }, + { name = "pluggy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/05/35/30e0d83068951d90a01852cb1cef56e5d8a09d20c7f511634cc2f7e0372a/pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761", size = 1445919 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/92/76a1c94d3afee238333bc0a42b82935dd8f9cf8ce9e336ff87ee14d9e1cf/pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6", size = 343083 }, +] + +[[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 } +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 }, +] + +[[package]] +name = "pytz" +version = "2024.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3a/31/3c70bf7603cc2dca0f19bdc53b4537a797747a58875b552c8c413d963a3f/pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a", size = 319692 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/c3/005fcca25ce078d2cc29fd559379817424e94885510568bc1bc53d7d5846/pytz-2024.2-py2.py3-none-any.whl", hash = "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725", size = 508002 }, +] + +[[package]] +name = "pywin32" +version = "308" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/eb/e2/02652007469263fe1466e98439831d65d4ca80ea1a2df29abecedf7e47b7/pywin32-308-cp311-cp311-win32.whl", hash = "sha256:5d8c8015b24a7d6855b1550d8e660d8daa09983c80e5daf89a273e5c6fb5095a", size = 5928156 }, + { url = "https://files.pythonhosted.org/packages/48/ef/f4fb45e2196bc7ffe09cad0542d9aff66b0e33f6c0954b43e49c33cad7bd/pywin32-308-cp311-cp311-win_amd64.whl", hash = "sha256:575621b90f0dc2695fec346b2d6302faebd4f0f45c05ea29404cefe35d89442b", size = 6559559 }, + { url = "https://files.pythonhosted.org/packages/79/ef/68bb6aa865c5c9b11a35771329e95917b5559845bd75b65549407f9fc6b4/pywin32-308-cp311-cp311-win_arm64.whl", hash = "sha256:100a5442b7332070983c4cd03f2e906a5648a5104b8a7f50175f7906efd16bb6", size = 7972495 }, + { url = "https://files.pythonhosted.org/packages/00/7c/d00d6bdd96de4344e06c4afbf218bc86b54436a94c01c71a8701f613aa56/pywin32-308-cp312-cp312-win32.whl", hash = "sha256:587f3e19696f4bf96fde9d8a57cec74a57021ad5f204c9e627e15c33ff568897", size = 5939729 }, + { url = "https://files.pythonhosted.org/packages/21/27/0c8811fbc3ca188f93b5354e7c286eb91f80a53afa4e11007ef661afa746/pywin32-308-cp312-cp312-win_amd64.whl", hash = "sha256:00b3e11ef09ede56c6a43c71f2d31857cf7c54b0ab6e78ac659497abd2834f47", size = 6543015 }, + { url = "https://files.pythonhosted.org/packages/9d/0f/d40f8373608caed2255781a3ad9a51d03a594a1248cd632d6a298daca693/pywin32-308-cp312-cp312-win_arm64.whl", hash = "sha256:9b4de86c8d909aed15b7011182c8cab38c8850de36e6afb1f0db22b8959e3091", size = 7976033 }, + { url = "https://files.pythonhosted.org/packages/a9/a4/aa562d8935e3df5e49c161b427a3a2efad2ed4e9cf81c3de636f1fdddfd0/pywin32-308-cp313-cp313-win32.whl", hash = "sha256:1c44539a37a5b7b21d02ab34e6a4d314e0788f1690d65b48e9b0b89f31abbbed", size = 5938579 }, + { url = "https://files.pythonhosted.org/packages/c7/50/b0efb8bb66210da67a53ab95fd7a98826a97ee21f1d22949863e6d588b22/pywin32-308-cp313-cp313-win_amd64.whl", hash = "sha256:fd380990e792eaf6827fcb7e187b2b4b1cede0585e3d0c9e84201ec27b9905e4", size = 6542056 }, + { url = "https://files.pythonhosted.org/packages/26/df/2b63e3e4f2df0224f8aaf6d131f54fe4e8c96400eb9df563e2aae2e1a1f9/pywin32-308-cp313-cp313-win_arm64.whl", hash = "sha256:ef313c46d4c18dfb82a2431e3051ac8f112ccee1a34f29c263c583c568db63cd", size = 7974986 }, +] + +[[package]] +name = "pyyaml" +version = "6.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/aa/7af4e81f7acba21a4c6be026da38fd2b872ca46226673c89a758ebdc4fd2/PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774", size = 184612 }, + { url = "https://files.pythonhosted.org/packages/8b/62/b9faa998fd185f65c1371643678e4d58254add437edb764a08c5a98fb986/PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee", size = 172040 }, + { url = "https://files.pythonhosted.org/packages/ad/0c/c804f5f922a9a6563bab712d8dcc70251e8af811fce4524d57c2c0fd49a4/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c", size = 736829 }, + { url = "https://files.pythonhosted.org/packages/51/16/6af8d6a6b210c8e54f1406a6b9481febf9c64a3109c541567e35a49aa2e7/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317", size = 764167 }, + { url = "https://files.pythonhosted.org/packages/75/e4/2c27590dfc9992f73aabbeb9241ae20220bd9452df27483b6e56d3975cc5/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85", size = 762952 }, + { url = "https://files.pythonhosted.org/packages/9b/97/ecc1abf4a823f5ac61941a9c00fe501b02ac3ab0e373c3857f7d4b83e2b6/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4", size = 735301 }, + { url = "https://files.pythonhosted.org/packages/45/73/0f49dacd6e82c9430e46f4a027baa4ca205e8b0a9dce1397f44edc23559d/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e", size = 756638 }, + { url = "https://files.pythonhosted.org/packages/22/5f/956f0f9fc65223a58fbc14459bf34b4cc48dec52e00535c79b8db361aabd/PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5", size = 143850 }, + { url = "https://files.pythonhosted.org/packages/ed/23/8da0bbe2ab9dcdd11f4f4557ccaf95c10b9811b13ecced089d43ce59c3c8/PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44", size = 161980 }, + { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873 }, + { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302 }, + { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154 }, + { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223 }, + { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542 }, + { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164 }, + { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611 }, + { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591 }, + { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338 }, + { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309 }, + { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679 }, + { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428 }, + { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361 }, + { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523 }, + { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660 }, + { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597 }, + { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527 }, + { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446 }, +] + +[[package]] +name = "pyzmq" +version = "26.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "implementation_name == 'pypy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fd/05/bed626b9f7bb2322cdbbf7b4bd8f54b1b617b0d2ab2d3547d6e39428a48e/pyzmq-26.2.0.tar.gz", hash = "sha256:070672c258581c8e4f640b5159297580a9974b026043bd4ab0470be9ed324f1f", size = 271975 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/20/de7442172f77f7c96299a0ac70e7d4fb78cd51eca67aa2cf552b66c14196/pyzmq-26.2.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:8f7e66c7113c684c2b3f1c83cdd3376103ee0ce4c49ff80a648643e57fb22218", size = 1340639 }, + { url = "https://files.pythonhosted.org/packages/98/4d/5000468bd64c7910190ed0a6c76a1ca59a68189ec1f007c451dc181a22f4/pyzmq-26.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3a495b30fc91db2db25120df5847d9833af237546fd59170701acd816ccc01c4", size = 1008710 }, + { url = "https://files.pythonhosted.org/packages/e1/bf/c67fd638c2f9fbbab8090a3ee779370b97c82b84cc12d0c498b285d7b2c0/pyzmq-26.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77eb0968da535cba0470a5165468b2cac7772cfb569977cff92e240f57e31bef", size = 673129 }, + { url = "https://files.pythonhosted.org/packages/86/94/99085a3f492aa538161cbf27246e8886ff850e113e0c294a5b8245f13b52/pyzmq-26.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ace4f71f1900a548f48407fc9be59c6ba9d9aaf658c2eea6cf2779e72f9f317", size = 910107 }, + { url = "https://files.pythonhosted.org/packages/31/1d/346809e8a9b999646d03f21096428453465b1bca5cd5c64ecd048d9ecb01/pyzmq-26.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92a78853d7280bffb93df0a4a6a2498cba10ee793cc8076ef797ef2f74d107cf", size = 867960 }, + { url = "https://files.pythonhosted.org/packages/ab/68/6fb6ae5551846ad5beca295b7bca32bf0a7ce19f135cb30e55fa2314e6b6/pyzmq-26.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:689c5d781014956a4a6de61d74ba97b23547e431e9e7d64f27d4922ba96e9d6e", size = 869204 }, + { url = "https://files.pythonhosted.org/packages/0f/f9/18417771dee223ccf0f48e29adf8b4e25ba6d0e8285e33bcbce078070bc3/pyzmq-26.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0aca98bc423eb7d153214b2df397c6421ba6373d3397b26c057af3c904452e37", size = 1203351 }, + { url = "https://files.pythonhosted.org/packages/e0/46/f13e67fe0d4f8a2315782cbad50493de6203ea0d744610faf4d5f5b16e90/pyzmq-26.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1f3496d76b89d9429a656293744ceca4d2ac2a10ae59b84c1da9b5165f429ad3", size = 1514204 }, + { url = "https://files.pythonhosted.org/packages/50/11/ddcf7343b7b7a226e0fc7b68cbf5a5bb56291fac07f5c3023bb4c319ebb4/pyzmq-26.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5c2b3bfd4b9689919db068ac6c9911f3fcb231c39f7dd30e3138be94896d18e6", size = 1414339 }, + { url = "https://files.pythonhosted.org/packages/01/14/1c18d7d5b7be2708f513f37c61bfadfa62161c10624f8733f1c8451b3509/pyzmq-26.2.0-cp311-cp311-win32.whl", hash = "sha256:eac5174677da084abf378739dbf4ad245661635f1600edd1221f150b165343f4", size = 576928 }, + { url = "https://files.pythonhosted.org/packages/3b/1b/0a540edd75a41df14ec416a9a500b9fec66e554aac920d4c58fbd5756776/pyzmq-26.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:5a509df7d0a83a4b178d0f937ef14286659225ef4e8812e05580776c70e155d5", size = 642317 }, + { url = "https://files.pythonhosted.org/packages/98/77/1cbfec0358078a4c5add529d8a70892db1be900980cdb5dd0898b3d6ab9d/pyzmq-26.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:c0e6091b157d48cbe37bd67233318dbb53e1e6327d6fc3bb284afd585d141003", size = 543834 }, + { url = "https://files.pythonhosted.org/packages/28/2f/78a766c8913ad62b28581777ac4ede50c6d9f249d39c2963e279524a1bbe/pyzmq-26.2.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:ded0fc7d90fe93ae0b18059930086c51e640cdd3baebdc783a695c77f123dcd9", size = 1343105 }, + { url = "https://files.pythonhosted.org/packages/b7/9c/4b1e2d3d4065be715e007fe063ec7885978fad285f87eae1436e6c3201f4/pyzmq-26.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:17bf5a931c7f6618023cdacc7081f3f266aecb68ca692adac015c383a134ca52", size = 1008365 }, + { url = "https://files.pythonhosted.org/packages/4f/ef/5a23ec689ff36d7625b38d121ef15abfc3631a9aecb417baf7a4245e4124/pyzmq-26.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55cf66647e49d4621a7e20c8d13511ef1fe1efbbccf670811864452487007e08", size = 665923 }, + { url = "https://files.pythonhosted.org/packages/ae/61/d436461a47437d63c6302c90724cf0981883ec57ceb6073873f32172d676/pyzmq-26.2.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4661c88db4a9e0f958c8abc2b97472e23061f0bc737f6f6179d7a27024e1faa5", size = 903400 }, + { url = "https://files.pythonhosted.org/packages/47/42/fc6d35ecefe1739a819afaf6f8e686f7f02a4dd241c78972d316f403474c/pyzmq-26.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea7f69de383cb47522c9c208aec6dd17697db7875a4674c4af3f8cfdac0bdeae", size = 860034 }, + { url = "https://files.pythonhosted.org/packages/07/3b/44ea6266a6761e9eefaa37d98fabefa112328808ac41aa87b4bbb668af30/pyzmq-26.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:7f98f6dfa8b8ccaf39163ce872bddacca38f6a67289116c8937a02e30bbe9711", size = 860579 }, + { url = "https://files.pythonhosted.org/packages/38/6f/4df2014ab553a6052b0e551b37da55166991510f9e1002c89cab7ce3b3f2/pyzmq-26.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e3e0210287329272539eea617830a6a28161fbbd8a3271bf4150ae3e58c5d0e6", size = 1196246 }, + { url = "https://files.pythonhosted.org/packages/38/9d/ee240fc0c9fe9817f0c9127a43238a3e28048795483c403cc10720ddef22/pyzmq-26.2.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6b274e0762c33c7471f1a7471d1a2085b1a35eba5cdc48d2ae319f28b6fc4de3", size = 1507441 }, + { url = "https://files.pythonhosted.org/packages/85/4f/01711edaa58d535eac4a26c294c617c9a01f09857c0ce191fd574d06f359/pyzmq-26.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:29c6a4635eef69d68a00321e12a7d2559fe2dfccfa8efae3ffb8e91cd0b36a8b", size = 1406498 }, + { url = "https://files.pythonhosted.org/packages/07/18/907134c85c7152f679ed744e73e645b365f3ad571f38bdb62e36f347699a/pyzmq-26.2.0-cp312-cp312-win32.whl", hash = "sha256:989d842dc06dc59feea09e58c74ca3e1678c812a4a8a2a419046d711031f69c7", size = 575533 }, + { url = "https://files.pythonhosted.org/packages/ce/2c/a6f4a20202a4d3c582ad93f95ee78d79bbdc26803495aec2912b17dbbb6c/pyzmq-26.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:2a50625acdc7801bc6f74698c5c583a491c61d73c6b7ea4dee3901bb99adb27a", size = 637768 }, + { url = "https://files.pythonhosted.org/packages/5f/0e/eb16ff731632d30554bf5af4dbba3ffcd04518219d82028aea4ae1b02ca5/pyzmq-26.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:4d29ab8592b6ad12ebbf92ac2ed2bedcfd1cec192d8e559e2e099f648570e19b", size = 540675 }, + { url = "https://files.pythonhosted.org/packages/04/a7/0f7e2f6c126fe6e62dbae0bc93b1bd3f1099cf7fea47a5468defebe3f39d/pyzmq-26.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9dd8cd1aeb00775f527ec60022004d030ddc51d783d056e3e23e74e623e33726", size = 1006564 }, + { url = "https://files.pythonhosted.org/packages/31/b6/a187165c852c5d49f826a690857684333a6a4a065af0a6015572d2284f6a/pyzmq-26.2.0-cp313-cp313-macosx_10_15_universal2.whl", hash = "sha256:28c812d9757fe8acecc910c9ac9dafd2ce968c00f9e619db09e9f8f54c3a68a3", size = 1340447 }, + { url = "https://files.pythonhosted.org/packages/68/ba/f4280c58ff71f321602a6e24fd19879b7e79793fb8ab14027027c0fb58ef/pyzmq-26.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d80b1dd99c1942f74ed608ddb38b181b87476c6a966a88a950c7dee118fdf50", size = 665485 }, + { url = "https://files.pythonhosted.org/packages/77/b5/c987a5c53c7d8704216f29fc3d810b32f156bcea488a940e330e1bcbb88d/pyzmq-26.2.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c997098cc65e3208eca09303630e84d42718620e83b733d0fd69543a9cab9cb", size = 903484 }, + { url = "https://files.pythonhosted.org/packages/29/c9/07da157d2db18c72a7eccef8e684cefc155b712a88e3d479d930aa9eceba/pyzmq-26.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ad1bc8d1b7a18497dda9600b12dc193c577beb391beae5cd2349184db40f187", size = 859981 }, + { url = "https://files.pythonhosted.org/packages/43/09/e12501bd0b8394b7d02c41efd35c537a1988da67fc9c745cae9c6c776d31/pyzmq-26.2.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:bea2acdd8ea4275e1278350ced63da0b166421928276c7c8e3f9729d7402a57b", size = 860334 }, + { url = "https://files.pythonhosted.org/packages/eb/ff/f5ec1d455f8f7385cc0a8b2acd8c807d7fade875c14c44b85c1bddabae21/pyzmq-26.2.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:23f4aad749d13698f3f7b64aad34f5fc02d6f20f05999eebc96b89b01262fb18", size = 1196179 }, + { url = "https://files.pythonhosted.org/packages/ec/8a/bb2ac43295b1950fe436a81fc5b298be0b96ac76fb029b514d3ed58f7b27/pyzmq-26.2.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:a4f96f0d88accc3dbe4a9025f785ba830f968e21e3e2c6321ccdfc9aef755115", size = 1507668 }, + { url = "https://files.pythonhosted.org/packages/a9/49/dbc284ebcfd2dca23f6349227ff1616a7ee2c4a35fe0a5d6c3deff2b4fed/pyzmq-26.2.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ced65e5a985398827cc9276b93ef6dfabe0273c23de8c7931339d7e141c2818e", size = 1406539 }, + { url = "https://files.pythonhosted.org/packages/00/68/093cdce3fe31e30a341d8e52a1ad86392e13c57970d722c1f62a1d1a54b6/pyzmq-26.2.0-cp313-cp313-win32.whl", hash = "sha256:31507f7b47cc1ead1f6e86927f8ebb196a0bab043f6345ce070f412a59bf87b5", size = 575567 }, + { url = "https://files.pythonhosted.org/packages/92/ae/6cc4657148143412b5819b05e362ae7dd09fb9fe76e2a539dcff3d0386bc/pyzmq-26.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:70fc7fcf0410d16ebdda9b26cbd8bf8d803d220a7f3522e060a69a9c87bf7bad", size = 637551 }, + { url = "https://files.pythonhosted.org/packages/6c/67/fbff102e201688f97c8092e4c3445d1c1068c2f27bbd45a578df97ed5f94/pyzmq-26.2.0-cp313-cp313-win_arm64.whl", hash = "sha256:c3789bd5768ab5618ebf09cef6ec2b35fed88709b104351748a63045f0ff9797", size = 540378 }, + { url = "https://files.pythonhosted.org/packages/3f/fe/2d998380b6e0122c6c4bdf9b6caf490831e5f5e2d08a203b5adff060c226/pyzmq-26.2.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:034da5fc55d9f8da09015d368f519478a52675e558c989bfcb5cf6d4e16a7d2a", size = 1007378 }, + { url = "https://files.pythonhosted.org/packages/4a/f4/30d6e7157f12b3a0390bde94d6a8567cdb88846ed068a6e17238a4ccf600/pyzmq-26.2.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c92d73464b886931308ccc45b2744e5968cbaade0b1d6aeb40d8ab537765f5bc", size = 1329532 }, + { url = "https://files.pythonhosted.org/packages/82/86/3fe917870e15ee1c3ad48229a2a64458e36036e64b4afa9659045d82bfa8/pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:794a4562dcb374f7dbbfb3f51d28fb40123b5a2abadee7b4091f93054909add5", size = 653242 }, + { url = "https://files.pythonhosted.org/packages/50/2d/242e7e6ef6c8c19e6cb52d095834508cd581ffb925699fd3c640cdc758f1/pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aee22939bb6075e7afededabad1a56a905da0b3c4e3e0c45e75810ebe3a52672", size = 888404 }, + { url = "https://files.pythonhosted.org/packages/ac/11/7270566e1f31e4ea73c81ec821a4b1688fd551009a3d2bab11ec66cb1e8f/pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ae90ff9dad33a1cfe947d2c40cb9cb5e600d759ac4f0fd22616ce6540f72797", size = 845858 }, + { url = "https://files.pythonhosted.org/packages/91/d5/72b38fbc69867795c8711bdd735312f9fef1e3d9204e2f63ab57085434b9/pyzmq-26.2.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:43a47408ac52647dfabbc66a25b05b6a61700b5165807e3fbd40063fcaf46386", size = 847375 }, + { url = "https://files.pythonhosted.org/packages/dd/9a/10ed3c7f72b4c24e719c59359fbadd1a27556a28b36cdf1cd9e4fb7845d5/pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:25bf2374a2a8433633c65ccb9553350d5e17e60c8eb4de4d92cc6bd60f01d306", size = 1183489 }, + { url = "https://files.pythonhosted.org/packages/72/2d/8660892543fabf1fe41861efa222455811adac9f3c0818d6c3170a1153e3/pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_i686.whl", hash = "sha256:007137c9ac9ad5ea21e6ad97d3489af654381324d5d3ba614c323f60dab8fae6", size = 1492932 }, + { url = "https://files.pythonhosted.org/packages/7b/d6/32fd69744afb53995619bc5effa2a405ae0d343cd3e747d0fbc43fe894ee/pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:470d4a4f6d48fb34e92d768b4e8a5cc3780db0d69107abf1cd7ff734b9766eb0", size = 1392485 }, +] + +[[package]] +name = "qtconsole" +version = "5.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ipykernel" }, + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "packaging" }, + { name = "pygments" }, + { name = "qtpy" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f1/83/d2b11f2f737c276d8650a04ad3bf478d10fbcd55fe39f129cdb9e6843d31/qtconsole-5.6.1.tar.gz", hash = "sha256:5cad1c7e6c75d3ef8143857fd2ed28062b4b92b933c2cc328252d18a9cfd0be5", size = 435808 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/8a/635610fb6131bc702229e2780d7b042416866ab78f8ed1ff24c4b23a2f4c/qtconsole-5.6.1-py3-none-any.whl", hash = "sha256:3d22490d9589bace566ad4f3455b61fa2209156f40e87e19e2c3cb64e9264950", size = 125035 }, +] + +[[package]] +name = "qtpy" +version = "2.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e5/10/51e0e50dd1e4a160c54ac0717b8ff11b2063d441e721c2037f61931cf38d/qtpy-2.4.2.tar.gz", hash = "sha256:9d6ec91a587cc1495eaebd23130f7619afa5cdd34a277acb87735b4ad7c65156", size = 66849 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0a/0c/58a1e48209b0b1220ca2368435573f39ff1fa3577b7eef913f8960c5d429/QtPy-2.4.2-py3-none-any.whl", hash = "sha256:5a696b1dd7a354cb330657da1d17c20c2190c72d4888ba923f8461da67aa1a1c", size = 95155 }, +] + +[[package]] +name = "referencing" +version = "0.35.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/99/5b/73ca1f8e72fff6fa52119dbd185f73a907b1989428917b24cff660129b6d/referencing-0.35.1.tar.gz", hash = "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c", size = 62991 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/59/2056f61236782a2c86b33906c025d4f4a0b17be0161b63b70fd9e8775d36/referencing-0.35.1-py3-none-any.whl", hash = "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de", size = 26684 }, +] + +[[package]] +name = "requests" +version = "2.32.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, +] + +[[package]] +name = "rich" +version = "13.9.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ab/3a/0316b28d0761c6734d6bc14e770d85506c986c85ffb239e688eeaab2c2bc/rich-13.9.4.tar.gz", hash = "sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098", size = 223149 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", size = 242424 }, +] + +[[package]] +name = "rpds-py" +version = "0.22.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/01/80/cce854d0921ff2f0a9fa831ba3ad3c65cee3a46711addf39a2af52df2cfd/rpds_py-0.22.3.tar.gz", hash = "sha256:e32fee8ab45d3c2db6da19a5323bc3362237c8b653c70194414b892fd06a080d", size = 26771 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/ad/8d1ddf78f2805a71253fcd388017e7b4a0615c22c762b6d35301fef20106/rpds_py-0.22.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d20cfb4e099748ea39e6f7b16c91ab057989712d31761d3300d43134e26e165f", size = 359773 }, + { url = "https://files.pythonhosted.org/packages/c8/75/68c15732293a8485d79fe4ebe9045525502a067865fa4278f178851b2d87/rpds_py-0.22.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:68049202f67380ff9aa52f12e92b1c30115f32e6895cd7198fa2a7961621fc5a", size = 349214 }, + { url = "https://files.pythonhosted.org/packages/3c/4c/7ce50f3070083c2e1b2bbd0fb7046f3da55f510d19e283222f8f33d7d5f4/rpds_py-0.22.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb4f868f712b2dd4bcc538b0a0c1f63a2b1d584c925e69a224d759e7070a12d5", size = 380477 }, + { url = "https://files.pythonhosted.org/packages/9a/e9/835196a69cb229d5c31c13b8ae603bd2da9a6695f35fe4270d398e1db44c/rpds_py-0.22.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bc51abd01f08117283c5ebf64844a35144a0843ff7b2983e0648e4d3d9f10dbb", size = 386171 }, + { url = "https://files.pythonhosted.org/packages/f9/8e/33fc4eba6683db71e91e6d594a2cf3a8fbceb5316629f0477f7ece5e3f75/rpds_py-0.22.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0f3cec041684de9a4684b1572fe28c7267410e02450f4561700ca5a3bc6695a2", size = 422676 }, + { url = "https://files.pythonhosted.org/packages/37/47/2e82d58f8046a98bb9497a8319604c92b827b94d558df30877c4b3c6ccb3/rpds_py-0.22.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7ef9d9da710be50ff6809fed8f1963fecdfecc8b86656cadfca3bc24289414b0", size = 446152 }, + { url = "https://files.pythonhosted.org/packages/e1/78/79c128c3e71abbc8e9739ac27af11dc0f91840a86fce67ff83c65d1ba195/rpds_py-0.22.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59f4a79c19232a5774aee369a0c296712ad0e77f24e62cad53160312b1c1eaa1", size = 381300 }, + { url = "https://files.pythonhosted.org/packages/c9/5b/2e193be0e8b228c1207f31fa3ea79de64dadb4f6a4833111af8145a6bc33/rpds_py-0.22.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a60bce91f81ddaac922a40bbb571a12c1070cb20ebd6d49c48e0b101d87300d", size = 409636 }, + { url = "https://files.pythonhosted.org/packages/c2/3f/687c7100b762d62186a1c1100ffdf99825f6fa5ea94556844bbbd2d0f3a9/rpds_py-0.22.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e89391e6d60251560f0a8f4bd32137b077a80d9b7dbe6d5cab1cd80d2746f648", size = 556708 }, + { url = "https://files.pythonhosted.org/packages/8c/a2/c00cbc4b857e8b3d5e7f7fc4c81e23afd8c138b930f4f3ccf9a41a23e9e4/rpds_py-0.22.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e3fb866d9932a3d7d0c82da76d816996d1667c44891bd861a0f97ba27e84fc74", size = 583554 }, + { url = "https://files.pythonhosted.org/packages/d0/08/696c9872cf56effdad9ed617ac072f6774a898d46b8b8964eab39ec562d2/rpds_py-0.22.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1352ae4f7c717ae8cba93421a63373e582d19d55d2ee2cbb184344c82d2ae55a", size = 552105 }, + { url = "https://files.pythonhosted.org/packages/18/1f/4df560be1e994f5adf56cabd6c117e02de7c88ee238bb4ce03ed50da9d56/rpds_py-0.22.3-cp311-cp311-win32.whl", hash = "sha256:b0b4136a252cadfa1adb705bb81524eee47d9f6aab4f2ee4fa1e9d3cd4581f64", size = 220199 }, + { url = "https://files.pythonhosted.org/packages/b8/1b/c29b570bc5db8237553002788dc734d6bd71443a2ceac2a58202ec06ef12/rpds_py-0.22.3-cp311-cp311-win_amd64.whl", hash = "sha256:8bd7c8cfc0b8247c8799080fbff54e0b9619e17cdfeb0478ba7295d43f635d7c", size = 231775 }, + { url = "https://files.pythonhosted.org/packages/75/47/3383ee3bd787a2a5e65a9b9edc37ccf8505c0a00170e3a5e6ea5fbcd97f7/rpds_py-0.22.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:27e98004595899949bd7a7b34e91fa7c44d7a97c40fcaf1d874168bb652ec67e", size = 352334 }, + { url = "https://files.pythonhosted.org/packages/40/14/aa6400fa8158b90a5a250a77f2077c0d0cd8a76fce31d9f2b289f04c6dec/rpds_py-0.22.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1978d0021e943aae58b9b0b196fb4895a25cc53d3956b8e35e0b7682eefb6d56", size = 342111 }, + { url = "https://files.pythonhosted.org/packages/7d/06/395a13bfaa8a28b302fb433fb285a67ce0ea2004959a027aea8f9c52bad4/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:655ca44a831ecb238d124e0402d98f6212ac527a0ba6c55ca26f616604e60a45", size = 384286 }, + { url = "https://files.pythonhosted.org/packages/43/52/d8eeaffab047e6b7b7ef7f00d5ead074a07973968ffa2d5820fa131d7852/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:feea821ee2a9273771bae61194004ee2fc33f8ec7db08117ef9147d4bbcbca8e", size = 391739 }, + { url = "https://files.pythonhosted.org/packages/83/31/52dc4bde85c60b63719610ed6f6d61877effdb5113a72007679b786377b8/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:22bebe05a9ffc70ebfa127efbc429bc26ec9e9b4ee4d15a740033efda515cf3d", size = 427306 }, + { url = "https://files.pythonhosted.org/packages/70/d5/1bab8e389c2261dba1764e9e793ed6830a63f830fdbec581a242c7c46bda/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3af6e48651c4e0d2d166dc1b033b7042ea3f871504b6805ba5f4fe31581d8d38", size = 442717 }, + { url = "https://files.pythonhosted.org/packages/82/a1/a45f3e30835b553379b3a56ea6c4eb622cf11e72008229af840e4596a8ea/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e67ba3c290821343c192f7eae1d8fd5999ca2dc99994114643e2f2d3e6138b15", size = 385721 }, + { url = "https://files.pythonhosted.org/packages/a6/27/780c942de3120bdd4d0e69583f9c96e179dfff082f6ecbb46b8d6488841f/rpds_py-0.22.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:02fbb9c288ae08bcb34fb41d516d5eeb0455ac35b5512d03181d755d80810059", size = 415824 }, + { url = "https://files.pythonhosted.org/packages/94/0b/aa0542ca88ad20ea719b06520f925bae348ea5c1fdf201b7e7202d20871d/rpds_py-0.22.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f56a6b404f74ab372da986d240e2e002769a7d7102cc73eb238a4f72eec5284e", size = 561227 }, + { url = "https://files.pythonhosted.org/packages/0d/92/3ed77d215f82c8f844d7f98929d56cc321bb0bcfaf8f166559b8ec56e5f1/rpds_py-0.22.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0a0461200769ab3b9ab7e513f6013b7a97fdeee41c29b9db343f3c5a8e2b9e61", size = 587424 }, + { url = "https://files.pythonhosted.org/packages/09/42/cacaeb047a22cab6241f107644f230e2935d4efecf6488859a7dd82fc47d/rpds_py-0.22.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8633e471c6207a039eff6aa116e35f69f3156b3989ea3e2d755f7bc41754a4a7", size = 555953 }, + { url = "https://files.pythonhosted.org/packages/e6/52/c921dc6d5f5d45b212a456c1f5b17df1a471127e8037eb0972379e39dff4/rpds_py-0.22.3-cp312-cp312-win32.whl", hash = "sha256:593eba61ba0c3baae5bc9be2f5232430453fb4432048de28399ca7376de9c627", size = 221339 }, + { url = "https://files.pythonhosted.org/packages/f2/c7/f82b5be1e8456600395366f86104d1bd8d0faed3802ad511ef6d60c30d98/rpds_py-0.22.3-cp312-cp312-win_amd64.whl", hash = "sha256:d115bffdd417c6d806ea9069237a4ae02f513b778e3789a359bc5856e0404cc4", size = 235786 }, + { url = "https://files.pythonhosted.org/packages/d0/bf/36d5cc1f2c609ae6e8bf0fc35949355ca9d8790eceb66e6385680c951e60/rpds_py-0.22.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:ea7433ce7e4bfc3a85654aeb6747babe3f66eaf9a1d0c1e7a4435bbdf27fea84", size = 351657 }, + { url = "https://files.pythonhosted.org/packages/24/2a/f1e0fa124e300c26ea9382e59b2d582cba71cedd340f32d1447f4f29fa4e/rpds_py-0.22.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6dd9412824c4ce1aca56c47b0991e65bebb7ac3f4edccfd3f156150c96a7bf25", size = 341829 }, + { url = "https://files.pythonhosted.org/packages/cf/c2/0da1231dd16953845bed60d1a586fcd6b15ceaeb965f4d35cdc71f70f606/rpds_py-0.22.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20070c65396f7373f5df4005862fa162db5d25d56150bddd0b3e8214e8ef45b4", size = 384220 }, + { url = "https://files.pythonhosted.org/packages/c7/73/a4407f4e3a00a9d4b68c532bf2d873d6b562854a8eaff8faa6133b3588ec/rpds_py-0.22.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0b09865a9abc0ddff4e50b5ef65467cd94176bf1e0004184eb915cbc10fc05c5", size = 391009 }, + { url = "https://files.pythonhosted.org/packages/a9/c3/04b7353477ab360fe2563f5f0b176d2105982f97cd9ae80a9c5a18f1ae0f/rpds_py-0.22.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3453e8d41fe5f17d1f8e9c383a7473cd46a63661628ec58e07777c2fff7196dc", size = 426989 }, + { url = "https://files.pythonhosted.org/packages/8d/e6/e4b85b722bcf11398e17d59c0f6049d19cd606d35363221951e6d625fcb0/rpds_py-0.22.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5d36399a1b96e1a5fdc91e0522544580dbebeb1f77f27b2b0ab25559e103b8b", size = 441544 }, + { url = "https://files.pythonhosted.org/packages/27/fc/403e65e56f65fff25f2973216974976d3f0a5c3f30e53758589b6dc9b79b/rpds_py-0.22.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009de23c9c9ee54bf11303a966edf4d9087cd43a6003672e6aa7def643d06518", size = 385179 }, + { url = "https://files.pythonhosted.org/packages/57/9b/2be9ff9700d664d51fd96b33d6595791c496d2778cb0b2a634f048437a55/rpds_py-0.22.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1aef18820ef3e4587ebe8b3bc9ba6e55892a6d7b93bac6d29d9f631a3b4befbd", size = 415103 }, + { url = "https://files.pythonhosted.org/packages/bb/a5/03c2ad8ca10994fcf22dd2150dd1d653bc974fa82d9a590494c84c10c641/rpds_py-0.22.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f60bd8423be1d9d833f230fdbccf8f57af322d96bcad6599e5a771b151398eb2", size = 560916 }, + { url = "https://files.pythonhosted.org/packages/ba/2e/be4fdfc8b5b576e588782b56978c5b702c5a2307024120d8aeec1ab818f0/rpds_py-0.22.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:62d9cfcf4948683a18a9aff0ab7e1474d407b7bab2ca03116109f8464698ab16", size = 587062 }, + { url = "https://files.pythonhosted.org/packages/67/e0/2034c221937709bf9c542603d25ad43a68b4b0a9a0c0b06a742f2756eb66/rpds_py-0.22.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9253fc214112405f0afa7db88739294295f0e08466987f1d70e29930262b4c8f", size = 555734 }, + { url = "https://files.pythonhosted.org/packages/ea/ce/240bae07b5401a22482b58e18cfbabaa392409b2797da60223cca10d7367/rpds_py-0.22.3-cp313-cp313-win32.whl", hash = "sha256:fb0ba113b4983beac1a2eb16faffd76cb41e176bf58c4afe3e14b9c681f702de", size = 220663 }, + { url = "https://files.pythonhosted.org/packages/cb/f0/d330d08f51126330467edae2fa4efa5cec8923c87551a79299380fdea30d/rpds_py-0.22.3-cp313-cp313-win_amd64.whl", hash = "sha256:c58e2339def52ef6b71b8f36d13c3688ea23fa093353f3a4fee2556e62086ec9", size = 235503 }, + { url = "https://files.pythonhosted.org/packages/f7/c4/dbe1cc03df013bf2feb5ad00615038050e7859f381e96fb5b7b4572cd814/rpds_py-0.22.3-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:f82a116a1d03628a8ace4859556fb39fd1424c933341a08ea3ed6de1edb0283b", size = 347698 }, + { url = "https://files.pythonhosted.org/packages/a4/3a/684f66dd6b0f37499cad24cd1c0e523541fd768576fa5ce2d0a8799c3cba/rpds_py-0.22.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3dfcbc95bd7992b16f3f7ba05af8a64ca694331bd24f9157b49dadeeb287493b", size = 337330 }, + { url = "https://files.pythonhosted.org/packages/82/eb/e022c08c2ce2e8f7683baa313476492c0e2c1ca97227fe8a75d9f0181e95/rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59259dc58e57b10e7e18ce02c311804c10c5a793e6568f8af4dead03264584d1", size = 380022 }, + { url = "https://files.pythonhosted.org/packages/e4/21/5a80e653e4c86aeb28eb4fea4add1f72e1787a3299687a9187105c3ee966/rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5725dd9cc02068996d4438d397e255dcb1df776b7ceea3b9cb972bdb11260a83", size = 390754 }, + { url = "https://files.pythonhosted.org/packages/37/a4/d320a04ae90f72d080b3d74597074e62be0a8ecad7d7321312dfe2dc5a6a/rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99b37292234e61325e7a5bb9689e55e48c3f5f603af88b1642666277a81f1fbd", size = 423840 }, + { url = "https://files.pythonhosted.org/packages/87/70/674dc47d93db30a6624279284e5631be4c3a12a0340e8e4f349153546728/rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:27b1d3b3915a99208fee9ab092b8184c420f2905b7d7feb4aeb5e4a9c509b8a1", size = 438970 }, + { url = "https://files.pythonhosted.org/packages/3f/64/9500f4d66601d55cadd21e90784cfd5d5f4560e129d72e4339823129171c/rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f612463ac081803f243ff13cccc648578e2279295048f2a8d5eb430af2bae6e3", size = 383146 }, + { url = "https://files.pythonhosted.org/packages/4d/45/630327addb1d17173adcf4af01336fd0ee030c04798027dfcb50106001e0/rpds_py-0.22.3-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f73d3fef726b3243a811121de45193c0ca75f6407fe66f3f4e183c983573e130", size = 408294 }, + { url = "https://files.pythonhosted.org/packages/5f/ef/8efb3373cee54ea9d9980b772e5690a0c9e9214045a4e7fa35046e399fee/rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:3f21f0495edea7fdbaaa87e633a8689cd285f8f4af5c869f27bc8074638ad69c", size = 556345 }, + { url = "https://files.pythonhosted.org/packages/54/01/151d3b9ef4925fc8f15bfb131086c12ec3c3d6dd4a4f7589c335bf8e85ba/rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1e9663daaf7a63ceccbbb8e3808fe90415b0757e2abddbfc2e06c857bf8c5e2b", size = 582292 }, + { url = "https://files.pythonhosted.org/packages/30/89/35fc7a6cdf3477d441c7aca5e9bbf5a14e0f25152aed7f63f4e0b141045d/rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:a76e42402542b1fae59798fab64432b2d015ab9d0c8c47ba7addddbaf7952333", size = 553855 }, + { url = "https://files.pythonhosted.org/packages/8f/e0/830c02b2457c4bd20a8c5bb394d31d81f57fbefce2dbdd2e31feff4f7003/rpds_py-0.22.3-cp313-cp313t-win32.whl", hash = "sha256:69803198097467ee7282750acb507fba35ca22cc3b85f16cf45fb01cb9097730", size = 219100 }, + { url = "https://files.pythonhosted.org/packages/f8/30/7ac943f69855c2db77407ae363484b915d861702dbba1aa82d68d57f42be/rpds_py-0.22.3-cp313-cp313t-win_amd64.whl", hash = "sha256:f5cf2a0c2bdadf3791b5c205d55a37a54025c6e18a71c71f82bb536cf9a454bf", size = 233794 }, +] + +[[package]] +name = "s3fs" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "botocore" }, + { name = "fsspec" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d9/9a/504cb277632c4d325beabbd03bb43778f0decb9be22d9e0e6c62f44540c7/s3fs-0.4.2.tar.gz", hash = "sha256:2ca5de8dc18ad7ad350c0bd01aef0406aa5d0fff78a561f0f710f9d9858abdd0", size = 57527 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b8/e4/b8fc59248399d2482b39340ec9be4bb2493846ac23641b43115a7e5cd675/s3fs-0.4.2-py3-none-any.whl", hash = "sha256:91c1dfb45e5217bd441a7a560946fe865ced6225ff7eb0fb459fe6e601a95ed3", size = 19791 }, +] + +[[package]] +name = "scikit-image" +version = "0.25.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "imageio" }, + { name = "lazy-loader" }, + { name = "networkx" }, + { name = "numpy" }, + { name = "packaging" }, + { name = "pillow" }, + { name = "scipy" }, + { name = "tifffile" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e6/8d/383e5438c807804b66d68ed2c09202d185ea781b6022aa8b9fac3851137f/scikit_image-0.25.0.tar.gz", hash = "sha256:58d94fea11b6b3306b3770417dc1cbca7fa9bcbd6a13945d7910399c88c2018c", size = 22696477 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3e/5c/8182c9e7560a46a7c138c855b8b1804ddf5dc4c0a926fbc0f3c4092d2112/scikit_image-0.25.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7e235726d9b404527445679030209965c5365767b8728584fadd8dbfa29e29de", size = 13998703 }, + { url = "https://files.pythonhosted.org/packages/ed/26/0188429b5a81cb58255b73a9c22bd22853438ab3c066f287db045efb5938/scikit_image-0.25.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:854b88b7d8b862ccd8f22e660c16fd54f9430c87e079c8dfe46c7f0cebbb1de3", size = 13175073 }, + { url = "https://files.pythonhosted.org/packages/24/12/46688700f5c3b54976a56500f8f4294147fbbd252dde357e228671024436/scikit_image-0.25.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70e2d90b5bfffffe0880d25d40ddab9ca5c145912461d6c8f6bd3449f4e527bb", size = 14144390 }, + { url = "https://files.pythonhosted.org/packages/35/e8/67e4bd1c5f6c4cd0f53505ebb9eb15f143d6fed1fb4938b542013fa3ec25/scikit_image-0.25.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4287052dcd8fe63934daa6cbe28b2abe817d75e9b952290fdb4de42254740fc", size = 14783976 }, + { url = "https://files.pythonhosted.org/packages/26/72/0653e3274310972bd053fc9271aa29df2de0d51ad2db2d47b199bf6070d5/scikit_image-0.25.0-cp311-cp311-win_amd64.whl", hash = "sha256:d1e25ff6a3cdd8be938a5a06b441020aac304fa9f457a808bd359f5260468739", size = 12787254 }, + { url = "https://files.pythonhosted.org/packages/21/6a/a8df6953a85042a8a219c97e1758486b997c9dd319e1c474362229406e57/scikit_image-0.25.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7e63f18b10f9b74590d2ca62cbc4147e696a5e72cfcbcd4af52395fd94fcdc6e", size = 13981411 }, + { url = "https://files.pythonhosted.org/packages/dd/4c/e40a77c57a6b90dda710bc64ed761c93e7b3dd1cef3815675a2bc6807755/scikit_image-0.25.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:bad4af5edf58775607c153af5bc3f193c2b67261ea9817b62362c746e439d094", size = 13230600 }, + { url = "https://files.pythonhosted.org/packages/63/3f/fac8e1eefbe4a885fa1c9a384db8e11e47c19ab5558b25f370ade3901868/scikit_image-0.25.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44f7681ff99eed2c33d993bc4bfc17b62e6cadbca1081c7fdbb3607ce89b15e6", size = 14173033 }, + { url = "https://files.pythonhosted.org/packages/47/fe/f09efbf54782996a7f1d3db0e33cb9097f3cc6033392fb53459d7254fa7c/scikit_image-0.25.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:758f55d858aa796114a4275051ca4bb41d8b40c53eb78cb60f0b1ed235d4144b", size = 15002211 }, + { url = "https://files.pythonhosted.org/packages/89/30/4f95a7462411def5563c01d56674bd122bd6db55ae1e8c31ad68586e2d27/scikit_image-0.25.0-cp312-cp312-win_amd64.whl", hash = "sha256:4f7178c6fb6163710571522847326ad936a603646255b22d3d76b6ba58153890", size = 12894520 }, + { url = "https://files.pythonhosted.org/packages/bc/e4/066d0ed167eb146877c50109e94ec254e266391f385c72d545f34cf51755/scikit_image-0.25.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d3b08a8894190bc49038dc1a61f6ef0991ff520e5268604abd7ad217f693a0cc", size = 13917192 }, + { url = "https://files.pythonhosted.org/packages/3f/7c/ada573675ad528caff75c8b175c2e28e62c65c7192cf2292a25c3d9774fa/scikit_image-0.25.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:8438eac699c8b2820e5956960191d0c3b302bf9c4d42dbf194a229db04abacc3", size = 13191642 }, + { url = "https://files.pythonhosted.org/packages/cf/c4/16dbe7f7ef7b675c7a11dd51280f09001abca9f3cd4f455f342765b81b43/scikit_image-0.25.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9920673ef08ea44026c80deb14cf84d5c0cc1a68efad914c126b76110ed017a8", size = 14113112 }, + { url = "https://files.pythonhosted.org/packages/8c/d2/84d658db2abecac5f7225213a69d211d95157e8fa155b4e017903549a922/scikit_image-0.25.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0fe2f05cda852a5f90872054dd3709e9c4e670fc7332aef169867944e1b37431", size = 14974308 }, + { url = "https://files.pythonhosted.org/packages/b0/0d/4f017d5b85bf742624f8ccd6a03fb9cbf90704b52dbaefa7ffdb28e34775/scikit_image-0.25.0-cp313-cp313-win_amd64.whl", hash = "sha256:8ede552097ee281d01b25dc4ce121fdc17b6a43c36bbc3c13e39f0e3d8fb5239", size = 12880013 }, +] + +[package.optional-dependencies] +data = [ + { name = "pooch" }, +] + +[[package]] +name = "scipy" +version = "1.14.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/62/11/4d44a1f274e002784e4dbdb81e0ea96d2de2d1045b2132d5af62cc31fd28/scipy-1.14.1.tar.gz", hash = "sha256:5a275584e726026a5699459aa72f828a610821006228e841b94275c4a7c08417", size = 58620554 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b2/ab/070ccfabe870d9f105b04aee1e2860520460ef7ca0213172abfe871463b9/scipy-1.14.1-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:2da0469a4ef0ecd3693761acbdc20f2fdeafb69e6819cc081308cc978153c675", size = 39076999 }, + { url = "https://files.pythonhosted.org/packages/a7/c5/02ac82f9bb8f70818099df7e86c3ad28dae64e1347b421d8e3adf26acab6/scipy-1.14.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:c0ee987efa6737242745f347835da2cc5bb9f1b42996a4d97d5c7ff7928cb6f2", size = 29894570 }, + { url = "https://files.pythonhosted.org/packages/ed/05/7f03e680cc5249c4f96c9e4e845acde08eb1aee5bc216eff8a089baa4ddb/scipy-1.14.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3a1b111fac6baec1c1d92f27e76511c9e7218f1695d61b59e05e0fe04dc59617", size = 23103567 }, + { url = "https://files.pythonhosted.org/packages/5e/fc/9f1413bef53171f379d786aabc104d4abeea48ee84c553a3e3d8c9f96a9c/scipy-1.14.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:8475230e55549ab3f207bff11ebfc91c805dc3463ef62eda3ccf593254524ce8", size = 25499102 }, + { url = "https://files.pythonhosted.org/packages/c2/4b/b44bee3c2ddc316b0159b3d87a3d467ef8d7edfd525e6f7364a62cd87d90/scipy-1.14.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:278266012eb69f4a720827bdd2dc54b2271c97d84255b2faaa8f161a158c3b37", size = 35586346 }, + { url = "https://files.pythonhosted.org/packages/93/6b/701776d4bd6bdd9b629c387b5140f006185bd8ddea16788a44434376b98f/scipy-1.14.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fef8c87f8abfb884dac04e97824b61299880c43f4ce675dd2cbeadd3c9b466d2", size = 41165244 }, + { url = "https://files.pythonhosted.org/packages/06/57/e6aa6f55729a8f245d8a6984f2855696c5992113a5dc789065020f8be753/scipy-1.14.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b05d43735bb2f07d689f56f7b474788a13ed8adc484a85aa65c0fd931cf9ccd2", size = 42817917 }, + { url = "https://files.pythonhosted.org/packages/ea/c2/5ecadc5fcccefaece775feadcd795060adf5c3b29a883bff0e678cfe89af/scipy-1.14.1-cp311-cp311-win_amd64.whl", hash = "sha256:716e389b694c4bb564b4fc0c51bc84d381735e0d39d3f26ec1af2556ec6aad94", size = 44781033 }, + { url = "https://files.pythonhosted.org/packages/c0/04/2bdacc8ac6387b15db6faa40295f8bd25eccf33f1f13e68a72dc3c60a99e/scipy-1.14.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:631f07b3734d34aced009aaf6fedfd0eb3498a97e581c3b1e5f14a04164a456d", size = 39128781 }, + { url = "https://files.pythonhosted.org/packages/c8/53/35b4d41f5fd42f5781dbd0dd6c05d35ba8aa75c84ecddc7d44756cd8da2e/scipy-1.14.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:af29a935803cc707ab2ed7791c44288a682f9c8107bc00f0eccc4f92c08d6e07", size = 29939542 }, + { url = "https://files.pythonhosted.org/packages/66/67/6ef192e0e4d77b20cc33a01e743b00bc9e68fb83b88e06e636d2619a8767/scipy-1.14.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:2843f2d527d9eebec9a43e6b406fb7266f3af25a751aa91d62ff416f54170bc5", size = 23148375 }, + { url = "https://files.pythonhosted.org/packages/f6/32/3a6dedd51d68eb7b8e7dc7947d5d841bcb699f1bf4463639554986f4d782/scipy-1.14.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:eb58ca0abd96911932f688528977858681a59d61a7ce908ffd355957f7025cfc", size = 25578573 }, + { url = "https://files.pythonhosted.org/packages/f0/5a/efa92a58dc3a2898705f1dc9dbaf390ca7d4fba26d6ab8cfffb0c72f656f/scipy-1.14.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30ac8812c1d2aab7131a79ba62933a2a76f582d5dbbc695192453dae67ad6310", size = 35319299 }, + { url = "https://files.pythonhosted.org/packages/8e/ee/8a26858ca517e9c64f84b4c7734b89bda8e63bec85c3d2f432d225bb1886/scipy-1.14.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f9ea80f2e65bdaa0b7627fb00cbeb2daf163caa015e59b7516395fe3bd1e066", size = 40849331 }, + { url = "https://files.pythonhosted.org/packages/a5/cd/06f72bc9187840f1c99e1a8750aad4216fc7dfdd7df46e6280add14b4822/scipy-1.14.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:edaf02b82cd7639db00dbff629995ef185c8df4c3ffa71a5562a595765a06ce1", size = 42544049 }, + { url = "https://files.pythonhosted.org/packages/aa/7d/43ab67228ef98c6b5dd42ab386eae2d7877036970a0d7e3dd3eb47a0d530/scipy-1.14.1-cp312-cp312-win_amd64.whl", hash = "sha256:2ff38e22128e6c03ff73b6bb0f85f897d2362f8c052e3b8ad00532198fbdae3f", size = 44521212 }, + { url = "https://files.pythonhosted.org/packages/50/ef/ac98346db016ff18a6ad7626a35808f37074d25796fd0234c2bb0ed1e054/scipy-1.14.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1729560c906963fc8389f6aac023739ff3983e727b1a4d87696b7bf108316a79", size = 39091068 }, + { url = "https://files.pythonhosted.org/packages/b9/cc/70948fe9f393b911b4251e96b55bbdeaa8cca41f37c26fd1df0232933b9e/scipy-1.14.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:4079b90df244709e675cdc8b93bfd8a395d59af40b72e339c2287c91860deb8e", size = 29875417 }, + { url = "https://files.pythonhosted.org/packages/3b/2e/35f549b7d231c1c9f9639f9ef49b815d816bf54dd050da5da1c11517a218/scipy-1.14.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:e0cf28db0f24a38b2a0ca33a85a54852586e43cf6fd876365c86e0657cfe7d73", size = 23084508 }, + { url = "https://files.pythonhosted.org/packages/3f/d6/b028e3f3e59fae61fb8c0f450db732c43dd1d836223a589a8be9f6377203/scipy-1.14.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:0c2f95de3b04e26f5f3ad5bb05e74ba7f68b837133a4492414b3afd79dfe540e", size = 25503364 }, + { url = "https://files.pythonhosted.org/packages/a7/2f/6c142b352ac15967744d62b165537a965e95d557085db4beab2a11f7943b/scipy-1.14.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b99722ea48b7ea25e8e015e8341ae74624f72e5f21fc2abd45f3a93266de4c5d", size = 35292639 }, + { url = "https://files.pythonhosted.org/packages/56/46/2449e6e51e0d7c3575f289f6acb7f828938eaab8874dbccfeb0cd2b71a27/scipy-1.14.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5149e3fd2d686e42144a093b206aef01932a0059c2a33ddfa67f5f035bdfe13e", size = 40798288 }, + { url = "https://files.pythonhosted.org/packages/32/cd/9d86f7ed7f4497c9fd3e39f8918dd93d9f647ba80d7e34e4946c0c2d1a7c/scipy-1.14.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e4f5a7c49323533f9103d4dacf4e4f07078f360743dec7f7596949149efeec06", size = 42524647 }, + { url = "https://files.pythonhosted.org/packages/f5/1b/6ee032251bf4cdb0cc50059374e86a9f076308c1512b61c4e003e241efb7/scipy-1.14.1-cp313-cp313-win_amd64.whl", hash = "sha256:baff393942b550823bfce952bb62270ee17504d02a1801d7fd0719534dfb9c84", size = 44469524 }, +] + +[[package]] +name = "setuptools" +version = "75.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/54/292f26c208734e9a7f067aea4a7e282c080750c4546559b58e2e45413ca0/setuptools-75.6.0.tar.gz", hash = "sha256:8199222558df7c86216af4f84c30e9b34a61d8ba19366cc914424cdbd28252f6", size = 1337429 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/55/21/47d163f615df1d30c094f6c8bbb353619274edccf0327b185cc2493c2c33/setuptools-75.6.0-py3-none-any.whl", hash = "sha256:ce74b49e8f7110f9bf04883b730f4765b774ef3ef28f722cce7c273d253aaf7d", size = 1224032 }, +] + +[[package]] +name = "setuptools-scm" +version = "8.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, + { name = "setuptools" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4f/a4/00a9ac1b555294710d4a68d2ce8dfdf39d72aa4d769a7395d05218d88a42/setuptools_scm-8.1.0.tar.gz", hash = "sha256:42dea1b65771cba93b7a515d65a65d8246e560768a66b9106a592c8e7f26c8a7", size = 76465 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/b9/1906bfeb30f2fc13bb39bf7ddb8749784c05faadbd18a21cf141ba37bff2/setuptools_scm-8.1.0-py3-none-any.whl", hash = "sha256:897a3226a6fd4a6eb2f068745e49733261a21f70b1bb28fce0339feb978d9af3", size = 43666 }, +] + +[[package]] +name = "shellingham" +version = "1.5.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755 }, +] + +[[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 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 }, +] + +[[package]] +name = "snowballstemmer" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/44/7b/af302bebf22c749c56c9c3e8ae13190b5b5db37a33d9068652e8f73b7089/snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1", size = 86699 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/dc/c02e01294f7265e63a7315fe086dd1df7dacb9f840a804da846b96d01b96/snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a", size = 93002 }, +] + +[[package]] +name = "sortedcontainers" +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e8/c4/ba2f8066cceb6f23394729afe52f3bf7adec04bf9ed2c820b39e19299111/sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88", size = 30594 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0", size = 29575 }, +] + +[[package]] +name = "sphinx" +version = "8.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "alabaster" }, + { name = "babel" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, + { 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/6f/6d/be0b61178fe2cdcb67e2a92fc9ebb488e3c51c4f74a36a7824c0adf23425/sphinx-8.1.3.tar.gz", hash = "sha256:43c1911eecb0d3e161ad78611bc905d1ad0e523e4ddc202a58a821773dc4c927", size = 8184611 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/60/1ddff83a56d33aaf6f10ec8ce84b4c007d9368b21008876fceda7e7381ef/sphinx-8.1.3-py3-none-any.whl", hash = "sha256:09719015511837b76bf6e03e42eb7595ac8c2e41eeb9c29c5b755c6b677992a2", size = 3487125 }, +] + +[[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 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5d/85/9ebeae2f76e9e77b952f4b274c27238156eae7979c5421fba91a28f4970d/sphinxcontrib_applehelp-2.0.0-py3-none-any.whl", hash = "sha256:4cd3f0ec4ac5dd9c17ec65e9ab272c9b867ea77425228e68ecf08d6b28ddbdb5", size = 119300 }, +] + +[[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 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl", hash = "sha256:aefb8b83854e4b0998877524d1029fd3e6879210422ee3780459e28a1f03a8a2", size = 82530 }, +] + +[[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 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0a/7b/18a8c0bcec9182c05a0b3ec2a776bba4ead82750a55ff798e8d406dae604/sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl", hash = "sha256:166759820b47002d22914d64a075ce08f4c46818e17cfc9470a9786b759b19f8", size = 98705 }, +] + +[[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 } +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 }, +] + +[[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 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl", hash = "sha256:b18a828cdba941ccd6ee8445dbe72ffa3ef8cbe7505d8cd1fa0d42d3f2d5f3eb", size = 88743 }, +] + +[[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 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl", hash = "sha256:6e2cb0eef194e10c27ec0023bfeb25badbbb5868244cf5bc5bdc04e4464bf331", size = 92072 }, +] + +[[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 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521 }, +] + +[[package]] +name = "superqt" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pygments" }, + { name = "qtpy" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4a/7b/10b854842f76b20fc8a13ea5b62f78346c84bf9664b7d54ee82e53d88b6d/superqt-0.7.0.tar.gz", hash = "sha256:fa8014a0ffead7f618a85346ac355ba5e9529b177f50caf5093edeec566c6f5d", size = 97558 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/77/47289ce2c607f72446811230ec96406ace44db7669e443793a13fd7b3486/superqt-0.7.0-py3-none-any.whl", hash = "sha256:395d3f511fe5143882eba6e9ffb8d79bd4c782b6d571c1edb4141cea977612d3", size = 91179 }, +] + +[package.optional-dependencies] +iconify = [ + { name = "pyconify" }, +] + +[[package]] +name = "tabulate" +version = "0.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/fe/802052aecb21e3797b8f7902564ab6ea0d60ff8ca23952079064155d1ae1/tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c", size = 81090 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f", size = 35252 }, +] + +[[package]] +name = "tblib" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1a/df/4f2cd7eaa6d41a7994d46527349569d46e34d9cdd07590b5c5b0dcf53de3/tblib-3.0.0.tar.gz", hash = "sha256:93622790a0a29e04f0346458face1e144dc4d32f493714c6c3dff82a4adb77e6", size = 30616 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/87/ce70db7cae60e67851eb94e1a2127d4abb573d3866d2efd302ceb0d4d2a5/tblib-3.0.0-py3-none-any.whl", hash = "sha256:80a6c77e59b55e83911e1e607c649836a69c103963c5f28a46cbeef44acf8129", size = 12478 }, +] + +[[package]] +name = "tifffile" +version = "2024.12.12" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/37/c9/fc4e490c5b0ccad68c98ea1d6e0f409bd7d50e2e8fc30a0725594d3104ff/tifffile-2024.12.12.tar.gz", hash = "sha256:c38e929bf74c04b6c8708d87f16b32c85c6d7c2514b99559ea3db8003ba4edda", size = 365416 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d8/1e/76cbc758f6865a9da18001ac70d1a4154603b71e233f704401fc7d62493e/tifffile-2024.12.12-py3-none-any.whl", hash = "sha256:6ff0f196a46a75c8c0661c70995e06ea4d08a81fe343193e69f1673f4807d508", size = 227538 }, +] + +[[package]] +name = "tomli-w" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d4/19/b65f1a088ee23e37cdea415b357843eca8b1422a7b11a9eee6e35d4ec273/tomli_w-1.1.0.tar.gz", hash = "sha256:49e847a3a304d516a169a601184932ef0f6b61623fe680f836a2aa7128ed0d33", size = 6929 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c4/ac/ce90573ba446a9bbe65838ded066a805234d159b4446ae9f8ec5bbd36cbd/tomli_w-1.1.0-py3-none-any.whl", hash = "sha256:1403179c78193e3184bfaade390ddbd071cba48a32a2e62ba11aae47490c63f7", size = 6440 }, +] + +[[package]] +name = "toolz" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8a/0b/d80dfa675bf592f636d1ea0b835eab4ec8df6e9415d8cfd766df54456123/toolz-1.0.0.tar.gz", hash = "sha256:2c86e3d9a04798ac556793bced838816296a2f085017664e4995cb40a1047a02", size = 66790 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/03/98/eb27cc78ad3af8e302c9d8ff4977f5026676e130d28dd7578132a457170c/toolz-1.0.0-py3-none-any.whl", hash = "sha256:292c8f1c4e7516bf9086f8850935c799a874039c8bcf959d47b600e4c44a6236", size = 56383 }, +] + +[[package]] +name = "tornado" +version = "6.4.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/59/45/a0daf161f7d6f36c3ea5fc0c2de619746cc3dd4c76402e9db545bd920f63/tornado-6.4.2.tar.gz", hash = "sha256:92bad5b4746e9879fd7bf1eb21dce4e3fc5128d71601f80005afa39237ad620b", size = 501135 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/7e/71f604d8cea1b58f82ba3590290b66da1e72d840aeb37e0d5f7291bd30db/tornado-6.4.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e828cce1123e9e44ae2a50a9de3055497ab1d0aeb440c5ac23064d9e44880da1", size = 436299 }, + { url = "https://files.pythonhosted.org/packages/96/44/87543a3b99016d0bf54fdaab30d24bf0af2e848f1d13d34a3a5380aabe16/tornado-6.4.2-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:072ce12ada169c5b00b7d92a99ba089447ccc993ea2143c9ede887e0937aa803", size = 434253 }, + { url = "https://files.pythonhosted.org/packages/cb/fb/fdf679b4ce51bcb7210801ef4f11fdac96e9885daa402861751353beea6e/tornado-6.4.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a017d239bd1bb0919f72af256a970624241f070496635784d9bf0db640d3fec", size = 437602 }, + { url = "https://files.pythonhosted.org/packages/4f/3b/e31aeffffc22b475a64dbeb273026a21b5b566f74dee48742817626c47dc/tornado-6.4.2-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c36e62ce8f63409301537222faffcef7dfc5284f27eec227389f2ad11b09d946", size = 436972 }, + { url = "https://files.pythonhosted.org/packages/22/55/b78a464de78051a30599ceb6983b01d8f732e6f69bf37b4ed07f642ac0fc/tornado-6.4.2-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bca9eb02196e789c9cb5c3c7c0f04fb447dc2adffd95265b2c7223a8a615ccbf", size = 437173 }, + { url = "https://files.pythonhosted.org/packages/79/5e/be4fb0d1684eb822c9a62fb18a3e44a06188f78aa466b2ad991d2ee31104/tornado-6.4.2-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:304463bd0772442ff4d0f5149c6f1c2135a1fae045adf070821c6cdc76980634", size = 437892 }, + { url = "https://files.pythonhosted.org/packages/f5/33/4f91fdd94ea36e1d796147003b490fe60a0215ac5737b6f9c65e160d4fe0/tornado-6.4.2-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:c82c46813ba483a385ab2a99caeaedf92585a1f90defb5693351fa7e4ea0bf73", size = 437334 }, + { url = "https://files.pythonhosted.org/packages/2b/ae/c1b22d4524b0e10da2f29a176fb2890386f7bd1f63aacf186444873a88a0/tornado-6.4.2-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:932d195ca9015956fa502c6b56af9eb06106140d844a335590c1ec7f5277d10c", size = 437261 }, + { url = "https://files.pythonhosted.org/packages/b5/25/36dbd49ab6d179bcfc4c6c093a51795a4f3bed380543a8242ac3517a1751/tornado-6.4.2-cp38-abi3-win32.whl", hash = "sha256:2876cef82e6c5978fde1e0d5b1f919d756968d5b4282418f3146b79b58556482", size = 438463 }, + { url = "https://files.pythonhosted.org/packages/61/cc/58b1adeb1bb46228442081e746fcdbc4540905c87e8add7c277540934edb/tornado-6.4.2-cp38-abi3-win_amd64.whl", hash = "sha256:908b71bf3ff37d81073356a5fadcc660eb10c1476ee6e2725588626ce7e5ca38", size = 438907 }, +] + +[[package]] +name = "tqdm" +version = "4.67.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540 }, +] + +[[package]] +name = "traitlets" +version = "5.14.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", size = 161621 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359 }, +] + +[[package]] +name = "triangle" +version = "20230923" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/0a/9dc924a6d57abca8ed898b1e5973cfe3a8c704f381aeb990ce4ada4727f5/triangle-20230923-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:58c3f1e4c4ed3105dd33f885313200514669cc36b43a9a36101d0c286d2433fc", size = 1456934 }, + { url = "https://files.pythonhosted.org/packages/e5/48/f10364cba86eb035ac4d191b5457d0b7597fcc3a3c51b7ee45085b0c9a41/triangle-20230923-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4baec5494bcba194b8c1d435382254bf394dc01f591bed452a8b8bd086b74845", size = 2101649 }, + { url = "https://files.pythonhosted.org/packages/cd/96/63136f42e24775bb343bbffc9e8ef70871645e0f49e20a75e98897900638/triangle-20230923-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4aae0afb29d286456d9c494f7d7c668994b59ac15026eeeb07ec7e2fbb348ac3", size = 2027557 }, + { url = "https://files.pythonhosted.org/packages/07/f6/5225e7cb9f583a881f5ea784d5fe841781abc2ac669a0b7d86473c757d46/triangle-20230923-cp311-cp311-win32.whl", hash = "sha256:aa5018fd5b87d0b798a933d54466bfebc5bb23efa59a59398b198ed19d22cc94", size = 1405960 }, + { url = "https://files.pythonhosted.org/packages/f5/98/ae7f9c0d5baac58f114182e5cbb3d491318a80166e6e7149c69b4f135077/triangle-20230923-cp311-cp311-win_amd64.whl", hash = "sha256:f6a5270fb5ff4a48abe6a752420e438b05d087bda98ca807498f4ab720aee096", size = 1425525 }, + { url = "https://files.pythonhosted.org/packages/35/00/ac56b3d4282a600ca8d990413066cf796165a06e137683e2ae02b6a27812/triangle-20230923-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:19dca27055bd9097d2704fce6874ddadd786453e7fb58fa52a7fad9b2c0ccf78", size = 1458813 }, + { url = "https://files.pythonhosted.org/packages/62/26/8a0a241381d45502709c407de8171ce975c7905203fc3185d80aaa3bbd75/triangle-20230923-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17a61ccd56620ed88c651e73b694c174a8532072618229df6366726c877bb2f0", size = 2094138 }, + { url = "https://files.pythonhosted.org/packages/68/d2/68b91fef7df6a3b0844523f165cc09c2f7c480c43f286475db5594e57ea3/triangle-20230923-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6b3f149a8535ee1c4ca502150214c9d215690f8f3003d5b0cb971cf04497c96d", size = 2011550 }, + { url = "https://files.pythonhosted.org/packages/85/30/94cf47b79e6c1818522a3d7bd04498a0b3a5636bfe1d0a0444a5235dd7ec/triangle-20230923-cp312-cp312-win32.whl", hash = "sha256:356dc18d627baa67536bb47c164e30eb5755d7ec2a99a7c87ed997dbd60c96c0", size = 1406852 }, + { url = "https://files.pythonhosted.org/packages/57/b5/a856cdbc0751d1ce499abedd8fc796623788ae200d612ad49c7a963ad24b/triangle-20230923-cp312-cp312-win_amd64.whl", hash = "sha256:f083b4c2a1a11cf89835910a5c93b2c50f94b8ca68af425e9372215ec8e22252", size = 1426466 }, +] + +[[package]] +name = "typer" +version = "0.15.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "rich" }, + { name = "shellingham" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cb/ce/dca7b219718afd37a0068f4f2530a727c2b74a8b6e8e0c0080a4c0de4fcd/typer-0.15.1.tar.gz", hash = "sha256:a0588c0a7fa68a1978a069818657778f86abe6ff5ea6abf472f940a08bfe4f0a", size = 99789 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d0/cc/0a838ba5ca64dc832aa43f727bd586309846b0ffb2ce52422543e6075e8a/typer-0.15.1-py3-none-any.whl", hash = "sha256:7994fb7b8155b64d3402518560648446072864beefd44aa2dc36972a5972e847", size = 44908 }, +] + +[[package]] +name = "typing-extensions" +version = "4.12.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8", size = 85321 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438 }, +] + +[[package]] +name = "tzdata" +version = "2024.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e1/34/943888654477a574a86a98e9896bae89c7aa15078ec29f490fef2f1e5384/tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc", size = 193282 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a6/ab/7e5f53c3b9d14972843a647d8d7a853969a58aecc7559cb3267302c94774/tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd", size = 346586 }, +] + +[[package]] +name = "urllib3" +version = "2.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ed/63/22ba4ebfe7430b76388e7cd448d5478814d3032121827c12a2cc287e2260/urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9", size = 300677 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/d9/5f4c13cecde62396b0d3fe530a50ccea91e7dfc1ccf0e09c228841bb5ba8/urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", size = 126338 }, +] + +[[package]] +name = "virtualenv" +version = "20.28.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "distlib" }, + { name = "filelock" }, + { name = "platformdirs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bf/75/53316a5a8050069228a2f6d11f32046cfa94fbb6cc3f08703f59b873de2e/virtualenv-20.28.0.tar.gz", hash = "sha256:2c9c3262bb8e7b87ea801d715fae4495e6032450c71d2309be9550e7364049aa", size = 7650368 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/f9/0919cf6f1432a8c4baa62511f8f8da8225432d22e83e3476f5be1a1edc6e/virtualenv-20.28.0-py3-none-any.whl", hash = "sha256:23eae1b4516ecd610481eda647f3a7c09aea295055337331bb4e6892ecce47b0", size = 4276702 }, +] + +[[package]] +name = "vispy" +version = "0.14.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "freetype-py" }, + { name = "hsluv" }, + { name = "kiwisolver" }, + { name = "numpy" }, + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/24/96/a0bf368c0a8f5c9b599f3f9f4643b425298dfde8a744c9b0b02af9ce8595/vispy-0.14.3.tar.gz", hash = "sha256:efbbb847a908baf7e7169ab9bf296138a39364f367e6cb0a8ec03ad71699d31d", size = 2508703 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/1d/ae51e2114e678418ecc00ea20762d556c0d4913271bfe227b22ef7997c1f/vispy-0.14.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fe3ae49fbc6fd7f53fa34a5bbe693eb7fb6b69316fb7fe60c5e2d352afafe278", size = 1477623 }, + { url = "https://files.pythonhosted.org/packages/d8/7d/e2b6f574f4bac658255961f98d98776efad656d10391bf00982e7afc1485/vispy-0.14.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f474f415d280e5ed71f5a513c4d42d59049710b11f144fa85c312fd639c08a9b", size = 1471353 }, + { url = "https://files.pythonhosted.org/packages/94/96/f2096351d4519b57a617857144c0ad238595f57ab8604fa6c304992db12c/vispy-0.14.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:af4863e7ba8ec4985ab8772d86b11dc71b3ab20f29c7e044fb35a1a009da5f98", size = 1873818 }, + { url = "https://files.pythonhosted.org/packages/f7/44/08653f4a54eba576cd2df95a1779a5bad7e3a4a9a6bfcaf575422beb9edf/vispy-0.14.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66bcb62a004bb97544fd14b9035c8194d8074a8dbc3eea6a6f9a3a9f5fc1ff08", size = 1877699 }, + { url = "https://files.pythonhosted.org/packages/1a/5d/3a522ad57f6aeaff91bc7653854c27207fab9094d3ca2615db539a946227/vispy-0.14.3-cp311-cp311-win_amd64.whl", hash = "sha256:12d8e23ffb865e6d491d71cbf0dc54f53ca41b9167f5de99cdb08921a111f585", size = 1468954 }, + { url = "https://files.pythonhosted.org/packages/ae/8b/991197f3e975de9c7eb03bdd880bd00980ccb0d7be862518514905819c7f/vispy-0.14.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f624b58c9a62e68aeb279678f9ae042cf875c24f650b042e2a7005fde9f2f3e2", size = 1478725 }, + { url = "https://files.pythonhosted.org/packages/3e/fe/ae8018ab01cdea43f3cd2e072df28d257edd8274f1fcde04174ff263bf4a/vispy-0.14.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:31b1fdd1e1924ca04fce250fb958412fbcefe4f1e4e6fffa12eb4040c00b0963", size = 1472297 }, + { url = "https://files.pythonhosted.org/packages/2c/ff/1cca6b74ec64789bd2b696cabd00276d1e82529d47a4e7db69147208abba/vispy-0.14.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca7aebb4280e3754ae60c673dafb2f5acc26d6182761215281b07e696962e013", size = 1859501 }, + { url = "https://files.pythonhosted.org/packages/5e/08/87a7e2640e5dd444804c69505eef8ae14d50d782c2b2d3b21679cf6a70be/vispy-0.14.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a90896898b10b31760634a955031dc048fda41fd6e21ee4ff3e12ebf16970b09", size = 1866372 }, + { url = "https://files.pythonhosted.org/packages/75/72/e02fb3b3e3ad4458bdc9830e97a980919921752bca1f40d816c1e25d566f/vispy-0.14.3-cp312-cp312-win_amd64.whl", hash = "sha256:2b39304dae410fde21723cdcf50cae71ba611479f01cb8e30116493ce318fcab", size = 1469553 }, +] + +[[package]] +name = "wcwidth" +version = "0.2.13" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/63/53559446a878410fc5a5974feb13d31d78d752eb18aeba59c7fef1af7598/wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5", size = 101301 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166 }, +] + +[[package]] +name = "wrapt" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/24/a1/fc03dca9b0432725c2e8cdbf91a349d2194cf03d8523c124faebe581de09/wrapt-1.17.0.tar.gz", hash = "sha256:16187aa2317c731170a88ef35e8937ae0f533c402872c1ee5e6d079fcf320801", size = 55542 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0e/40/def56538acddc2f764c157d565b9f989072a1d2f2a8e384324e2e104fc7d/wrapt-1.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:74bf625b1b4caaa7bad51d9003f8b07a468a704e0644a700e936c357c17dd45a", size = 38766 }, + { url = "https://files.pythonhosted.org/packages/89/e2/8c299f384ae4364193724e2adad99f9504599d02a73ec9199bf3f406549d/wrapt-1.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f2a28eb35cf99d5f5bd12f5dd44a0f41d206db226535b37b0c60e9da162c3ed", size = 83730 }, + { url = "https://files.pythonhosted.org/packages/29/ef/fcdb776b12df5ea7180d065b28fa6bb27ac785dddcd7202a0b6962bbdb47/wrapt-1.17.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:81b1289e99cf4bad07c23393ab447e5e96db0ab50974a280f7954b071d41b489", size = 75470 }, + { url = "https://files.pythonhosted.org/packages/55/b5/698bd0bf9fbb3ddb3a2feefbb7ad0dea1205f5d7d05b9cbab54f5db731aa/wrapt-1.17.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f2939cd4a2a52ca32bc0b359015718472d7f6de870760342e7ba295be9ebaf9", size = 83168 }, + { url = "https://files.pythonhosted.org/packages/ce/07/701a5cee28cb4d5df030d4b2649319e36f3d9fdd8000ef1d84eb06b9860d/wrapt-1.17.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6a9653131bda68a1f029c52157fd81e11f07d485df55410401f745007bd6d339", size = 82307 }, + { url = "https://files.pythonhosted.org/packages/42/92/c48ba92cda6f74cb914dc3c5bba9650dc80b790e121c4b987f3a46b028f5/wrapt-1.17.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4e4b4385363de9052dac1a67bfb535c376f3d19c238b5f36bddc95efae15e12d", size = 75101 }, + { url = "https://files.pythonhosted.org/packages/8a/0a/9276d3269334138b88a2947efaaf6335f61d547698e50dff672ade24f2c6/wrapt-1.17.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bdf62d25234290db1837875d4dceb2151e4ea7f9fff2ed41c0fde23ed542eb5b", size = 81835 }, + { url = "https://files.pythonhosted.org/packages/b9/4c/39595e692753ef656ea94b51382cc9aea662fef59d7910128f5906486f0e/wrapt-1.17.0-cp311-cp311-win32.whl", hash = "sha256:5d8fd17635b262448ab8f99230fe4dac991af1dabdbb92f7a70a6afac8a7e346", size = 36412 }, + { url = "https://files.pythonhosted.org/packages/63/bb/c293a67fb765a2ada48f48cd0f2bb957da8161439da4c03ea123b9894c02/wrapt-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:92a3d214d5e53cb1db8b015f30d544bc9d3f7179a05feb8f16df713cecc2620a", size = 38744 }, + { url = "https://files.pythonhosted.org/packages/85/82/518605474beafff11f1a34759f6410ab429abff9f7881858a447e0d20712/wrapt-1.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:89fc28495896097622c3fc238915c79365dd0ede02f9a82ce436b13bd0ab7569", size = 38904 }, + { url = "https://files.pythonhosted.org/packages/80/6c/17c3b2fed28edfd96d8417c865ef0b4c955dc52c4e375d86f459f14340f1/wrapt-1.17.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:875d240fdbdbe9e11f9831901fb8719da0bd4e6131f83aa9f69b96d18fae7504", size = 88622 }, + { url = "https://files.pythonhosted.org/packages/4a/11/60ecdf3b0fd3dca18978d89acb5d095a05f23299216e925fcd2717c81d93/wrapt-1.17.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5ed16d95fd142e9c72b6c10b06514ad30e846a0d0917ab406186541fe68b451", size = 80920 }, + { url = "https://files.pythonhosted.org/packages/d2/50/dbef1a651578a3520d4534c1e434989e3620380c1ad97e309576b47f0ada/wrapt-1.17.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18b956061b8db634120b58f668592a772e87e2e78bc1f6a906cfcaa0cc7991c1", size = 89170 }, + { url = "https://files.pythonhosted.org/packages/44/a2/78c5956bf39955288c9e0dd62e807b308c3aa15a0f611fbff52aa8d6b5ea/wrapt-1.17.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:daba396199399ccabafbfc509037ac635a6bc18510ad1add8fd16d4739cdd106", size = 86748 }, + { url = "https://files.pythonhosted.org/packages/99/49/2ee413c78fc0bdfebe5bee590bf3becdc1fab0096a7a9c3b5c9666b2415f/wrapt-1.17.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4d63f4d446e10ad19ed01188d6c1e1bb134cde8c18b0aa2acfd973d41fcc5ada", size = 79734 }, + { url = "https://files.pythonhosted.org/packages/c0/8c/4221b7b270e36be90f0930fe15a4755a6ea24093f90b510166e9ed7861ea/wrapt-1.17.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8a5e7cc39a45fc430af1aefc4d77ee6bad72c5bcdb1322cfde852c15192b8bd4", size = 87552 }, + { url = "https://files.pythonhosted.org/packages/4c/6b/1aaccf3efe58eb95e10ce8e77c8909b7a6b0da93449a92c4e6d6d10b3a3d/wrapt-1.17.0-cp312-cp312-win32.whl", hash = "sha256:0a0a1a1ec28b641f2a3a2c35cbe86c00051c04fffcfcc577ffcdd707df3f8635", size = 36647 }, + { url = "https://files.pythonhosted.org/packages/b3/4f/243f88ac49df005b9129194c6511b3642818b3e6271ddea47a15e2ee4934/wrapt-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:3c34f6896a01b84bab196f7119770fd8466c8ae3dfa73c59c0bb281e7b588ce7", size = 38830 }, + { url = "https://files.pythonhosted.org/packages/67/9c/38294e1bb92b055222d1b8b6591604ca4468b77b1250f59c15256437644f/wrapt-1.17.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:714c12485aa52efbc0fc0ade1e9ab3a70343db82627f90f2ecbc898fdf0bb181", size = 38904 }, + { url = "https://files.pythonhosted.org/packages/78/b6/76597fb362cbf8913a481d41b14b049a8813cd402a5d2f84e57957c813ae/wrapt-1.17.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da427d311782324a376cacb47c1a4adc43f99fd9d996ffc1b3e8529c4074d393", size = 88608 }, + { url = "https://files.pythonhosted.org/packages/bc/69/b500884e45b3881926b5f69188dc542fb5880019d15c8a0df1ab1dfda1f7/wrapt-1.17.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba1739fb38441a27a676f4de4123d3e858e494fac05868b7a281c0a383c098f4", size = 80879 }, + { url = "https://files.pythonhosted.org/packages/52/31/f4cc58afe29eab8a50ac5969963010c8b60987e719c478a5024bce39bc42/wrapt-1.17.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e711fc1acc7468463bc084d1b68561e40d1eaa135d8c509a65dd534403d83d7b", size = 89119 }, + { url = "https://files.pythonhosted.org/packages/aa/9c/05ab6bf75dbae7a9d34975fb6ee577e086c1c26cde3b6cf6051726d33c7c/wrapt-1.17.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:140ea00c87fafc42739bd74a94a5a9003f8e72c27c47cd4f61d8e05e6dec8721", size = 86778 }, + { url = "https://files.pythonhosted.org/packages/0e/6c/4b8d42e3db355603d35fe5c9db79c28f2472a6fd1ccf4dc25ae46739672a/wrapt-1.17.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:73a96fd11d2b2e77d623a7f26e004cc31f131a365add1ce1ce9a19e55a1eef90", size = 79793 }, + { url = "https://files.pythonhosted.org/packages/69/23/90e3a2ee210c0843b2c2a49b3b97ffcf9cad1387cb18cbeef9218631ed5a/wrapt-1.17.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0b48554952f0f387984da81ccfa73b62e52817a4386d070c75e4db7d43a28c4a", size = 87606 }, + { url = "https://files.pythonhosted.org/packages/5f/06/3683126491ca787d8d71d8d340e775d40767c5efedb35039d987203393b7/wrapt-1.17.0-cp313-cp313-win32.whl", hash = "sha256:498fec8da10e3e62edd1e7368f4b24aa362ac0ad931e678332d1b209aec93045", size = 36651 }, + { url = "https://files.pythonhosted.org/packages/f1/bc/3bf6d2ca0d2c030d324ef9272bea0a8fdaff68f3d1fa7be7a61da88e51f7/wrapt-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:fd136bb85f4568fffca995bd3c8d52080b1e5b225dbf1c2b17b66b4c5fa02838", size = 38835 }, + { url = "https://files.pythonhosted.org/packages/ce/b5/251165c232d87197a81cd362eeb5104d661a2dd3aa1f0b33e4bf61dda8b8/wrapt-1.17.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:17fcf043d0b4724858f25b8826c36e08f9fb2e475410bece0ec44a22d533da9b", size = 40146 }, + { url = "https://files.pythonhosted.org/packages/89/33/1e1bdd3e866eeb73d8c4755db1ceb8a80d5bd51ee4648b3f2247adec4e67/wrapt-1.17.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4a557d97f12813dc5e18dad9fa765ae44ddd56a672bb5de4825527c847d6379", size = 113444 }, + { url = "https://files.pythonhosted.org/packages/9f/7c/94f53b065a43f5dc1fbdd8b80fd8f41284315b543805c956619c0b8d92f0/wrapt-1.17.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0229b247b0fc7dee0d36176cbb79dbaf2a9eb7ecc50ec3121f40ef443155fb1d", size = 101246 }, + { url = "https://files.pythonhosted.org/packages/62/5d/640360baac6ea6018ed5e34e6e80e33cfbae2aefde24f117587cd5efd4b7/wrapt-1.17.0-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8425cfce27b8b20c9b89d77fb50e368d8306a90bf2b6eef2cdf5cd5083adf83f", size = 109320 }, + { url = "https://files.pythonhosted.org/packages/e3/cf/6c7a00ae86a2e9482c91170aefe93f4ccda06c1ac86c4de637c69133da59/wrapt-1.17.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9c900108df470060174108012de06d45f514aa4ec21a191e7ab42988ff42a86c", size = 110193 }, + { url = "https://files.pythonhosted.org/packages/cd/cc/aa718df0d20287e8f953ce0e2f70c0af0fba1d3c367db7ee8bdc46ea7003/wrapt-1.17.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:4e547b447073fc0dbfcbff15154c1be8823d10dab4ad401bdb1575e3fdedff1b", size = 100460 }, + { url = "https://files.pythonhosted.org/packages/f7/16/9f3ac99fe1f6caaa789d67b4e3c562898b532c250769f5255fa8b8b93983/wrapt-1.17.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:914f66f3b6fc7b915d46c1cc424bc2441841083de01b90f9e81109c9759e43ab", size = 106347 }, + { url = "https://files.pythonhosted.org/packages/64/85/c77a331b2c06af49a687f8b926fc2d111047a51e6f0b0a4baa01ff3a673a/wrapt-1.17.0-cp313-cp313t-win32.whl", hash = "sha256:a4192b45dff127c7d69b3bdfb4d3e47b64179a0b9900b6351859f3001397dabf", size = 37971 }, + { url = "https://files.pythonhosted.org/packages/05/9b/b2469f8be9efed24283fd7b9eeb8e913e9bc0715cf919ea8645e428ab7af/wrapt-1.17.0-cp313-cp313t-win_amd64.whl", hash = "sha256:4f643df3d4419ea3f856c5c3f40fec1d65ea2e89ec812c83f7767c8730f9827a", size = 40755 }, + { url = "https://files.pythonhosted.org/packages/4b/d9/a8ba5e9507a9af1917285d118388c5eb7a81834873f45df213a6fe923774/wrapt-1.17.0-py3-none-any.whl", hash = "sha256:d2c63b93548eda58abf5188e505ffed0229bf675f7c3090f8e36ad55b8cbc371", size = 23592 }, +] + +[[package]] +name = "xmltodict" +version = "0.14.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/50/05/51dcca9a9bf5e1bce52582683ce50980bcadbc4fa5143b9f2b19ab99958f/xmltodict-0.14.2.tar.gz", hash = "sha256:201e7c28bb210e374999d1dde6382923ab0ed1a8a5faeece48ab525b7810a553", size = 51942 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d6/45/fc303eb433e8a2a271739c98e953728422fa61a3c1f36077a49e395c972e/xmltodict-0.14.2-py2.py3-none-any.whl", hash = "sha256:20cc7d723ed729276e808f26fb6b3599f786cbc37e06c65e192ba77c40f20aac", size = 9981 }, +] + +[[package]] +name = "yarl" +version = "1.18.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "idna" }, + { name = "multidict" }, + { name = "propcache" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b7/9d/4b94a8e6d2b51b599516a5cb88e5bc99b4d8d4583e468057eaa29d5f0918/yarl-1.18.3.tar.gz", hash = "sha256:ac1801c45cbf77b6c99242eeff4fffb5e4e73a800b5c4ad4fc0be5def634d2e1", size = 181062 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/93/282b5f4898d8e8efaf0790ba6d10e2245d2c9f30e199d1a85cae9356098c/yarl-1.18.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8503ad47387b8ebd39cbbbdf0bf113e17330ffd339ba1144074da24c545f0069", size = 141555 }, + { url = "https://files.pythonhosted.org/packages/6d/9c/0a49af78df099c283ca3444560f10718fadb8a18dc8b3edf8c7bd9fd7d89/yarl-1.18.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:02ddb6756f8f4517a2d5e99d8b2f272488e18dd0bfbc802f31c16c6c20f22193", size = 94351 }, + { url = "https://files.pythonhosted.org/packages/5a/a1/205ab51e148fdcedad189ca8dd587794c6f119882437d04c33c01a75dece/yarl-1.18.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:67a283dd2882ac98cc6318384f565bffc751ab564605959df4752d42483ad889", size = 92286 }, + { url = "https://files.pythonhosted.org/packages/ed/fe/88b690b30f3f59275fb674f5f93ddd4a3ae796c2b62e5bb9ece8a4914b83/yarl-1.18.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d980e0325b6eddc81331d3f4551e2a333999fb176fd153e075c6d1c2530aa8a8", size = 340649 }, + { url = "https://files.pythonhosted.org/packages/07/eb/3b65499b568e01f36e847cebdc8d7ccb51fff716dbda1ae83c3cbb8ca1c9/yarl-1.18.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b643562c12680b01e17239be267bc306bbc6aac1f34f6444d1bded0c5ce438ca", size = 356623 }, + { url = "https://files.pythonhosted.org/packages/33/46/f559dc184280b745fc76ec6b1954de2c55595f0ec0a7614238b9ebf69618/yarl-1.18.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c017a3b6df3a1bd45b9fa49a0f54005e53fbcad16633870104b66fa1a30a29d8", size = 354007 }, + { url = "https://files.pythonhosted.org/packages/af/ba/1865d85212351ad160f19fb99808acf23aab9a0f8ff31c8c9f1b4d671fc9/yarl-1.18.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75674776d96d7b851b6498f17824ba17849d790a44d282929c42dbb77d4f17ae", size = 344145 }, + { url = "https://files.pythonhosted.org/packages/94/cb/5c3e975d77755d7b3d5193e92056b19d83752ea2da7ab394e22260a7b824/yarl-1.18.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ccaa3a4b521b780a7e771cc336a2dba389a0861592bbce09a476190bb0c8b4b3", size = 336133 }, + { url = "https://files.pythonhosted.org/packages/19/89/b77d3fd249ab52a5c40859815765d35c91425b6bb82e7427ab2f78f5ff55/yarl-1.18.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2d06d3005e668744e11ed80812e61efd77d70bb7f03e33c1598c301eea20efbb", size = 347967 }, + { url = "https://files.pythonhosted.org/packages/35/bd/f6b7630ba2cc06c319c3235634c582a6ab014d52311e7d7c22f9518189b5/yarl-1.18.3-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:9d41beda9dc97ca9ab0b9888cb71f7539124bc05df02c0cff6e5acc5a19dcc6e", size = 346397 }, + { url = "https://files.pythonhosted.org/packages/18/1a/0b4e367d5a72d1f095318344848e93ea70da728118221f84f1bf6c1e39e7/yarl-1.18.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ba23302c0c61a9999784e73809427c9dbedd79f66a13d84ad1b1943802eaaf59", size = 350206 }, + { url = "https://files.pythonhosted.org/packages/b5/cf/320fff4367341fb77809a2d8d7fe75b5d323a8e1b35710aafe41fdbf327b/yarl-1.18.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:6748dbf9bfa5ba1afcc7556b71cda0d7ce5f24768043a02a58846e4a443d808d", size = 362089 }, + { url = "https://files.pythonhosted.org/packages/57/cf/aadba261d8b920253204085268bad5e8cdd86b50162fcb1b10c10834885a/yarl-1.18.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0b0cad37311123211dc91eadcb322ef4d4a66008d3e1bdc404808992260e1a0e", size = 366267 }, + { url = "https://files.pythonhosted.org/packages/54/58/fb4cadd81acdee6dafe14abeb258f876e4dd410518099ae9a35c88d8097c/yarl-1.18.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0fb2171a4486bb075316ee754c6d8382ea6eb8b399d4ec62fde2b591f879778a", size = 359141 }, + { url = "https://files.pythonhosted.org/packages/9a/7a/4c571597589da4cd5c14ed2a0b17ac56ec9ee7ee615013f74653169e702d/yarl-1.18.3-cp311-cp311-win32.whl", hash = "sha256:61b1a825a13bef4a5f10b1885245377d3cd0bf87cba068e1d9a88c2ae36880e1", size = 84402 }, + { url = "https://files.pythonhosted.org/packages/ae/7b/8600250b3d89b625f1121d897062f629883c2f45339623b69b1747ec65fa/yarl-1.18.3-cp311-cp311-win_amd64.whl", hash = "sha256:b9d60031cf568c627d028239693fd718025719c02c9f55df0a53e587aab951b5", size = 91030 }, + { url = "https://files.pythonhosted.org/packages/33/85/bd2e2729752ff4c77338e0102914897512e92496375e079ce0150a6dc306/yarl-1.18.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:1dd4bdd05407ced96fed3d7f25dbbf88d2ffb045a0db60dbc247f5b3c5c25d50", size = 142644 }, + { url = "https://files.pythonhosted.org/packages/ff/74/1178322cc0f10288d7eefa6e4a85d8d2e28187ccab13d5b844e8b5d7c88d/yarl-1.18.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7c33dd1931a95e5d9a772d0ac5e44cac8957eaf58e3c8da8c1414de7dd27c576", size = 94962 }, + { url = "https://files.pythonhosted.org/packages/be/75/79c6acc0261e2c2ae8a1c41cf12265e91628c8c58ae91f5ff59e29c0787f/yarl-1.18.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:25b411eddcfd56a2f0cd6a384e9f4f7aa3efee14b188de13048c25b5e91f1640", size = 92795 }, + { url = "https://files.pythonhosted.org/packages/6b/32/927b2d67a412c31199e83fefdce6e645247b4fb164aa1ecb35a0f9eb2058/yarl-1.18.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:436c4fc0a4d66b2badc6c5fc5ef4e47bb10e4fd9bf0c79524ac719a01f3607c2", size = 332368 }, + { url = "https://files.pythonhosted.org/packages/19/e5/859fca07169d6eceeaa4fde1997c91d8abde4e9a7c018e371640c2da2b71/yarl-1.18.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e35ef8683211db69ffe129a25d5634319a677570ab6b2eba4afa860f54eeaf75", size = 342314 }, + { url = "https://files.pythonhosted.org/packages/08/75/76b63ccd91c9e03ab213ef27ae6add2e3400e77e5cdddf8ed2dbc36e3f21/yarl-1.18.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:84b2deecba4a3f1a398df819151eb72d29bfeb3b69abb145a00ddc8d30094512", size = 341987 }, + { url = "https://files.pythonhosted.org/packages/1a/e1/a097d5755d3ea8479a42856f51d97eeff7a3a7160593332d98f2709b3580/yarl-1.18.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00e5a1fea0fd4f5bfa7440a47eff01d9822a65b4488f7cff83155a0f31a2ecba", size = 336914 }, + { url = "https://files.pythonhosted.org/packages/0b/42/e1b4d0e396b7987feceebe565286c27bc085bf07d61a59508cdaf2d45e63/yarl-1.18.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d0e883008013c0e4aef84dcfe2a0b172c4d23c2669412cf5b3371003941f72bb", size = 325765 }, + { url = "https://files.pythonhosted.org/packages/7e/18/03a5834ccc9177f97ca1bbb245b93c13e58e8225276f01eedc4cc98ab820/yarl-1.18.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5a3f356548e34a70b0172d8890006c37be92995f62d95a07b4a42e90fba54272", size = 344444 }, + { url = "https://files.pythonhosted.org/packages/c8/03/a713633bdde0640b0472aa197b5b86e90fbc4c5bc05b727b714cd8a40e6d/yarl-1.18.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:ccd17349166b1bee6e529b4add61727d3f55edb7babbe4069b5764c9587a8cc6", size = 340760 }, + { url = "https://files.pythonhosted.org/packages/eb/99/f6567e3f3bbad8fd101886ea0276c68ecb86a2b58be0f64077396cd4b95e/yarl-1.18.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b958ddd075ddba5b09bb0be8a6d9906d2ce933aee81100db289badbeb966f54e", size = 346484 }, + { url = "https://files.pythonhosted.org/packages/8e/a9/84717c896b2fc6cb15bd4eecd64e34a2f0a9fd6669e69170c73a8b46795a/yarl-1.18.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c7d79f7d9aabd6011004e33b22bc13056a3e3fb54794d138af57f5ee9d9032cb", size = 359864 }, + { url = "https://files.pythonhosted.org/packages/1e/2e/d0f5f1bef7ee93ed17e739ec8dbcb47794af891f7d165fa6014517b48169/yarl-1.18.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:4891ed92157e5430874dad17b15eb1fda57627710756c27422200c52d8a4e393", size = 364537 }, + { url = "https://files.pythonhosted.org/packages/97/8a/568d07c5d4964da5b02621a517532adb8ec5ba181ad1687191fffeda0ab6/yarl-1.18.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ce1af883b94304f493698b00d0f006d56aea98aeb49d75ec7d98cd4a777e9285", size = 357861 }, + { url = "https://files.pythonhosted.org/packages/7d/e3/924c3f64b6b3077889df9a1ece1ed8947e7b61b0a933f2ec93041990a677/yarl-1.18.3-cp312-cp312-win32.whl", hash = "sha256:f91c4803173928a25e1a55b943c81f55b8872f0018be83e3ad4938adffb77dd2", size = 84097 }, + { url = "https://files.pythonhosted.org/packages/34/45/0e055320daaabfc169b21ff6174567b2c910c45617b0d79c68d7ab349b02/yarl-1.18.3-cp312-cp312-win_amd64.whl", hash = "sha256:7e2ee16578af3b52ac2f334c3b1f92262f47e02cc6193c598502bd46f5cd1477", size = 90399 }, + { url = "https://files.pythonhosted.org/packages/30/c7/c790513d5328a8390be8f47be5d52e141f78b66c6c48f48d241ca6bd5265/yarl-1.18.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:90adb47ad432332d4f0bc28f83a5963f426ce9a1a8809f5e584e704b82685dcb", size = 140789 }, + { url = "https://files.pythonhosted.org/packages/30/aa/a2f84e93554a578463e2edaaf2300faa61c8701f0898725842c704ba5444/yarl-1.18.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:913829534200eb0f789d45349e55203a091f45c37a2674678744ae52fae23efa", size = 94144 }, + { url = "https://files.pythonhosted.org/packages/c6/fc/d68d8f83714b221a85ce7866832cba36d7c04a68fa6a960b908c2c84f325/yarl-1.18.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ef9f7768395923c3039055c14334ba4d926f3baf7b776c923c93d80195624782", size = 91974 }, + { url = "https://files.pythonhosted.org/packages/56/4e/d2563d8323a7e9a414b5b25341b3942af5902a2263d36d20fb17c40411e2/yarl-1.18.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88a19f62ff30117e706ebc9090b8ecc79aeb77d0b1f5ec10d2d27a12bc9f66d0", size = 333587 }, + { url = "https://files.pythonhosted.org/packages/25/c9/cfec0bc0cac8d054be223e9f2c7909d3e8442a856af9dbce7e3442a8ec8d/yarl-1.18.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e17c9361d46a4d5addf777c6dd5eab0715a7684c2f11b88c67ac37edfba6c482", size = 344386 }, + { url = "https://files.pythonhosted.org/packages/ab/5d/4c532190113b25f1364d25f4c319322e86232d69175b91f27e3ebc2caf9a/yarl-1.18.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a74a13a4c857a84a845505fd2d68e54826a2cd01935a96efb1e9d86c728e186", size = 345421 }, + { url = "https://files.pythonhosted.org/packages/23/d1/6cdd1632da013aa6ba18cee4d750d953104a5e7aac44e249d9410a972bf5/yarl-1.18.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41f7ce59d6ee7741af71d82020346af364949314ed3d87553763a2df1829cc58", size = 339384 }, + { url = "https://files.pythonhosted.org/packages/9a/c4/6b3c39bec352e441bd30f432cda6ba51681ab19bb8abe023f0d19777aad1/yarl-1.18.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f52a265001d830bc425f82ca9eabda94a64a4d753b07d623a9f2863fde532b53", size = 326689 }, + { url = "https://files.pythonhosted.org/packages/23/30/07fb088f2eefdc0aa4fc1af4e3ca4eb1a3aadd1ce7d866d74c0f124e6a85/yarl-1.18.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:82123d0c954dc58db301f5021a01854a85bf1f3bb7d12ae0c01afc414a882ca2", size = 345453 }, + { url = "https://files.pythonhosted.org/packages/63/09/d54befb48f9cd8eec43797f624ec37783a0266855f4930a91e3d5c7717f8/yarl-1.18.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:2ec9bbba33b2d00999af4631a3397d1fd78290c48e2a3e52d8dd72db3a067ac8", size = 341872 }, + { url = "https://files.pythonhosted.org/packages/91/26/fd0ef9bf29dd906a84b59f0cd1281e65b0c3e08c6aa94b57f7d11f593518/yarl-1.18.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:fbd6748e8ab9b41171bb95c6142faf068f5ef1511935a0aa07025438dd9a9bc1", size = 347497 }, + { url = "https://files.pythonhosted.org/packages/d9/b5/14ac7a256d0511b2ac168d50d4b7d744aea1c1aa20c79f620d1059aab8b2/yarl-1.18.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:877d209b6aebeb5b16c42cbb377f5f94d9e556626b1bfff66d7b0d115be88d0a", size = 359981 }, + { url = "https://files.pythonhosted.org/packages/ca/b3/d493221ad5cbd18bc07e642894030437e405e1413c4236dd5db6e46bcec9/yarl-1.18.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:b464c4ab4bfcb41e3bfd3f1c26600d038376c2de3297760dfe064d2cb7ea8e10", size = 366229 }, + { url = "https://files.pythonhosted.org/packages/04/56/6a3e2a5d9152c56c346df9b8fb8edd2c8888b1e03f96324d457e5cf06d34/yarl-1.18.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8d39d351e7faf01483cc7ff7c0213c412e38e5a340238826be7e0e4da450fdc8", size = 360383 }, + { url = "https://files.pythonhosted.org/packages/fd/b7/4b3c7c7913a278d445cc6284e59b2e62fa25e72758f888b7a7a39eb8423f/yarl-1.18.3-cp313-cp313-win32.whl", hash = "sha256:61ee62ead9b68b9123ec24bc866cbef297dd266175d53296e2db5e7f797f902d", size = 310152 }, + { url = "https://files.pythonhosted.org/packages/f5/d5/688db678e987c3e0fb17867970700b92603cadf36c56e5fb08f23e822a0c/yarl-1.18.3-cp313-cp313-win_amd64.whl", hash = "sha256:578e281c393af575879990861823ef19d66e2b1d0098414855dd367e234f5b3c", size = 315723 }, + { url = "https://files.pythonhosted.org/packages/f5/4b/a06e0ec3d155924f77835ed2d167ebd3b211a7b0853da1cf8d8414d784ef/yarl-1.18.3-py3-none-any.whl", hash = "sha256:b57f4f58099328dfb26c6a771d09fb20dbbae81d20cfb66141251ea063bd101b", size = 45109 }, +] + +[[package]] +name = "zarr" +version = "2.18.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asciitree" }, + { name = "fasteners", marker = "sys_platform != 'emscripten'" }, + { name = "numcodecs" }, + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/21/d1/764ca5b66d91b20dede66aedc6eb9ede3adbe5c61779e7378a7ecb010e87/zarr-2.18.4.tar.gz", hash = "sha256:37790ededd0683ae1abe6ff90aa16c22543b3436810060f53d72c15e910c24bb", size = 3603684 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b4/d1/c84022a44afc7b7ccc442fba3daee56bdd03593d91ee4bc245a08e4fcc55/zarr-2.18.4-py3-none-any.whl", hash = "sha256:2795e20aff91093ce7e4da36ab1a138aededbd8ab66bf01fd01512e61d31e5d1", size = 210600 }, +] + +[[package]] +name = "zict" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d1/ac/3c494dd7ec5122cff8252c1a209b282c0867af029f805ae9befd73ae37eb/zict-3.0.0.tar.gz", hash = "sha256:e321e263b6a97aafc0790c3cfb3c04656b7066e6738c37fffcca95d803c9fba5", size = 33238 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/80/ab/11a76c1e2126084fde2639514f24e6111b789b0bfa4fc6264a8975c7e1f1/zict-3.0.0-py2.py3-none-any.whl", hash = "sha256:5796e36bd0e0cc8cf0fbc1ace6a68912611c1dbd74750a3f3026b9b9d6a327ae", size = 43332 }, +] + +[[package]] +name = "zipp" +version = "3.21.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3f/50/bad581df71744867e9468ebd0bcd6505de3b275e06f202c2cb016e3ff56f/zipp-3.21.0.tar.gz", hash = "sha256:2c9958f6430a2040341a52eb608ed6dd93ef4392e02ffe219417c1b28b5dd1f4", size = 24545 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/1a/7e4798e9339adc931158c9d69ecc34f5e6791489d469f5e50ec15e35f458/zipp-3.21.0-py3-none-any.whl", hash = "sha256:ac1bbe05fd2991f160ebce24ffbac5f6d11d83dc90891255885223d42b3cd931", size = 9630 }, +] From 268c6d05cc42a5f212527138b690adef91530605 Mon Sep 17 00:00:00 2001 From: d33bs Date: Fri, 24 Jan 2025 08:29:55 -0700 Subject: [PATCH 03/20] update docs --- CONTRIBUTING.md | 3 + README.md | 14 +--- docs/src/code_of_conduct.md | 132 +++++++++++++++++++++++++++++++++++ docs/src/conf.py | 82 ++++++++++++++++++++++ docs/src/contributing.md | 133 ++++++++++++++++++++++++++++++++++++ docs/src/index.md | 18 +++++ docs/src/python-api.md | 30 ++++++++ pyproject.toml | 3 + uv.lock | 88 +++++++++++++++++++++++- 9 files changed, 490 insertions(+), 13 deletions(-) create mode 100644 CONTRIBUTING.md create mode 100644 docs/src/code_of_conduct.md create mode 100644 docs/src/conf.py create mode 100644 docs/src/contributing.md create mode 100644 docs/src/index.md create mode 100644 docs/src/python-api.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..7c278bc --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,3 @@ +# Contributing + +Please see our [contributing](https://WayScience.github.io/nViz/main/contributing) documentation for more details on contributions, development, and testing. diff --git a/README.md b/README.md index 24462dd..25f485f 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,4 @@ -# nVis - -[![Build Status](https://github.com/WayScience/nViz/actions/workflows/run-tests.yml/badge.svg?branch=main)](https://github.com/WayScience/nViz/actions/workflows/run-tests.yml?query=branch%3Amain) -![Coverage Status](https://raw.githubusercontent.com/WayScience/nViz/main/docs/src/_static/coverage-badge.svg) -[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) -[![uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://github.com/astral-sh/uv) - -[![Build Status](https://github.com/WayScience/nViz/actions/workflows/run-tests.yml/badge.svg?branch=main)](https://github.com/WayScience/nViz/actions/workflows/run-tests.yml?query=branch%3Amain) -![Coverage Status](https://raw.githubusercontent.com/WayScience/nViz/main/docs/src/_static/coverage-badge.svg) -[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) -[![uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://github.com/astral-sh/uv) +# nViz [![Build Status](https://github.com/WayScience/nViz/actions/workflows/run-tests.yml/badge.svg?branch=main)](https://github.com/WayScience/nViz/actions/workflows/run-tests.yml?query=branch%3Amain) ![Coverage Status](https://raw.githubusercontent.com/WayScience/nViz/main/docs/src/_static/coverage-badge.svg) @@ -20,7 +10,7 @@ We read the output with [Napari](https://napari.org/dev/index.html), which provi ## Installation -Install nViz from [PyPI](https://pypi.org/project/coSMicQC/) or from source: +Install nViz from [PyPI](https://pypi.org/project/nViz/) or from source: ```shell # install from pypi diff --git a/docs/src/code_of_conduct.md b/docs/src/code_of_conduct.md new file mode 100644 index 0000000..51bed04 --- /dev/null +++ b/docs/src/code_of_conduct.md @@ -0,0 +1,132 @@ +# Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socioeconomic status, +nationality, personal appearance, race, caste, color, religion, or sexual +identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +- Demonstrating empathy and kindness toward other people +- Being respectful of differing opinions, viewpoints, and experiences +- Giving and gracefully accepting constructive feedback +- Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +- Focusing on what is best not just for us as individuals, but for the overall + community + +Examples of unacceptable behavior include: + +- The use of sexualized language or imagery, and sexual attention or advances of + any kind +- Trolling, insulting or derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or email address, + without their explicit permission +- Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders 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, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official email address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to community leaders responsible for enforcement. +Please open a [new security advisory notice](https://github.com/WayScience/nviz/security/advisories/new) (using defaults or "n/a" where unable to fill in the form) to privately notify us of any incidents of this nature. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series of +actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or permanent +ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the +community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.1, available at +[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. + +Community Impact Guidelines were inspired by +[Mozilla's code of conduct enforcement ladder][mozilla coc]. + +For answers to common questions about this code of conduct, see the FAQ at +[https://www.contributor-covenant.org/faq][faq]. Translations are available at +[https://www.contributor-covenant.org/translations][translations]. + +[faq]: https://www.contributor-covenant.org/faq +[homepage]: https://www.contributor-covenant.org +[mozilla coc]: https://github.com/mozilla/diversity +[translations]: https://www.contributor-covenant.org/translations +[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html diff --git a/docs/src/conf.py b/docs/src/conf.py new file mode 100644 index 0000000..6afb7ae --- /dev/null +++ b/docs/src/conf.py @@ -0,0 +1,82 @@ +# Configuration file for the Sphinx documentation builder. +# +# This file only contains a selection of the most common options. For a full +# list see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +import pathlib +import sys + +basedir = str(pathlib.Path(__file__).parent.parent.parent.resolve()) + +sys.path.insert(0, basedir) + +# -- Project information ----------------------------------------------------- + +project = "nViz" +# is used here due to sphinx decision-making: https://github.com/sphinx-doc/sphinx/issues/8132 +copyright = "2024, WayScience Community" # noqa: A001 +author = "WayScience Community" + +# -- General configuration --------------------------------------------------- + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + "myst_parser", + "sphinx.ext.autodoc", + "sphinx.ext.napoleon", + "sphinx.ext.viewcode", + "pydata_sphinx_theme", +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ["_templates"] + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = [] # type: ignore + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +html_theme = "pydata_sphinx_theme" + +html_theme_options = { + "header_links_before_dropdown": 5, + "icon_links": [ + { + "name": "GitHub", + "url": "https://github.com/WayScience/nViz", + "icon": "fa-brands fa-github", + }, + ], + "logo": {"text": "nViz"}, + "use_edit_page_button": False, + "show_toc_level": 1, + "navbar_align": "left", + "navbar_center": ["navbar-nav"], + "footer_start": ["copyright"], + "footer_center": ["sphinx-version"], + "secondary_sidebar_items": { + "**/*": ["page-toc", "edit-this-page", "sourcelink"], + }, +} + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ["_static"] +html_css_files = ["custom.css"] + +# set option to avoid rendering default variables +autodoc_preserve_defaults = True diff --git a/docs/src/contributing.md b/docs/src/contributing.md new file mode 100644 index 0000000..38f9595 --- /dev/null +++ b/docs/src/contributing.md @@ -0,0 +1,133 @@ +# Contributing + +First of all, thank you so much for contributing! 🎉 💯 + +This document contains guidelines on how to most effectively contribute within this repository. + +If you are stuck, please feel free to ask any questions or ask for help. + +## Code of conduct + +This project is governed by our [code of conduct](code_of_conduct.md). By participating, you are expected to uphold this code. +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to community leaders responsible for enforcement. +Please open a [new security advisory notice](https://github.com/WayScience/nviz/security/advisories/new) (using defaults or "n/a" where unable to fill in the form) to privately notify us of any incidents of this nature. + +## Development + +This project leverages development environments managed by [uv](https://docs.astral.sh/uv/). +We use [pytest](https://docs.pytest.org/) for testing and [GitHub actions](https://docs.github.com/en/actions) for automated tests. + +### Development setup + +Perform the following steps to setup a Python development environment. + +1. [Install Python](https://www.python.org/downloads/) (we recommend using [`pyenv`](https://github.com/pyenv/pyenv) or similar) +1. [Install uv](https://docs.astral.sh/uv/getting-started/installation/) + +### Linting + +Work added to this project is automatically checked using [pre-commit](https://pre-commit.com/) via [GitHub Actions](https://docs.github.com/en/actions). +Pre-commit can work alongside your local [git with git-hooks](https://pre-commit.com/index.html#3-install-the-git-hook-scripts) + +After [installing pre-commit](https://pre-commit.com/#installation) within your development environment, the following command also can perform the same checks within your local development environment: + +```sh +% pre-commit run --all-files +``` + +We use these same checks within our automated tests which are managed by [GitHub Actions workflows](https://docs.github.com/en/actions/using-workflows). +These automated tests generally must pass in order to merge work into this repository. + +### Testing + +Work added to this project is automatically tested using [pytest](https://docs.pytest.org/) via [GitHub Actions](https://docs.github.com/en/actions). +Pytest is installed through the uv environment for this project. +We recommend testing your work before opening pull requests with proposed changes. + +You can run pytest on your work using the following example: + +```sh +% uv run pytest +``` + +## Making changes to this repository + +We welcome anyone to use [GitHub issues](https://docs.github.com/en/issues/tracking-your-work-with-issues/about-issues) (requires a GitHub login) or create [pull requests](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests) (to directly make changes within this repository) to modify content found within this repository. + +Specifically, there are several ways to suggest or make changes to this repository: + +1. Open a GitHub issue: https://github.com/WayScience/nviz/issues +1. Create a pull request from a forked branch of the repository + +### Creating a pull request + +### Pull requests + +After you’ve decided to contribute code and have written it up, please file a pull request. +We specifically follow a [forked pull request model](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request-from-a-fork). +Please create a fork of this repository, clone the fork, and then create a new, feature-specific branch. +Once you make the necessary changes on this branch, you should file a pull request to incorporate your changes into this (fork upstream) repository. + +The content and description of your pull request are directly related to the speed at which we are able to review, approve, and merge your contribution. +To ensure an efficient review process please perform the following steps: + +1. Follow all instructions in the [pull request template](https://github.com/WayScience/nviz/blob/main/.github/PULL_REQUEST_TEMPLATE.md) +1. Triple check that your pull request is adding _one_ specific feature or additional group of content. + Small, bite-sized pull requests move so much faster than large pull requests. +1. After submitting your pull request, ensure that your contribution passes all status checks (e.g. passes all tests) + +Pull request review and approval is required by at least one project maintainer to merge. +We will do our best to review the code addition in a timely fashion. +Ensuring that you follow all steps above will increase our speed and ability to review. +We will check for accuracy, style, code coverage, and scope. + +## Versioning + +We use [`poetry-dynamic-versioning`](https://github.com/mtkennerly/poetry-dynamic-versioning) to help version this software through [`PEP 440`](https://peps.python.org/pep-0440/) standards. +Configuration for versioning is found within the `pyproject.toml` file. +All builds for packages include dynamic version data to help label distinct versions of the software. +`poetry-dynamic-versioning` uses `git` tags to help distinguish version data. +We also use the `__init__.py` file as a place to persist the version data for occaissions where the `git` history is unavailable or unwanted. + +The following command is used to add `poetry-dynamic-versioning` to Poetry for use with this project: `poetry self add "poetry-dynamic-versioning[plugin]"`. +Versioning for the project is intended to align with GitHub Releases which provide `git` tag capabilities. + +### Releases + +We publish source code by using [GitHub Releases](https://docs.github.com/en/repositories/releasing-projects-on-github/about-releases) available [here](https://github.com/wayscience/nviz/releases). +We publish a related Python package through the [Python Packaging Index (PyPI)](https://pypi.org/) available [here](https://pypi.org/project/nviz/). + +#### Release Publishing Process + +Several manual and automated steps are involved with publishing nviz releases. +See below for an overview of how this works. + +Notes about [semantic version](https://en.wikipedia.org/wiki/Software_versioning#Semantic_versioning) (semver) specifications: +nviz version specifications are controlled through [`poetry-dynamic-versioning`](https://github.com/mtkennerly/poetry-dynamic-versioning) which leverages [`dunamai`](https://github.com/mtkennerly/dunamai) to create version data based on [git tags](https://git-scm.com/book/en/v2/Git-Basics-Tagging) and commits. +nviz release git tags are automatically applied through [GitHub Releases](https://docs.github.com/en/repositories/releasing-projects-on-github/about-releases) and related inferred changes from [`release-drafter`](https://github.com/release-drafter/release-drafter). + +1. Open a pull request and use a repository label for `release-` to label the pull request for visibility with [`release-drafter`](https://github.com/release-drafter/release-drafter) (for example, see [nviz#24](https://github.com/wayscience/nviz/pull/24) as a reference of a semver patch update). +1. On merging the pull request for the release, a [GitHub Actions workflow](https://docs.github.com/en/actions/using-workflows) defined in `draft-release.yml` leveraging [`release-drafter`](https://github.com/release-drafter/release-drafter) will draft a release for maintainers. +1. The draft GitHub release will include a version tag based on the GitHub PR label applied and `release-drafter`. +1. Make modifications as necessary to the draft GitHub release, then publish the release (the draft release does not normally need additional modifications). +1. On publishing the release, another GitHub Actions workflow defined in `publish-pypi.yml` will run to build and deploy the Python package to PyPI (utilizing the earlier modified `pyproject.toml` semantic version reference for labeling the release). + +## Documentation + +Documentation for this project is published using [Sphinx](https://www.sphinx-doc.org) with markdown and Jupyter notebook file compatibility provided by [myst-parser](https://myst-parser.readthedocs.io/en/latest/) and [myst-nb](https://myst-nb.readthedocs.io/en/latest/) to create a "documentation website" (also known as "docsite"). +The docsite is hosted through [GitHub Pages](https://pages.github.com/) and deployed through automated [GitHub Actions](https://docs.github.com/en/actions) jobs which trigger on pushes to the main branch or the publishing of a new release on GitHub. +Documentation is versioned as outlined earlier sections covering versioning details to help ensure users are able to understand each release independently of one another. + +It can sometimes be useful to test documentation builds locally before proposing changes within a pull request. +See below for some examples of how to build documentation locally. + +```shell +# build single-version sphinx documentation +# (useful for troubleshooting potential issues) +poetry run sphinx-build docs/src docs/build + +# build multi-version sphinx documentation +# (used in production) +poetry run sphinx-multiversion docs/src docs/build +``` diff --git a/docs/src/index.md b/docs/src/index.md new file mode 100644 index 0000000..a73d3d1 --- /dev/null +++ b/docs/src/index.md @@ -0,0 +1,18 @@ + + +```{include} ../../README.md +--- +relative-docs: docs/src/ +relative-images: +--- +``` + +```{toctree} +--- +caption: 'Contents:' +maxdepth: 3 +--- +python-api +contributing +code_of_conduct +``` diff --git a/docs/src/python-api.md b/docs/src/python-api.md new file mode 100644 index 0000000..88d4f53 --- /dev/null +++ b/docs/src/python-api.md @@ -0,0 +1,30 @@ +# Python API + +```{eval-rst} +nviz.image +------------------- + +.. automodule:: src.nviz.image + :members: + :private-members: + :undoc-members: + :show-inheritance: + +nviz.meta +------------------- + +.. automodule:: src.nviz.meta + :members: + :private-members: + :undoc-members: + :show-inheritance: + +nviz.view +------------------- + +.. automodule:: src.nviz.view + :members: + :private-members: + :undoc-members: + :show-inheritance: +``` diff --git a/pyproject.toml b/pyproject.toml index 7b4b105..4632df6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,9 +28,12 @@ dependencies = [ # dependency groups for uv dev = [ "coverage>=7.6.10", + "myst-parser>=4.0.0", "pre-commit>=4.0.1", + "pydata-sphinx-theme>=0.16.1", "pytest>=8.3.4", "setuptools-scm>=8.1", + "sphinx>=8.1.3", ] [tool.setuptools_scm] diff --git a/uv.lock b/uv.lock index d805ada..8f064de 100644 --- a/uv.lock +++ b/uv.lock @@ -9,6 +9,18 @@ resolution-markers = [ "python_full_version == '3.12.*' and sys_platform == 'win32'", ] +[[package]] +name = "accessible-pygments" +version = "0.0.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bc/c1/bbac6a50d02774f91572938964c582fff4270eee73ab822a4aeea4d8b11b/accessible_pygments-0.0.5.tar.gz", hash = "sha256:40918d3e6a2b619ad424cb91e556bd3bd8865443d9f22f1dcdf79e33c8046872", size = 1377899 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8d/3f/95338030883d8c8b91223b4e21744b04d11b161a3ef117295d8241f50ab4/accessible_pygments-0.0.5-py3-none-any.whl", hash = "sha256:88ae3211e68a1d0b011504b2ffc1691feafce124b845bd072ab6f9f66f34d4b7", size = 1395903 }, +] + [[package]] name = "aiohappyeyeballs" version = "2.4.4" @@ -177,6 +189,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ed/20/bc79bc575ba2e2a7f70e8a1155618bb1301eaa5132a8271373a6903f73f8/babel-2.16.0-py3-none-any.whl", hash = "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b", size = 9587599 }, ] +[[package]] +name = "beautifulsoup4" +version = "4.12.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "soupsieve" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b3/ca/824b1195773ce6166d388573fc106ce56d4a805bd7427b624e063596ec58/beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051", size = 581181 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b1/fe/e8c672695b37eecc5cbf43e1d0638d88d66ba3a44c4d321c796f4e59167f/beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed", size = 147925 }, +] + [[package]] name = "botocore" version = "1.36.2" @@ -1070,6 +1094,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899 }, ] +[[package]] +name = "mdit-py-plugins" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/03/a2ecab526543b152300717cf232bb4bb8605b6edb946c845016fa9c9c9fd/mdit_py_plugins-0.4.2.tar.gz", hash = "sha256:5f2cd1fdb606ddf152d37ec30e46101a60512bc0e5fa1a7002c36647b09e26b5", size = 43542 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/f7/7782a043553ee469c1ff49cfa1cdace2d6bf99a1f333cf38676b3ddf30da/mdit_py_plugins-0.4.2-py3-none-any.whl", hash = "sha256:0c673c3f889399a33b95e88d2f0d111b4447bdfea7f237dab2d488f459835636", size = 55316 }, +] + [[package]] name = "mdurl" version = "0.1.2" @@ -1174,6 +1210,23 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/99/b7/b9e70fde2c0f0c9af4cc5277782a89b66d35948ea3369ec9f598358c3ac5/multidict-6.1.0-py3-none-any.whl", hash = "sha256:48e171e52d1c4d33888e529b999e5900356b9ae588c2f09a52dcefb158b27506", size = 10051 }, ] +[[package]] +name = "myst-parser" +version = "4.0.0" +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/85/55/6d1741a1780e5e65038b74bce6689da15f620261c490c3511eb4c12bac4b/myst_parser-4.0.0.tar.gz", hash = "sha256:851c9dfb44e36e56d15d05e72f02b80da21a9e0d07cba96baf5e2d476bb91531", size = 93858 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ca/b4/b036f8fdb667587bb37df29dc6644681dd78b7a2a6321a34684b79412b28/myst_parser-4.0.0-py3-none-any.whl", hash = "sha256:b9317997552424448c6096c2558872fdb6f81d3ecb3a40ce84a7518798f3f28d", size = 84563 }, +] + [[package]] name = "napari" version = "0.5.5" @@ -1431,7 +1484,7 @@ wheels = [ [[package]] name = "nviz" -version = "0.1.dev2+g065b289.d20250124" +version = "0.1.dev4+ge92d9b8.d20250124" source = { editable = "." } dependencies = [ { name = "napari", extra = ["all"] }, @@ -1446,9 +1499,12 @@ dependencies = [ [package.dev-dependencies] dev = [ { name = "coverage" }, + { name = "myst-parser" }, { name = "pre-commit" }, + { name = "pydata-sphinx-theme" }, { name = "pytest" }, { name = "setuptools-scm" }, + { name = "sphinx" }, ] [package.metadata] @@ -1465,9 +1521,12 @@ requires-dist = [ [package.metadata.requires-dev] dev = [ { name = "coverage", specifier = ">=7.6.10" }, + { name = "myst-parser", specifier = ">=4.0.0" }, { name = "pre-commit", specifier = ">=4.0.1" }, + { name = "pydata-sphinx-theme", specifier = ">=0.16.1" }, { name = "pytest", specifier = ">=8.3.4" }, { name = "setuptools-scm", specifier = ">=8.1" }, + { name = "sphinx", specifier = ">=8.1.3" }, ] [[package]] @@ -1914,6 +1973,24 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/51/b2/b2b50d5ecf21acf870190ae5d093602d95f66c9c31f9d5de6062eb329ad1/pydantic_core-2.27.2-cp313-cp313-win_arm64.whl", hash = "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b", size = 1885186 }, ] +[[package]] +name = "pydata-sphinx-theme" +version = "0.16.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "accessible-pygments" }, + { name = "babel" }, + { name = "beautifulsoup4" }, + { name = "docutils" }, + { name = "pygments" }, + { name = "sphinx" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/00/20/bb50f9de3a6de69e6abd6b087b52fa2418a0418b19597601605f855ad044/pydata_sphinx_theme-0.16.1.tar.gz", hash = "sha256:a08b7f0b7f70387219dc659bff0893a7554d5eb39b59d3b8ef37b8401b7642d7", size = 2412693 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e2/0d/8ba33fa83a7dcde13eb3c1c2a0c1cc29950a048bfed6d9b0d8b6bd710b4c/pydata_sphinx_theme-0.16.1-py3-none-any.whl", hash = "sha256:225331e8ac4b32682c18fcac5a57a6f717c4e632cea5dd0e247b55155faeccde", size = 6723264 }, +] + [[package]] name = "pygments" version = "2.18.0" @@ -2406,6 +2483,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0", size = 29575 }, ] +[[package]] +name = "soupsieve" +version = "2.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/ce/fbaeed4f9fb8b2daa961f90591662df6a86c1abf25c548329a86920aedfb/soupsieve-2.6.tar.gz", hash = "sha256:e2e68417777af359ec65daac1057404a3c8a5455bb8abc36f1a9866ab1a51abb", size = 101569 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/c2/fe97d779f3ef3b15f05c94a2f1e3d21732574ed441687474db9d342a7315/soupsieve-2.6-py3-none-any.whl", hash = "sha256:e72c4ff06e4fb6e4b5a9f0f55fe6e81514581fca1515028625d0f299c602ccc9", size = 36186 }, +] + [[package]] name = "sphinx" version = "8.1.3" From 036a29d067ca6e5aa1575794add10fabb665753d Mon Sep 17 00:00:00 2001 From: d33bs Date: Fri, 24 Jan 2025 08:30:05 -0700 Subject: [PATCH 04/20] update workflows for uv --- .github/ISSUE_TEMPLATE/issue.yml | 4 ++-- .github/PULL_REQUEST_TEMPLATE.md | 2 +- .github/dependabot.yml | 6 ++++-- .github/workflows/publish-docs.yml | 18 +++--------------- .github/workflows/publish-pypi.yml | 12 ++++-------- 5 files changed, 14 insertions(+), 28 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/issue.yml b/.github/ISSUE_TEMPLATE/issue.yml index fc71fc7..1b9876f 100644 --- a/.github/ISSUE_TEMPLATE/issue.yml +++ b/.github/ISSUE_TEMPLATE/issue.yml @@ -10,14 +10,14 @@ body: label: Is this a duplicate of an existing idea for this project? description: > Please make sure to search in the - [issues](https://github.com/WayScience/coSMicQC/issues) first + [issues](https://github.com/WayScience/nViz/issues) first to see whether the same issue was reported already. If you find an existing issue, please don't hesitate to comment on it or add a reaction to existing content! options: - label: > I found no existing - [issues](https://github.com/WayScience/coSMicQC/issues) + [issues](https://github.com/WayScience/nViz/issues) covering this topic. required: true diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 4c6f315..d8f6cfa 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -4,7 +4,7 @@ _referenced with modifications from [pycytominer](https://github.com/cytomining/ # Description 0@+!<%_$7UbUbtB0Obh%%>q#j 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 literal 0 HcmV?d00001 diff --git a/tests/data/random_tiff_z_stacks/Z99/Z99_111_ZS008.tif b/tests/data/random_tiff_z_stacks/Z99/Z99_111_ZS008.tif new file mode 100644 index 0000000000000000000000000000000000000000..fc0f61941af0efb1d3c4d68f487f552dd0a66b71 GIT binary patch literal 20256 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

!BC}AT-`4=VjQSQ!~o$) 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 literal 0 HcmV?d00001 diff --git a/tests/data/random_tiff_z_stacks/Z99/Z99_222_ZS000.tif b/tests/data/random_tiff_z_stacks/Z99/Z99_222_ZS000.tif new file mode 100644 index 0000000000000000000000000000000000000000..317274ac7bebebdd4cdca5c9e926c76e7cbad2b8 GIT binary patch literal 20256 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 i1Nh4IGjMB)xUsvat2$tl@b~s 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 literal 0 HcmV?d00001 diff --git a/tests/data/random_tiff_z_stacks/Z99/Z99_222_ZS002.tif b/tests/data/random_tiff_z_stacks/Z99/Z99_222_ZS002.tif new file mode 100644 index 0000000000000000000000000000000000000000..8708a9d97309fedcc02143f2e80ba27e99f7cde8 GIT binary patch literal 20256 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 literal 0 HcmV?d00001 diff --git a/tests/data/random_tiff_z_stacks/Z99/Z99_222_ZS003.tif b/tests/data/random_tiff_z_stacks/Z99/Z99_222_ZS003.tif new file mode 100644 index 0000000000000000000000000000000000000000..ff7be30de5cef5da6a2d64c1e875d33b1ba4cd17 GIT binary patch literal 20256 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 literal 0 HcmV?d00001 diff --git a/tests/data/random_tiff_z_stacks/Z99/Z99_222_ZS004.tif b/tests/data/random_tiff_z_stacks/Z99/Z99_222_ZS004.tif new file mode 100644 index 0000000000000000000000000000000000000000..ee47787437bf8d310843d7a0d5cb29f1fca0d4b1 GIT binary patch literal 20256 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 aL0OBXU*AX-ovO>QbuD*R#RX~r6*f2e8XR^2 literal 0 HcmV?d00001 diff --git a/tests/data/random_tiff_z_stacks/Z99/Z99_222_ZS005.tif b/tests/data/random_tiff_z_stacks/Z99/Z99_222_ZS005.tif new file mode 100644 index 0000000000000000000000000000000000000000..4f0da8bce948c9e1d408996f61d14b9e038779ca GIT binary patch literal 20256 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